From bd99b71a13766b4b6fe9043e248ea9295d6dcedd Mon Sep 17 00:00:00 2001 From: georgeto Date: Tue, 27 Jan 2026 11:48:37 +0100 Subject: [PATCH] fix: Extraction of symbols at high addresses elf_diff invokes nm with --radix=d, so high addresses are printed as negative numbers. The extraction regexes did consider this, resulting in the symbols at high addresses being filtered out. --- src/elf_diff/symbol_extractor.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/elf_diff/symbol_extractor.py b/src/elf_diff/symbol_extractor.py index 965d6b49..e2ea3f59 100644 --- a/src/elf_diff/symbol_extractor.py +++ b/src/elf_diff/symbol_extractor.py @@ -134,9 +134,9 @@ def extractSymbols(self, filename: str) -> None: self.num_symbols_dropped = 0 nm_regex_mangled = re.compile( - r"^[0-9A-Fa-f]+\s([0-9A-Fa-f]+)\s(\w)\s([^\t]+)(\t(.+))?" + r"^-?[0-9A-Fa-f]+\s([0-9A-Fa-f]+)\s(\w)\s([^\t]+)(\t(.+))?" ) - nm_regex_demangled = re.compile(r"^[0-9A-Fa-f]+\s([0-9A-Fa-f]+)\s(\w)\s(.+)") + nm_regex_demangled = re.compile(r"^-?[0-9A-Fa-f]+\s([0-9A-Fa-f]+)\s(\w)\s(.+)") file_line_number_regex = re.compile(r"(.*):(\d+)") print("Extracting symbols") sys.stdout.flush()