@@ -744,6 +744,46 @@ static void dump_option_section(int fd, unsigned int size,
do_print(OPTIONS, "\t\t[Option %s, %d bytes] @ %lld\n", desc, size, sec->offset);
}
+static void dump_sections(int fd)
+{
+ struct file_section *sec = sections;
+ unsigned short flags;
+
+ while (sec) {
+ if (lseek64(fd, sec->offset, SEEK_SET) == (off_t)-1)
+ die("cannot goto option offset %lld", sec->offset);
+
+ dump_section_header(fd, sec->verbosity, &flags);
+
+ if ((flags & TRACECMD_SEC_FL_COMPRESS) && uncompress_block())
+ die("cannot uncompress section block");
+
+ switch (sec->id) {
+ case TRACECMD_OPTION_HEADER_INFO:
+ dump_header_page(fd);
+ dump_header_event(fd);
+ break;
+ case TRACECMD_OPTION_FTRACE_EVENTS:
+ dump_ftrace_events_format(fd);
+ break;
+ case TRACECMD_OPTION_EVENT_FORMATS:
+ dump_events_format(fd);
+ break;
+ case TRACECMD_OPTION_KALLSYMS:
+ dump_kallsyms(fd);
+ break;
+ case TRACECMD_OPTION_PRINTK:
+ dump_printk(fd);
+ break;
+ case TRACECMD_OPTION_CMDLINES:
+ dump_cmdlines(fd);
+ break;
+ }
+ uncompress_reset();
+ sec = sec->next;
+ }
+}
+
static int dump_options_read(int fd);
static int dump_option_done(int fd, int size)
@@ -1037,6 +1077,7 @@ static void dump_v7_file(int fd)
if (lseek64(fd, offset, SEEK_SET) == (off64_t)-1)
die("cannot goto options offset %lld", offset);
dump_options(fd);
+ dump_sections(fd);
}
static void free_sections(void)
In trace file version 7, dump the content of the headers content, that are stored as sections. Added logic to dump these headers: HEADER_INFO FTRACE_EVENTS EVENT_FORMATS KALLSYM PRINTK CMDLINES Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> --- tracecmd/trace-dump.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+)