]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
initcall: Correct use of relocation offset
authorSimon Glass <sjg@chromium.org>
Sun, 23 Jun 2024 20:30:22 +0000 (14:30 -0600)
committerTom Rini <trini@konsulko.com>
Thu, 4 Jul 2024 15:25:20 +0000 (09:25 -0600)
The relocation offset can change in some initcall sequences. Handle
this and make sure it is used for all debugging statements in
init_run_list()

Update the trace test to match.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
lib/initcall.c
test/py/tests/test_trace.py

index c8e2b0f6a386529b9f3e97ce9f08e505efca0fc1..2686b9aed5cd55ef876b277f4dc8424bb6ea0c1c 100644 (file)
@@ -49,13 +49,14 @@ static int initcall_is_event(init_fnc_t func)
  */
 int initcall_run_list(const init_fnc_t init_sequence[])
 {
-       ulong reloc_ofs = calc_reloc_ofs();
+       ulong reloc_ofs;
        const init_fnc_t *ptr;
        enum event_t type;
        init_fnc_t func;
        int ret = 0;
 
        for (ptr = init_sequence; func = *ptr, func; ptr++) {
+               reloc_ofs = calc_reloc_ofs();
                type = initcall_is_event(func);
 
                if (type) {
@@ -84,7 +85,8 @@ int initcall_run_list(const init_fnc_t init_sequence[])
                                sprintf(buf, "event %d/%s", type,
                                        event_type_name(type));
                        } else {
-                               sprintf(buf, "call %p", func);
+                               sprintf(buf, "call %p",
+                                       (char *)func - reloc_ofs);
                        }
 
                        printf("initcall failed at %s (err=%dE)\n", buf, ret);
index f41d4cf71f0b2b683fa62e98d8d2b5371befee8a..ec1e624722ce9e646f15fbff41e0437ee0104ade 100644 (file)
@@ -175,7 +175,7 @@ def check_funcgraph(cons, fname, proftool, map_fname, trace_dat):
     # Then look for this:
     #  u-boot-1     0.....   282.101375: funcgraph_exit:         0.006 us   |      }
     # Then check for this:
-    #  u-boot-1     0.....   282.101375: funcgraph_entry:        0.000 us   |    initcall_is_event();
+    #  u-boot-1     0.....   282.101375: funcgraph_entry:        0.000 us   |    calc_reloc_ofs();
 
     expected_indent = None
     found_start = False
@@ -199,7 +199,7 @@ def check_funcgraph(cons, fname, proftool, map_fname, trace_dat):
 
     # The next function after initf_bootstage() exits should be
     # initcall_is_event()
-    assert upto == 'initcall_is_event()'
+    assert upto == 'calc_reloc_ofs()'
 
     # Now look for initf_dm() and dm_timer_init() so we can check the bootstage
     # time