mirror of
https://git.suyu.dev/suyu/breakpad.git
synced 2026-01-04 05:34:45 +01:00
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:
parent
8efe0f1c3b
commit
b6f36dd775
4 changed files with 30 additions and 26 deletions
|
|
@ -53,6 +53,18 @@
|
|||
|
||||
namespace dwarf2reader {
|
||||
|
||||
const SectionMap::const_iterator GetSectionByName(const SectionMap&
|
||||
sections, 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;
|
||||
}
|
||||
|
||||
CompilationUnit::CompilationUnit(const string& path,
|
||||
const SectionMap& sections, uint64_t offset,
|
||||
ByteReader* reader, Dwarf2Handler* handler)
|
||||
|
|
@ -100,7 +112,8 @@ void CompilationUnit::ReadAbbrevs() {
|
|||
return;
|
||||
|
||||
// First get the debug_abbrev section.
|
||||
SectionMap::const_iterator iter = GetSectionByName(".debug_abbrev");
|
||||
SectionMap::const_iterator iter =
|
||||
GetSectionByName(sections_, ".debug_abbrev");
|
||||
assert(iter != sections_.end());
|
||||
|
||||
abbrevs_ = new std::vector<Abbrev>;
|
||||
|
|
@ -352,7 +365,8 @@ void CompilationUnit::ReadHeader() {
|
|||
|
||||
uint64_t CompilationUnit::Start() {
|
||||
// First get the debug_info section.
|
||||
SectionMap::const_iterator iter = GetSectionByName(".debug_info");
|
||||
SectionMap::const_iterator iter =
|
||||
GetSectionByName(sections_, ".debug_info");
|
||||
assert(iter != sections_.end());
|
||||
|
||||
// Set up our buffer
|
||||
|
|
@ -383,28 +397,28 @@ uint64_t CompilationUnit::Start() {
|
|||
ReadAbbrevs();
|
||||
|
||||
// Set the string section if we have one.
|
||||
iter = GetSectionByName(".debug_str");
|
||||
iter = GetSectionByName(sections_, ".debug_str");
|
||||
if (iter != sections_.end()) {
|
||||
string_buffer_ = iter->second.first;
|
||||
string_buffer_length_ = iter->second.second;
|
||||
}
|
||||
|
||||
// Set the line string section if we have one.
|
||||
iter = GetSectionByName(".debug_line_str");
|
||||
iter = GetSectionByName(sections_, ".debug_line_str");
|
||||
if (iter != sections_.end()) {
|
||||
line_string_buffer_ = iter->second.first;
|
||||
line_string_buffer_length_ = iter->second.second;
|
||||
}
|
||||
|
||||
// Set the string offsets section if we have one.
|
||||
iter = GetSectionByName(".debug_str_offsets");
|
||||
iter = GetSectionByName(sections_, ".debug_str_offsets");
|
||||
if (iter != sections_.end()) {
|
||||
str_offsets_buffer_ = iter->second.first;
|
||||
str_offsets_buffer_length_ = iter->second.second;
|
||||
}
|
||||
|
||||
// Set the address section if we have one.
|
||||
iter = GetSectionByName(".debug_addr");
|
||||
iter = GetSectionByName(sections_, ".debug_addr");
|
||||
if (iter != sections_.end()) {
|
||||
addr_buffer_ = iter->second.first;
|
||||
addr_buffer_length_ = iter->second.second;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue