Always read CFI section, even when not outputing CFI information.

On iOS at least, the CFI section contains information needed to
correctly dump the symbols. Even if the CFI section is not dumped,
reading it is necessary to get correcty symbolication.

R=mark@chromium.org, ted.mielczarek@gmail.com

Review URL: https://breakpad.appspot.com/596002

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1182 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
qsr@chromium.org 2013-05-16 14:06:06 +00:00
parent 8695cc0b88
commit 3a59d0586b

View file

@ -404,7 +404,7 @@ bool DumpSymbols::LoadCommandDumper::SegmentCommand(const Segment &segment) {
if (!reader_.MapSegmentSections(segment, &section_map))
return false;
if (segment.name == "__TEXT" && symbol_data_ != NO_CFI) {
if (segment.name == "__TEXT") {
module_->SetLoadAddress(segment.vmaddr);
mach_o::SectionMap::const_iterator eh_frame =
section_map.find("__eh_frame");
@ -422,13 +422,11 @@ bool DumpSymbols::LoadCommandDumper::SegmentCommand(const Segment &segment) {
return false;
}
}
if (symbol_data_ != NO_CFI) {
mach_o::SectionMap::const_iterator debug_frame
= section_map.find("__debug_frame");
if (debug_frame != section_map.end()) {
// If there is a problem reading this, don't treat it as a fatal error.
dumper_.ReadCFI(module_, reader_, debug_frame->second, false);
}
mach_o::SectionMap::const_iterator debug_frame
= section_map.find("__debug_frame");
if (debug_frame != section_map.end()) {
// If there is a problem reading this, don't treat it as a fatal error.
dumper_.ReadCFI(module_, reader_, debug_frame->second, false);
}
}