@@ -727,6 +727,25 @@ void dump_option_tsc2nsec(int fd, int size)
do_print(OPTIONS, "%d %d %llu [multiplier, shift, offset]\n", mult, shift, offset);
}
+static void dump_option_section(int fd, unsigned int size,
+ unsigned short id, char *desc, enum dump_items v)
+{
+ struct file_section *sec;
+
+ sec = calloc(1, sizeof(struct file_section));
+ if (!sec)
+ die("cannot allocate new section");
+
+ sec->next = sections;
+ sections = sec;
+ sec->id = id;
+ sec->verbosity = v;
+ if (read_file_number(fd, &sec->offset, 8))
+ die("cannot read the option %d offset", id);
+
+ do_print(OPTIONS, "\t\t[Option %s, %d bytes] @ %lld\n", desc, size, sec->offset);
+}
+
static int dump_options_read(int fd);
static int dump_option_done(int fd, int size)
@@ -821,6 +840,25 @@ static int dump_options_read(int fd)
case TRACECMD_OPTION_TSC2NSEC:
dump_option_tsc2nsec(fd, size);
break;
+ case TRACECMD_OPTION_HEADER_INFO:
+ dump_option_section(fd, size, option, "HEADERS", HEAD_PAGE | HEAD_EVENT);
+ break;
+ case TRACECMD_OPTION_FTRACE_EVENTS:
+ dump_option_section(fd, size, option, "FTRACE EVENTS", FTRACE_FORMAT);
+ break;
+ case TRACECMD_OPTION_EVENT_FORMATS:
+ dump_option_section(fd, size, option,
+ "EVENT FORMATS", EVENT_SYSTEMS | EVENT_FORMAT);
+ break;
+ case TRACECMD_OPTION_KALLSYMS:
+ dump_option_section(fd, size, option, "KALLSYMS", KALLSYMS);
+ break;
+ case TRACECMD_OPTION_PRINTK:
+ dump_option_section(fd, size, option, "PRINTK", TRACE_PRINTK);
+ break;
+ case TRACECMD_OPTION_CMDLINES:
+ dump_option_section(fd, size, option, "CMDLINES", CMDLINES);
+ break;
case TRACECMD_OPTION_DONE:
uncompress_reset();
count += dump_option_done(fd, size);
In trace file version 7, headers are stored as sections. This allows their position in the file not to be fixed. Pointers to these sections are stored as trace options. Add logic to handle these new options: HEADER_INFO FTRACE_EVENTS EVENT_FORMATS KALLSYM PRINTK CMDLINES Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> --- tracecmd/trace-dump.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+)