From fdb1a891b64c27522a2386a8025f8ad5c7e02bfb Mon Sep 17 00:00:00 2001 From: usama hameed Date: Tue, 6 Jun 2023 15:53:18 -0700 Subject: [PATCH] [Sanitizers] Remove BuildId from sanitizers stacktrace on Darwin On Darwin, we do not want to show the BuildId appended at the end of stack frames in Sanitizers. The BuildId/UUID can be seen by using the print_module_map=1 sanitizer option. Differential Revision: https://reviews.llvm.org/D150298 rdar://108324403 --- compiler-rt/lib/sanitizer_common/sanitizer_stacktrace_printer.cpp | 4 ++++ .../sanitizer_common/tests/sanitizer_stacktrace_printer_test.cpp | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace_printer.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace_printer.cpp index 1096d21..d3d1d26 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace_printer.cpp +++ b/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace_printer.cpp @@ -218,7 +218,9 @@ void RenderFrame(InternalScopedString *buffer, const char *format, int frame_no, RenderModuleLocation(buffer, info->module, info->module_offset, info->module_arch, strip_path_prefix); +#ifndef SANITIZER_APPLE MaybeBuildIdToBuffer(*info, /*PrefixSpace=*/true, buffer); +#endif } else { buffer->append("()"); } @@ -231,7 +233,9 @@ void RenderFrame(InternalScopedString *buffer, const char *format, int frame_no, // Always strip the module name for %M. RenderModuleLocation(buffer, StripModuleName(info->module), info->module_offset, info->module_arch, ""); +#ifndef SANITIZER_APPLE MaybeBuildIdToBuffer(*info, /*PrefixSpace=*/true, buffer); +#endif } else { buffer->append("(%p)", (void *)address); } diff --git a/compiler-rt/lib/sanitizer_common/tests/sanitizer_stacktrace_printer_test.cpp b/compiler-rt/lib/sanitizer_common/tests/sanitizer_stacktrace_printer_test.cpp index 62b34cd..489ef4d 100644 --- a/compiler-rt/lib/sanitizer_common/tests/sanitizer_stacktrace_printer_test.cpp +++ b/compiler-rt/lib/sanitizer_common/tests/sanitizer_stacktrace_printer_test.cpp @@ -137,11 +137,19 @@ TEST(SanitizerStacktracePrinter, RenderFrame) { RenderFrame(&str, "%M", frame_no, info.address, &info, false); EXPECT_NE(nullptr, internal_strstr(str.data(), "(module+0x")); EXPECT_NE(nullptr, internal_strstr(str.data(), "200")); +#if SANITIZER_APPLE + EXPECT_EQ(nullptr, internal_strstr(str.data(), "BuildId: 5566")); +#else EXPECT_NE(nullptr, internal_strstr(str.data(), "BuildId: 5566")); +#endif str.clear(); RenderFrame(&str, "%L", frame_no, info.address, &info, false); +#if SANITIZER_APPLE + EXPECT_STREQ("(/path/to/module+0x200)", str.data()); +#else EXPECT_STREQ("(/path/to/module+0x200) (BuildId: 5566)", str.data()); +#endif str.clear(); RenderFrame(&str, "%b", frame_no, info.address, &info, false); -- 2.7.4