diff options
-rw-r--r-- | lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp | 14 | ||||
-rw-r--r-- | lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp | 24 | ||||
-rw-r--r-- | lldb/source/Symbol/ObjectFile.cpp | 2 |
3 files changed, 21 insertions, 19 deletions
diff --git a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp index 930415abe47..a024d1b3148 100644 --- a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp +++ b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp @@ -615,7 +615,8 @@ ObjectFileELF::GetSectionList() const ELFSectionHeader &header = *I; ConstString name(m_shstr_data.PeekCStr(header.sh_name)); - uint64_t size = header.sh_type == SHT_NOBITS ? 0 : header.sh_size; + const uint64_t file_size = header.sh_type == SHT_NOBITS ? 0 : header.sh_size; + const uint64_t vm_size = header.sh_flags & SHF_ALLOC ? header.sh_size : 0; static ConstString g_sect_name_text (".text"); static ConstString g_sect_name_data (".data"); @@ -658,9 +659,9 @@ ObjectFileELF::GetSectionList() name, // Section name. sect_type, // Section type. header.sh_addr, // VM address. - header.sh_size, // VM size in bytes of this section. + vm_size, // VM size in bytes of this section. header.sh_offset, // Offset of this section in the file. - size, // Size of the section as found in the file. + file_size, // Size of the section as found in the file. header.sh_flags)); // Flags for this section. m_sections_ap->AddSection(section); @@ -781,11 +782,11 @@ ParseSymbols(Symtab *symtab, const char *symbol_name = strtab_data.PeekCStr(symbol.st_name); bool is_global = symbol.getBinding() == STB_GLOBAL; uint32_t flags = symbol.st_other << 8 | symbol.st_info; - + bool is_mangled = symbol_name ? (symbol_name[0] == '_' && symbol_name[1] == 'Z') : false; Symbol dc_symbol( i + start_id, // ID is the original symbol table index. symbol_name, // Symbol name. - false, // Is the symbol name mangled? + is_mangled, // Is the symbol name mangled? symbol_type, // Type of this symbol is_global, // Is this globally visible? false, // Is this symbol debug info? @@ -976,11 +977,12 @@ ParsePLTRelocations(Symtab *symbol_table, break; const char *symbol_name = strtab_data.PeekCStr(symbol.st_name); + bool is_mangled = symbol_name ? (symbol_name[0] == '_' && symbol_name[1] == 'Z') : false; Symbol jump_symbol( i + start_id, // Symbol table index symbol_name, // symbol name. - false, // is the symbol name mangled? + is_mangled, // is the symbol name mangled? eSymbolTypeTrampoline, // Type of this symbol false, // Is this globally visible? false, // Is this symbol debug info? diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp index 44e66b5b571..683bc81243d 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp @@ -439,65 +439,65 @@ SymbolFileDWARF::CalculateAbilities () section = section_list->FindSectionByType (eSectionTypeDWARFDebugInfo, true).get(); if (section != NULL) { - debug_info_file_size = section->GetByteSize(); + debug_info_file_size = section->GetFileSize(); section = section_list->FindSectionByType (eSectionTypeDWARFDebugAbbrev, true).get(); if (section) - debug_abbrev_file_size = section->GetByteSize(); + debug_abbrev_file_size = section->GetFileSize(); else m_flags.Set (flagsGotDebugAbbrevData); section = section_list->FindSectionByType (eSectionTypeDWARFDebugAranges, true).get(); if (section) - debug_aranges_file_size = section->GetByteSize(); + debug_aranges_file_size = section->GetFileSize(); else m_flags.Set (flagsGotDebugArangesData); section = section_list->FindSectionByType (eSectionTypeDWARFDebugFrame, true).get(); if (section) - debug_frame_file_size = section->GetByteSize(); + debug_frame_file_size = section->GetFileSize(); else m_flags.Set (flagsGotDebugFrameData); section = section_list->FindSectionByType (eSectionTypeDWARFDebugLine, true).get(); if (section) - debug_line_file_size = section->GetByteSize(); + debug_line_file_size = section->GetFileSize(); else m_flags.Set (flagsGotDebugLineData); section = section_list->FindSectionByType (eSectionTypeDWARFDebugLoc, true).get(); if (section) - debug_loc_file_size = section->GetByteSize(); + debug_loc_file_size = section->GetFileSize(); else m_flags.Set (flagsGotDebugLocData); section = section_list->FindSectionByType (eSectionTypeDWARFDebugMacInfo, true).get(); if (section) - debug_macinfo_file_size = section->GetByteSize(); + debug_macinfo_file_size = section->GetFileSize(); else m_flags.Set (flagsGotDebugMacInfoData); section = section_list->FindSectionByType (eSectionTypeDWARFDebugPubNames, true).get(); if (section) - debug_pubnames_file_size = section->GetByteSize(); + debug_pubnames_file_size = section->GetFileSize(); else m_flags.Set (flagsGotDebugPubNamesData); section = section_list->FindSectionByType (eSectionTypeDWARFDebugPubTypes, true).get(); if (section) - debug_pubtypes_file_size = section->GetByteSize(); + debug_pubtypes_file_size = section->GetFileSize(); else m_flags.Set (flagsGotDebugPubTypesData); section = section_list->FindSectionByType (eSectionTypeDWARFDebugRanges, true).get(); if (section) - debug_ranges_file_size = section->GetByteSize(); + debug_ranges_file_size = section->GetFileSize(); else m_flags.Set (flagsGotDebugRangesData); section = section_list->FindSectionByType (eSectionTypeDWARFDebugStr, true).get(); if (section) - debug_str_file_size = section->GetByteSize(); + debug_str_file_size = section->GetFileSize(); else m_flags.Set (flagsGotDebugStrData); } @@ -541,7 +541,7 @@ SymbolFileDWARF::GetCachedSectionData (uint32_t got_flag, SectionType sect_type, // See if we memory mapped the DWARF segment? if (m_dwarf_data.GetByteSize()) { - data.SetData(m_dwarf_data, section_sp->GetOffset (), section_sp->GetByteSize()); + data.SetData(m_dwarf_data, section_sp->GetOffset (), section_sp->GetFileSize()); } else { diff --git a/lldb/source/Symbol/ObjectFile.cpp b/lldb/source/Symbol/ObjectFile.cpp index a45ef820f0e..7469b10e2ae 100644 --- a/lldb/source/Symbol/ObjectFile.cpp +++ b/lldb/source/Symbol/ObjectFile.cpp @@ -449,7 +449,7 @@ ObjectFile::MemoryMapSectionData (const Section *section, DataExtractor& section else { // The object file now contains a full mmap'ed copy of the object file data, so just use this - return GetData(section->GetFileOffset(), section->GetByteSize(), section_data); + return GetData(section->GetFileOffset(), section->GetFileSize(), section_data); } section_data.Clear(); return 0; |