diff options
author | mark@chromium.org <mark@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2010-08-06 19:47:16 +0000 |
---|---|---|
committer | mark@chromium.org <mark@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2010-08-06 19:47:16 +0000 |
commit | 0ab73db415a14651bd8e336b26d33a7be4a37aad (patch) | |
tree | fd46dba665dd686cdc92dcbb410b768c9171f392 | |
parent | Fix HandleInvalidParameter/HandlePureVirtualCall to dynamically lookup the Rt... (diff) | |
download | breakpad-0ab73db415a14651bd8e336b26d33a7be4a37aad.tar.xz |
Breakpad uses x86 as the architecture name, not i386. Most tools don't care
what architecture name is shown in a symbol file's MODULE line, but the Mac
crash_report tool's on_demand_symbol_supplier does. The new Mac dumper
inadvertently used i386. Correct that to make it x86. Temporarily make the
on_demand_symbol_supplier accept symbol files whose architecture is i386.
Also add x86_64 to the set of architectures that the on_demand_symbol_supplier
considers valid.
BUG=none
TEST=none
Review URL: http://breakpad.appspot.com/143001
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@638 4c0a9323-5329-0410-9bdc-e9ce6186880e
-rw-r--r-- | src/common/mac/dump_syms.mm | 8 | ||||
-rw-r--r-- | src/tools/mac/crash_report/on_demand_symbol_supplier.mm | 3 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/common/mac/dump_syms.mm b/src/common/mac/dump_syms.mm index 066683f3..cc2efe17 100644 --- a/src/common/mac/dump_syms.mm +++ b/src/common/mac/dump_syms.mm @@ -449,12 +449,16 @@ bool DumpSymbols::WriteSymbolFile(FILE *stream) { = NXGetArchInfoFromCpuType(selected_object_file_->cputype, selected_object_file_->cpusubtype); + const char *selected_arch_name = selected_arch_info->name; + if (strcmp(selected_arch_name, "i386") == 0) + selected_arch_name = "x86"; + // Produce a name to use in error messages that includes the // filename, and the architecture, if there is more than one. selected_object_name_ = [object_filename_ UTF8String]; if (object_files_.size() > 1) { selected_object_name_ += ", architecture "; - selected_object_name_ + selected_arch_info->name; + selected_object_name_ + selected_arch_name; } // Compute a module name, to appear in the MODULE record. @@ -467,7 +471,7 @@ bool DumpSymbols::WriteSymbolFile(FILE *stream) { identifier += "0"; // Create a module to hold the debugging information. - Module module([module_name UTF8String], "mac", selected_arch_info->name, + Module module([module_name UTF8String], "mac", selected_arch_name, identifier); // Parse the selected object file. diff --git a/src/tools/mac/crash_report/on_demand_symbol_supplier.mm b/src/tools/mac/crash_report/on_demand_symbol_supplier.mm index 0f37686f..8dc7c0de 100644 --- a/src/tools/mac/crash_report/on_demand_symbol_supplier.mm +++ b/src/tools/mac/crash_report/on_demand_symbol_supplier.mm @@ -86,7 +86,10 @@ OnDemandSymbolSupplier::OnDemandSymbolSupplier(const string &search_dir, NSScanner *scanner = [NSScanner scannerWithString:dataStr]; BOOL goodScan = [scanner scanString:@"MODULE mac " intoString:nil]; if (goodScan) { + // TODO(mark): remove i386 from this list. goodScan = ([scanner scanString:@"x86 " intoString:nil] || + [scanner scanString:@"i386 " intoString:nil] || + [scanner scanString:@"x86_64 " intoString:nil] || [scanner scanString:@"ppc " intoString:nil]); if (goodScan) { NSString *moduleID; |