[Lldb-commits] [lldb] r181375 - Add code to ReplaceDSYMSectionsWithExecutableSections() to handle the case where
Jason Molenda
jmolenda at apple.com
Tue May 7 15:55:04 PDT 2013
Author: jmolenda
Date: Tue May 7 17:55:04 2013
New Revision: 181375
URL: http://llvm.org/viewvc/llvm-project?rev=181375&view=rev
Log:
Add code to ReplaceDSYMSectionsWithExecutableSections() to handle the case where
a new section is added to the executable after the dSYM has been created, e.g.
the CTF segment added to mach_kernel after all other linking and processing has
been finished.
<rdar://problem/13258780>
Modified:
lldb/trunk/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp
Modified: lldb/trunk/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp?rev=181375&r1=181374&r2=181375&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp (original)
+++ lldb/trunk/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp Tue May 7 17:55:04 2013
@@ -107,6 +107,16 @@ ReplaceDSYMSectionsWithExecutableSection
// 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);
}
More information about the lldb-commits
mailing list