Comma separated list of fields to print. Options are:
         comm, tid, pid, time, cpu, event, trace, ip, sym, dso, addr, symoff,
         srcline, period, iregs, brstack, brstacksym, flags, bpf-output, brstackinsn, brstackoff,
-        callindent, insn, insnlen. Field list can be prepended with the type, trace, sw or hw,
+        callindent, insn, insnlen, synth.
+        Field list can be prepended with the type, trace, sw or hw,
         to indicate to which event type the field list applies.
         e.g., -F sw:comm,tid,time,ip,sym  and -F trace:time,cpu,trace
 
        instruction bytes and the instruction length of the current
        instruction.
 
+       The synth field is used by synthesized events which may be created when
+       Instruction Trace decoding.
+
        Finally, a user may not set fields to none for all event types.
        i.e., -F "" is not allowed.
 
 
        PERF_OUTPUT_INSNLEN         = 1U << 22,
        PERF_OUTPUT_BRSTACKINSN     = 1U << 23,
        PERF_OUTPUT_BRSTACKOFF      = 1U << 24,
+       PERF_OUTPUT_SYNTH           = 1U << 25,
 };
 
 struct output_option {
        {.str = "insnlen", .field = PERF_OUTPUT_INSNLEN},
        {.str = "brstackinsn", .field = PERF_OUTPUT_BRSTACKINSN},
        {.str = "brstackoff", .field = PERF_OUTPUT_BRSTACKOFF},
+       {.str = "synth", .field = PERF_OUTPUT_SYNTH},
 };
 
 enum {
                .fields = PERF_OUTPUT_COMM | PERF_OUTPUT_TID |
                              PERF_OUTPUT_CPU | PERF_OUTPUT_TIME |
                              PERF_OUTPUT_EVNAME | PERF_OUTPUT_IP |
-                             PERF_OUTPUT_SYM | PERF_OUTPUT_DSO,
+                             PERF_OUTPUT_SYM | PERF_OUTPUT_DSO |
+                             PERF_OUTPUT_SYNTH,
 
                .invalid_fields = PERF_OUTPUT_TRACE | PERF_OUTPUT_BPF_OUTPUT,
        },
                       (char *)(sample->raw_data));
 }
 
+static void print_sample_synth(struct perf_sample *sample __maybe_unused,
+                              struct perf_evsel *evsel)
+{
+       switch (evsel->attr.config) {
+       default:
+               break;
+       }
+}
+
 struct perf_script {
        struct perf_tool        tool;
        struct perf_session     *session;
        if (PRINT_FIELD(TRACE))
                event_format__print(evsel->tp_format, sample->cpu,
                                    sample->raw_data, sample->raw_size);
+
+       if (attr->type == PERF_TYPE_SYNTH && PRINT_FIELD(SYNTH))
+               print_sample_synth(sample, evsel);
+
        if (PRINT_FIELD(ADDR))
                print_sample_addr(sample, thread, attr);
 
                     "Valid types: hw,sw,trace,raw,synth. "
                     "Fields: comm,tid,pid,time,cpu,event,trace,ip,sym,dso,"
                     "addr,symoff,period,iregs,brstack,brstacksym,flags,"
-                    "bpf-output,callindent,insn,insnlen,brstackinsn",
+                    "bpf-output,callindent,insn,insnlen,brstackinsn,synth",
                     parse_output_fields),
        OPT_BOOLEAN('a', "all-cpus", &system_wide,
                    "system-wide collection from all CPUs"),