Author: gclayton Date: Mon Jul 27 18:21:05 2015 New Revision: 243344 URL: http://llvm.org/viewvc/llvm-project?rev=243344&view=rev Log: Make sure we detect symbols in the new __DATA_DIRTY and __DATA_CONST segments and classify them correctly.
<rdar://problem/20942073> Modified: lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h Modified: lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp?rev=243344&r1=243343&r2=243344&view=diff ============================================================================== --- lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp (original) +++ lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp Mon Jul 27 18:21:05 2015 @@ -1028,6 +1028,20 @@ ObjectFileMachO::GetSegmentNameDATA() } const ConstString & +ObjectFileMachO::GetSegmentNameDATA_DIRTY() +{ + static ConstString g_segment_name ("__DATA_DIRTY"); + return g_segment_name; +} + +const ConstString & +ObjectFileMachO::GetSegmentNameDATA_CONST() +{ + static ConstString g_segment_name ("__DATA_CONST"); + return g_segment_name; +} + +const ConstString & ObjectFileMachO::GetSegmentNameOBJC() { static ConstString g_segment_name_OBJC ("__OBJC"); @@ -2442,10 +2456,14 @@ ObjectFileMachO::ParseSymtab () const ConstString &g_segment_name_TEXT = GetSegmentNameTEXT(); const ConstString &g_segment_name_DATA = GetSegmentNameDATA(); + const ConstString &g_segment_name_DATA_DIRTY = GetSegmentNameDATA_DIRTY(); + const ConstString &g_segment_name_DATA_CONST = GetSegmentNameDATA_CONST(); const ConstString &g_segment_name_OBJC = GetSegmentNameOBJC(); const ConstString &g_section_name_eh_frame = GetSectionNameEHFrame(); SectionSP text_section_sp(section_list->FindSectionByName(g_segment_name_TEXT)); SectionSP data_section_sp(section_list->FindSectionByName(g_segment_name_DATA)); + SectionSP data_dirty_section_sp(section_list->FindSectionByName(g_segment_name_DATA_DIRTY)); + SectionSP data_const_section_sp(section_list->FindSectionByName(g_segment_name_DATA_CONST)); SectionSP objc_section_sp(section_list->FindSectionByName(g_segment_name_OBJC)); SectionSP eh_frame_section_sp; if (text_section_sp.get()) @@ -3298,7 +3316,9 @@ ObjectFileMachO::ParseSymtab () else type = eSymbolTypeCode; } - else if (symbol_section->IsDescendant(data_section_sp.get())) + else if (symbol_section->IsDescendant(data_section_sp.get()) || + symbol_section->IsDescendant(data_dirty_section_sp.get()) || + symbol_section->IsDescendant(data_const_section_sp.get())) { if (symbol_sect_name && ::strstr (symbol_sect_name, "__objc") == symbol_sect_name) { @@ -4148,7 +4168,9 @@ ObjectFileMachO::ParseSymtab () type = eSymbolTypeCode; } else - if (symbol_section->IsDescendant(data_section_sp.get())) + if (symbol_section->IsDescendant(data_section_sp.get()) || + symbol_section->IsDescendant(data_dirty_section_sp.get()) || + symbol_section->IsDescendant(data_const_section_sp.get())) { if (symbol_sect_name && ::strstr (symbol_sect_name, "__objc") == symbol_sect_name) { Modified: lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h?rev=243344&r1=243343&r2=243344&view=diff ============================================================================== --- lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h (original) +++ lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h Mon Jul 27 18:21:05 2015 @@ -223,6 +223,8 @@ protected: llvm::MachO::mach_header m_header; static const lldb_private::ConstString &GetSegmentNameTEXT(); static const lldb_private::ConstString &GetSegmentNameDATA(); + static const lldb_private::ConstString &GetSegmentNameDATA_DIRTY(); + static const lldb_private::ConstString &GetSegmentNameDATA_CONST(); static const lldb_private::ConstString &GetSegmentNameOBJC(); static const lldb_private::ConstString &GetSegmentNameLINKEDIT(); static const lldb_private::ConstString &GetSectionNameEHFrame(); _______________________________________________ lldb-commits mailing list lldb-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits