[compiler-rt] [Darwin][Sanitizers][CrashReporter] Adopt initializer for Crash Reporter Annotations struct (PR #123978)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 22 10:16:18 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-compiler-rt-sanitizer
Author: None (thetruestblue)
<details>
<summary>Changes</summary>
An initializer for the Crash Reporter Annotatoins struct was added in version 5. For the simplicity of not needing to always update the struct in subsequent versions, this patchs checks for the initializer before attempting to redefine the struct on its own.
rdar://136156203
---
Full diff: https://github.com/llvm/llvm-project/pull/123978.diff
1 Files Affected:
- (modified) compiler-rt/lib/sanitizer_common/sanitizer_mac.cpp (+13-8)
``````````diff
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_mac.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_mac.cpp
index c8a0afccb254e5..ead3d7123e8a18 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_mac.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_mac.cpp
@@ -45,7 +45,7 @@ extern char **environ;
# define SANITIZER_OS_TRACE 0
# endif
-// import new crash reporting api
+// Integrate with CrashReporter library if available
# if defined(__has_include) && __has_include(<CrashReporterClient.h>)
# define HAVE_CRASHREPORTERCLIENT_H 1
# include <CrashReporterClient.h>
@@ -796,8 +796,13 @@ static char crashreporter_info_buff[__sanitizer::kErrorMessageBufferSize] = {};
static Mutex crashreporter_info_mutex;
extern "C" {
-// Integrate with crash reporter libraries.
+
#if HAVE_CRASHREPORTERCLIENT_H
+// Available in CRASHREPORTER_ANNOTATIONS_VERSION 5+
+# ifdef CRASHREPORTER_ANNOTATIONS_INITIALIZER
+CRASHREPORTER_ANNOTATIONS_INITIALIZER()
+# else
+// Support for older CrashRerporter annotiations
CRASH_REPORTER_CLIENT_HIDDEN
struct crashreporter_annotations_t gCRAnnotations
__attribute__((section("__DATA," CRASHREPORTER_ANNOTATIONS_SECTION))) = {
@@ -808,17 +813,17 @@ struct crashreporter_annotations_t gCRAnnotations
0,
0,
0,
-#if CRASHREPORTER_ANNOTATIONS_VERSION > 4
+# if CRASHREPORTER_ANNOTATIONS_VERSION > 4
0,
-#endif
+# endif
};
-
-#else
-// fall back to old crashreporter api
+# endif
+# else
+// Revert to previous crash reporter API if client is not available
static const char *__crashreporter_info__ __attribute__((__used__)) =
&crashreporter_info_buff[0];
asm(".desc ___crashreporter_info__, 0x10");
-#endif
+#endif // HAVE_CRASHREPORTERCLIENT_H
} // extern "C"
``````````
</details>
https://github.com/llvm/llvm-project/pull/123978
More information about the llvm-commits
mailing list