Move GetSectionByName out of CompilationUnit.

For the upcoming Dwarf5 LineInfo changes, we will need to get
several additional sections by name, but without a the Compilation
Unit. This change prepares for that.

Change-Id: I566855abb339a856110a2f7d243d3848fe2b3c18
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2268861
Reviewed-by: Mark Mentovai <mark@chromium.org>
This commit is contained in:
Sterling Augustine 2020-06-26 11:24:16 -07:00
parent 8efe0f1c3b
commit b6f36dd775
4 changed files with 30 additions and 26 deletions

View file

@ -65,6 +65,13 @@ class DwpReader;
// This maps from a string naming a section to a pair containing a
// the data for the section, and the size of the section.
typedef std::map<string, std::pair<const uint8_t *, uint64_t> > SectionMap;
// Abstract away the difference between elf and mach-o section names.
// Elf-names use ".section_name, mach-o uses "__section_name". Pass "name" in
// the elf form, ".section_name".
const SectionMap::const_iterator GetSectionByName(const SectionMap&
sections, const char *name);
typedef std::list<std::pair<enum DwarfAttribute, enum DwarfForm> >
AttributeList;
typedef AttributeList::iterator AttributeIterator;
@ -544,20 +551,6 @@ class CompilationUnit {
void ReadDebugSectionsFromDwo(ElfReader* elf_reader,
SectionMap* sections);
// Abstract away the difference between elf, mach-o, and Mac OS section names.
// Elf-names use ".section_name, others use "__section_name". Pass "name" in
// the elf form, ".section_name".
const SectionMap::const_iterator GetSectionByName(const char *name) {
assert(name[0] == '.');
auto iter = sections_.find(name);
if (iter != sections_.end())
return iter;
std::string macho_name("__");
macho_name += name + 1;
iter = sections_.find(macho_name);
return iter;
}
// Path of the file containing the debug information.
const string path_;