This revision was automatically updated to reflect the committed changes. Closed by commit rG22c16360dd00: [lldb/ObjectFileMachO] Correctly account for resolver symbols (authored by friss).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D84083/new/ https://reviews.llvm.org/D84083 Files: lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp lldb/test/API/macosx/indirect_symbol/Makefile Index: lldb/test/API/macosx/indirect_symbol/Makefile =================================================================== --- lldb/test/API/macosx/indirect_symbol/Makefile +++ lldb/test/API/macosx/indirect_symbol/Makefile @@ -8,7 +8,8 @@ build-libindirect: indirect.c $(MAKE) -f $(MAKEFILE_RULES) \ - DYLIB_C_SOURCES=indirect.c DYLIB_NAME=indirect DYLIB_ONLY=YES + DYLIB_C_SOURCES=indirect.c DYLIB_NAME=indirect DYLIB_ONLY=YES \ + LD_EXTRAS="-Wl,-image_base,0x200000000" build-libreepxoprt: reexport.c $(MAKE) -f $(MAKEFILE_RULES) \ Index: lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp =================================================================== --- lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp +++ lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp @@ -1990,6 +1990,8 @@ if (e.entry.flags & EXPORT_SYMBOL_FLAGS_STUB_AND_RESOLVER) { e.entry.other = data.GetULEB128(&offset); uint64_t resolver_addr = e.entry.other; + if (text_seg_base_addr != LLDB_INVALID_ADDRESS) + resolver_addr += text_seg_base_addr; if (is_arm) resolver_addr &= THUMB_ADDRESS_BIT_MASK; resolver_addresses.insert(resolver_addr);
Index: lldb/test/API/macosx/indirect_symbol/Makefile =================================================================== --- lldb/test/API/macosx/indirect_symbol/Makefile +++ lldb/test/API/macosx/indirect_symbol/Makefile @@ -8,7 +8,8 @@ build-libindirect: indirect.c $(MAKE) -f $(MAKEFILE_RULES) \ - DYLIB_C_SOURCES=indirect.c DYLIB_NAME=indirect DYLIB_ONLY=YES + DYLIB_C_SOURCES=indirect.c DYLIB_NAME=indirect DYLIB_ONLY=YES \ + LD_EXTRAS="-Wl,-image_base,0x200000000" build-libreepxoprt: reexport.c $(MAKE) -f $(MAKEFILE_RULES) \ Index: lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp =================================================================== --- lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp +++ lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp @@ -1990,6 +1990,8 @@ if (e.entry.flags & EXPORT_SYMBOL_FLAGS_STUB_AND_RESOLVER) { e.entry.other = data.GetULEB128(&offset); uint64_t resolver_addr = e.entry.other; + if (text_seg_base_addr != LLDB_INVALID_ADDRESS) + resolver_addr += text_seg_base_addr; if (is_arm) resolver_addr &= THUMB_ADDRESS_BIT_MASK; resolver_addresses.insert(resolver_addr);
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits