Skip to content

Commit 01c8473

Browse files
authored
Merge pull request #4114 from apple/🍒/austria/b0dc2fae602579114525353c8403d6e6d128ad73
[lldb] Don't persist the LINKEDIT slide in the indirect symbol offset
2 parents 7fdf3d7 + bd495b8 commit 01c8473

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2258,6 +2258,7 @@ size_t ObjectFileMachO::ParseSymtab() {
22582258
llvm::MachO::linkedit_data_command function_starts_load_command = {0, 0, 0, 0};
22592259
llvm::MachO::linkedit_data_command exports_trie_load_command = {0, 0, 0, 0};
22602260
llvm::MachO::dyld_info_command dyld_info = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
2261+
llvm::MachO::dysymtab_command dysymtab = m_dysymtab;
22612262
// The data element of type bool indicates that this entry is thumb
22622263
// code.
22632264
typedef AddressDataArray<lldb::addr_t, bool, 100> FunctionStarts;
@@ -2430,12 +2431,12 @@ size_t ObjectFileMachO::ParseSymtab() {
24302431
ReadMemory(process_sp, symoff_addr, nlist_data_byte_size));
24312432
if (nlist_data_sp)
24322433
nlist_data.SetData(nlist_data_sp, 0, nlist_data_sp->GetByteSize());
2433-
if (m_dysymtab.nindirectsyms != 0) {
2434+
if (dysymtab.nindirectsyms != 0) {
24342435
const addr_t indirect_syms_addr = linkedit_load_addr +
2435-
m_dysymtab.indirectsymoff -
2436+
dysymtab.indirectsymoff -
24362437
linkedit_file_offset;
24372438
DataBufferSP indirect_syms_data_sp(ReadMemory(
2438-
process_sp, indirect_syms_addr, m_dysymtab.nindirectsyms * 4));
2439+
process_sp, indirect_syms_addr, dysymtab.nindirectsyms * 4));
24392440
if (indirect_syms_data_sp)
24402441
indirect_symbol_index_data.SetData(
24412442
indirect_syms_data_sp, 0,
@@ -2488,7 +2489,7 @@ size_t ObjectFileMachO::ParseSymtab() {
24882489
symtab_load_command.symoff += linkedit_slide;
24892490
symtab_load_command.stroff += linkedit_slide;
24902491
dyld_info.export_off += linkedit_slide;
2491-
m_dysymtab.indirectsymoff += linkedit_slide;
2492+
dysymtab.indirectsymoff += linkedit_slide;
24922493
function_starts_load_command.dataoff += linkedit_slide;
24932494
exports_trie_load_command.dataoff += linkedit_slide;
24942495
}
@@ -2510,9 +2511,9 @@ size_t ObjectFileMachO::ParseSymtab() {
25102511
exports_trie_load_command.datasize);
25112512
}
25122513

2513-
if (m_dysymtab.nindirectsyms != 0) {
2514-
indirect_symbol_index_data.SetData(m_data, m_dysymtab.indirectsymoff,
2515-
m_dysymtab.nindirectsyms * 4);
2514+
if (dysymtab.nindirectsyms != 0) {
2515+
indirect_symbol_index_data.SetData(m_data, dysymtab.indirectsymoff,
2516+
dysymtab.nindirectsyms * 4);
25162517
}
25172518
if (function_starts_load_command.cmd) {
25182519
function_starts_data.SetData(m_data, function_starts_load_command.dataoff,

0 commit comments

Comments
 (0)