Workaround Mac arch issue

Temporarily works around an issue on Mac where the system version of
NXGetLocalArchInfo is returning x86 information on x86_64 devices,
which results in dump_syms failing on said devices. Instead, the
Breakpad implementation of NXGetLocalArchInfo, which is meant for
dump_syms_mac on Linux, will be used until the system version is fixed.

Bug: 1242776
Change-Id: Id398338e580eb9c67c61f9f01670d2e7dbe86bea
Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3143524
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
This commit is contained in:
Brian Sheedy 2021-09-07 13:45:56 -07:00 committed by Joshua Peraza
parent 4722484bf6
commit 1e093103ca

View file

@ -130,7 +130,10 @@ const NXArchInfo* BreakpadGetArchInfoFromCpuType(cpu_type_t cpu_type,
} // namespace google_breakpad } // namespace google_breakpad
#ifndef __APPLE__ // TODO(crbug.com/1242776): The "#ifndef __APPLE__" should be here, but the
// system version of NXGetLocalArchInfo returns incorrect information on
// x86_64 machines (treating them as just x86), so use the Breakpad version
// all the time for now.
namespace { namespace {
enum Architecture { enum Architecture {
@ -219,6 +222,8 @@ const NXArchInfo *NXGetLocalArchInfo(void) {
return &kKnownArchitectures[arch]; return &kKnownArchitectures[arch];
} }
#ifndef __APPLE__
const NXArchInfo *NXGetArchInfoFromName(const char *name) { const NXArchInfo *NXGetArchInfoFromName(const char *name) {
for (int arch = 0; arch < kNumArchitectures; ++arch) { for (int arch = 0; arch < kNumArchitectures; ++arch) {
if (!strcmp(name, kKnownArchitectures[arch].name)) { if (!strcmp(name, kKnownArchitectures[arch].name)) {