forked from OSchip/llvm-project
ObjectFile: remove ReadSectionData/MemoryMapSectionData mutual recursion
Summary: These two functions were calling each other, while handling different branches of the if(IsInMemory()). This had a reason at some point in the past, but right now it's just confusing. I resolve this by removing the MemoryMapSectionData function and inlining the !IsInMemory branch into ReadSectionData. There isn't anything mmap-related in this function anyway, as the decision whether to mmap is handled at a higher level. This is a preparatory step to make ObjectFileELF be able to decompress compressed sections (I want to make sure that all calls reading section data are routed through a single piece of code). Reviewers: clayborg Subscribers: emaste, JDevlieghere, lldb-commits Differential Revision: https://reviews.llvm.org/D41169 llvm-svn: 320705
This commit is contained in:
parent
8630d3871d
commit
f1208e7aef
|
@ -805,9 +805,6 @@ public:
|
|||
virtual size_t ReadSectionData(Section *section,
|
||||
DataExtractor §ion_data);
|
||||
|
||||
size_t MemoryMapSectionData(Section *section,
|
||||
DataExtractor §ion_data);
|
||||
|
||||
bool IsInMemory() const { return m_memory_addr != LLDB_INVALID_ADDRESS; }
|
||||
|
||||
// Strip linker annotations (such as @@VERSION) from symbol names.
|
||||
|
|
|
@ -444,10 +444,8 @@ void SymbolFileDWARF::InitializeObject() {
|
|||
Section *section =
|
||||
section_list->FindSectionByName(GetDWARFMachOSegmentName()).get();
|
||||
|
||||
// Memory map the DWARF mach-o segment so we have everything mmap'ed
|
||||
// to keep our heap memory usage down.
|
||||
if (section)
|
||||
m_obj_file->MemoryMapSectionData(section, m_dwarf_data);
|
||||
m_obj_file->ReadSectionData(section, m_dwarf_data);
|
||||
}
|
||||
|
||||
get_apple_names_data();
|
||||
|
|
|
@ -561,25 +561,9 @@ size_t ObjectFile::ReadSectionData(Section *section,
|
|||
} else {
|
||||
// The object file now contains a full mmap'ed copy of the object file data,
|
||||
// so just use this
|
||||
return MemoryMapSectionData(section, section_data);
|
||||
}
|
||||
}
|
||||
|
||||
size_t ObjectFile::MemoryMapSectionData(Section *section,
|
||||
DataExtractor §ion_data) {
|
||||
// If some other objectfile owns this data, pass this to them.
|
||||
if (section->GetObjectFile() != this)
|
||||
return section->GetObjectFile()->MemoryMapSectionData(section,
|
||||
section_data);
|
||||
|
||||
if (IsInMemory()) {
|
||||
return ReadSectionData(section, section_data);
|
||||
} else {
|
||||
if (!section->IsRelocated())
|
||||
RelocateSection(section);
|
||||
|
||||
// The object file now contains a full mmap'ed copy of the object file data,
|
||||
// so just use this
|
||||
return GetData(section->GetFileOffset(), section->GetFileSize(),
|
||||
section_data);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue