From eb7f24e9455e1596dcd199fd2af816a77649ca86 Mon Sep 17 00:00:00 2001 From: kwalberg Date: Sun, 19 Oct 2025 16:38:22 -0500 Subject: [PATCH] fix: pull MachO .o function info from symbol table --- blint/lib/binary.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/blint/lib/binary.py b/blint/lib/binary.py index bb1d2ba..cd8e984 100644 --- a/blint/lib/binary.py +++ b/blint/lib/binary.py @@ -1648,6 +1648,18 @@ def add_mach0_functions(metadata, parsed_obj): metadata["ctor_functions"] = parse_functions(parsed_obj.ctor_functions) metadata["unwind_functions"] = parse_functions(parsed_obj.unwind_functions) metadata["symtab_symbols"], exe_type = parse_macho_symbols(parsed_obj.symbols) + + # Populate function info based on local symbols for .o files or others where parsed_obj.functions is empty. + if not metadata["functions"]: + metadata["functions"] = [ + { + "idx": idx, + "name": symbol["name"], + "address": symbol["address"] + } + for idx, symbol in enumerate(s for s in metadata["symtab_symbols"] if s["category"] == lief.MachO.Symbol.CATEGORY.LOCAL) + ] + if exe_type: metadata["exe_type"] = exe_type if parsed_obj.dylinker: