summaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/SymbolVendor
diff options
context:
space:
mode:
authorJason Molenda <jmolenda@apple.com>2013-05-10 02:18:50 +0000
committerJason Molenda <jmolenda@apple.com>2013-05-10 02:18:50 +0000
commit9a2a9e8c36363776800f61217867f282d316cd4c (patch)
treec21837725a1fbdcbf894ce56bee4f141754f974b /lldb/source/Plugins/SymbolVendor
parent4e70363242076e0759fe154535a779ae5ee20bf3 (diff)
Scratch that, the problem was elsewhere.
Diffstat (limited to 'lldb/source/Plugins/SymbolVendor')
-rw-r--r--lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp b/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp
index 4b271b40317..56c04ba17b6 100644
--- a/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp
+++ b/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp
@@ -107,6 +107,16 @@ ReplaceDSYMSectionsWithExecutableSections (ObjectFile *exec_objfile, ObjectFile
// and in the dSYM with those from the executable. If we fail to
// replace the one in the dSYM, then add the executable section to
// the dSYM.
+ SectionSP dsym_sect_sp(dsym_section_list->FindSectionByID(exec_sect_sp->GetID()));
+ if (dsym_sect_sp.get() && dsym_sect_sp->GetName() != exec_sect_sp->GetName())
+ {
+ // The sections in a dSYM are normally a superset of the sections in an executable.
+ // If we find a section # in the exectuable & dSYM that don't have the same name,
+ // something has changed since the dSYM was written. The mach_kernel DSTROOT binary
+ // has a CTF segment added, for instance, and it's easiest to simply not add that to
+ // the dSYM - none of the nlist entries are going to have references to that section.
+ continue;
+ }
if (dsym_section_list->ReplaceSection(exec_sect_sp->GetID(), exec_sect_sp, 0) == false)
dsym_section_list->AddSection(exec_sect_sp);
}