[Sanitizers] Remove BuildId from sanitizers stacktrace on Darwin
authorusama hameed <u_hameed@apple.com>
Tue, 6 Jun 2023 22:53:18 +0000 (15:53 -0700)
committerusama hameed <u_hameed@apple.com>
Tue, 6 Jun 2023 23:37:39 +0000 (16:37 -0700)
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
compiler-rt/lib/sanitizer_common/tests/sanitizer_stacktrace_printer_test.cpp

index 1096d21..d3d1d26 100644 (file)
@@ -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("(<unknown module>)");
       }
@@ -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);
       }
index 62b34cd..489ef4d 100644 (file)
@@ -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);