diff options
author | Tom Rini <trini@konsulko.com> | 2023-09-24 17:15:15 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2023-09-24 17:15:15 -0400 |
commit | 729b0104bb9f658eb4212a1b880873eb781874de (patch) | |
tree | 97e9fe98dfc5b00ef2211fa1c1c65a7022612798 /tools/proftool.c | |
parent | 4cb31a9f3560b293670de95e76c1f3cf2f9e1ca8 (diff) | |
parent | e278ad9a2ea5e4a089773a8fd79a5ea0e8572316 (diff) |
Merge tag 'dm-pull-23sep23' of https://source.denx.de/u-boot/custodians/u-boot-dm
trace: correct format of flyrecord
minor bug fixes
Diffstat (limited to 'tools/proftool.c')
-rw-r--r-- | tools/proftool.c | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/tools/proftool.c b/tools/proftool.c index 101bcb63334..fca45e4a5af 100644 --- a/tools/proftool.c +++ b/tools/proftool.c @@ -1493,14 +1493,43 @@ static int write_pages(struct twriter *tw, enum out_format_t out_format, static int write_flyrecord(struct twriter *tw, enum out_format_t out_format, int *missing_countp, int *skip_countp) { - int start, ret, len; + unsigned long long start, start_ofs, len; + int ret; FILE *fout = tw->fout; char str[200]; + /* Record start pointer */ + start_ofs = tw->ptr; + debug("Start of flyrecord header at: 0x%llx\n", start_ofs); + tw->ptr += fprintf(fout, "flyrecord%c", 0); + /* flyrecord\0 - allocated 10 bytes */ + start_ofs += 10; + + /* + * 8 bytes that are a 64-bit word containing the offset into the file + * that holds the data for the CPU. + * + * 8 bytes that are a 64-bit word containing the size of the CPU + * data at that offset. + */ + start_ofs += 16; + + snprintf(str, sizeof(str), + "[local] global counter uptime perf mono mono_raw boot x86-tsc\n"); + len = strlen(str); + + /* trace clock length - 8 bytes */ + start_ofs += 8; + /* trace clock data */ + start_ofs += len; + + debug("Calculated flyrecord header end at: 0x%llx, trace clock len: 0x%llx\n", + start_ofs, len); + /* trace data */ - start = ALIGN(tw->ptr + 16, TRACE_PAGE_SIZE); + start = ALIGN(start_ofs, TRACE_PAGE_SIZE); tw->ptr += tputq(fout, start); /* use a placeholder for the size */ @@ -1509,12 +1538,12 @@ static int write_flyrecord(struct twriter *tw, enum out_format_t out_format, return -1; tw->ptr += ret; - snprintf(str, sizeof(str), - "[local] global counter uptime perf mono mono_raw boot x86-tsc\n"); - len = strlen(str); tw->ptr += tputq(fout, len); tw->ptr += tputs(fout, str); + debug("End of flyrecord header at: 0x%x, offset: 0x%llx\n", + tw->ptr, start); + debug("trace text base %lx, map file %lx\n", text_base, text_offset); ret = write_pages(tw, out_format, missing_countp, skip_countp); |