summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2023-01-16 00:15:46 +0300
committerTom Rini <trini@konsulko.com>2023-02-11 20:22:35 +0300
commitd9044e5363bb0b32a7aff00adf47c227f78f0f32 (patch)
tree2eb15e4b7de4bb64bd2f309c8bb8e49214c8592b /lib
parent90ad4e28e8d299395922364409c37bd7afc293e4 (diff)
downloadu-boot-d9044e5363bb0b32a7aff00adf47c227f78f0f32.tar.xz
trace: Update the file header
It seems better to put the TEXT_BASE value in the file header rather than in an entry record. While it is true that there is a separate base for pre-relocation, this can be handled by using offsets in the file. It is useful to have a version number in case we need to change the trace format again. Update the header to make these changes. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/trace.c19
1 files changed, 4 insertions, 15 deletions
diff --git a/lib/trace.c b/lib/trace.c
index b9dc6d2e4b..2e2c1bed54 100644
--- a/lib/trace.c
+++ b/lib/trace.c
@@ -118,18 +118,6 @@ static void notrace add_ftrace(void *func_ptr, void *caller, ulong flags)
hdr->ftrace_count++;
}
-static void notrace add_textbase(void)
-{
- if (hdr->ftrace_count < hdr->ftrace_size) {
- struct trace_call *rec = &hdr->ftrace[hdr->ftrace_count];
-
- rec->func = CONFIG_TEXT_BASE;
- rec->caller = 0;
- rec->flags = FUNCF_TEXTBASE;
- }
- hdr->ftrace_count++;
-}
-
/**
* __cyg_profile_func_enter() - record function entry
*
@@ -278,8 +266,11 @@ int trace_list_calls(void *buff, size_t buff_size, size_t *needed)
/* Update the header */
if (output_hdr) {
+ memset(output_hdr, '\0', sizeof(*output_hdr));
output_hdr->rec_count = upto;
output_hdr->type = TRACE_CHUNK_CALLS;
+ output_hdr->version = TRACE_VERSION;
+ output_hdr->text_base = CONFIG_TEXT_BASE;
}
/* Work out how must of the buffer we used */
@@ -385,10 +376,9 @@ int notrace trace_init(void *buff, size_t buff_size)
/* Use any remaining space for the timed function trace */
hdr->ftrace = (struct trace_call *)(buff + needed);
hdr->ftrace_size = (buff_size - needed) / sizeof(*hdr->ftrace);
- add_textbase();
+ hdr->depth_limit = CONFIG_TRACE_CALL_DEPTH_LIMIT;
puts("trace: enabled\n");
- hdr->depth_limit = CONFIG_TRACE_CALL_DEPTH_LIMIT;
trace_enabled = 1;
trace_inited = 1;
@@ -426,7 +416,6 @@ int notrace trace_early_init(void)
/* Use any remaining space for the timed function trace */
hdr->ftrace = (struct trace_call *)((char *)hdr + needed);
hdr->ftrace_size = (buff_size - needed) / sizeof(*hdr->ftrace);
- add_textbase();
hdr->depth_limit = CONFIG_TRACE_EARLY_CALL_DEPTH_LIMIT;
printf("trace: early enable at %08x\n", CONFIG_TRACE_EARLY_ADDR);