symbolize.py: fix decoding of ftrace dumps containing syscalls
When decoding an ftrace file with syscall tracing enabled [1], the
kernel functions are not resolved and show question marks instead.
[1] $ make CFG_FTRACE_SUPPORT=y CFG_SYSCALL_FTRACE=y CFG_ULIBS_MCOUNT=y \
CFLAGS_ta_arm32=-pg
[run test and copy content of /tmp/ftrace*]
$ optee_os/scripts/symbolize.py -d optee_os/out/arm/core \
-d out-br/build/optee_test-1.0/ta/*/out
[paste ftrace log here]
Fixes: 105e09c24479 ("symbolize.py: add support for TEE core ASLR")
Signed-off-by: Jerome Forissier <jerome@forissier.org>
Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
diff --git a/scripts/symbolize.py b/scripts/symbolize.py
index b63c745..bf2f41c 100755
--- a/scripts/symbolize.py
+++ b/scripts/symbolize.py
@@ -186,17 +186,15 @@
# especially to symbolize mixed (user-space and kernel) addresses
# which is true when syscall ftrace is enabled along with TA
# ftrace.
- return '0x0'
+ return self._tee_load_addr
else:
# tee.elf
return self._tee_load_addr
def elf_for_addr(self, addr):
- if not self._regions:
- return 'tee.elf'
l_addr = self.elf_load_addr(addr)
- if l_addr is None:
- return None
+ if l_addr == self._tee_load_addr:
+ return 'tee.elf'
for k in self._elfs:
e = self._elfs[k]
if int(e[1], 16) == int(l_addr, 16):
@@ -369,7 +367,7 @@
self._sections = {} # {elf_name: [[name, addr, size], ...], ...}
self._regions = [] # [[addr, size, elf_idx, saved line], ...]
self._elfs = {0: ["tee.elf", 0]} # {idx: [uuid, load_addr], ...}
- self._tee_load_addr = 0x0
+ self._tee_load_addr = '0x0'
self._func_graph_found = False
self._func_graph_skip_line = True