symbolize.py: strip MTE tag
When the Armv8.5 Memory Tagging Extension is enabled, the address shown
in data-abort messages may include a non-zero tag. For example (xtest
1038):
E/TC:? 0 User mode data-abort at address 0x2000000401824f0 (tag check fault)
The tag needs to be cleared before the address can be translated into
symbol + offset.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
diff --git a/scripts/symbolize.py b/scripts/symbolize.py
index 91d0681..d763fb0 100755
--- a/scripts/symbolize.py
+++ b/scripts/symbolize.py
@@ -215,9 +215,16 @@
ret = '!!!'
return ret
+ # Armv8.5 with Memory Tagging Extension (MTE)
+ def strip_armv85_mte_tag(self, addr):
+ i_addr = int(addr, 16)
+ i_addr &= ~(0xf << 56)
+ return '0x{:x}'.format(i_addr)
+
def symbol_plus_offset(self, addr):
ret = ''
prevsize = 0
+ addr = self.strip_armv85_mte_tag(addr)
reladdr = self.subtract_load_addr(addr)
elf_name = self.elf_for_addr(addr)
if elf_name is None: