[GWP-ASan] Use weak abort message definition.
Summary:
New shard out of the Check() function for GWP-ASan uses
android_set_abort_message. This is happily present on bionic Android,
but not Android for glibc host x86. Fix up to use the weak definition
always, so we don't have to worry.
Reviewers: eugenis
Reviewed By: eugenis
Subscribers: #sanitizers, llvm-commits, pcc, cferris
Tags: #sanitizers, #llvm
Differential Revision: https://reviews.llvm.org/D74142
GitOrigin-RevId: 8d19af685c9b1ba50df0ed739dbfffd0aa7686ee
diff --git a/definitions.h b/definitions.h
index 870dd96..563c408 100644
--- a/definitions.h
+++ b/definitions.h
@@ -15,4 +15,6 @@
#define GWP_ASAN_UNLIKELY(X) __builtin_expect(!!(X), 0)
#define GWP_ASAN_ALWAYS_INLINE inline __attribute__((always_inline))
+#define GWP_ASAN_WEAK __attribute__((weak))
+
#endif // GWP_ASAN_DEFINITIONS_H_
diff --git a/platform_specific/utilities_posix.cpp b/platform_specific/utilities_posix.cpp
index b292351..68d7ee7 100644
--- a/platform_specific/utilities_posix.cpp
+++ b/platform_specific/utilities_posix.cpp
@@ -6,11 +6,12 @@
//
//===----------------------------------------------------------------------===//
+#include "gwp_asan/definitions.h"
#include "gwp_asan/utilities.h"
#ifdef ANDROID
-#include <android/set_abort_message.h>
#include <stdlib.h>
+extern "C" GWP_ASAN_WEAK void android_set_abort_message(const char *);
#else // ANDROID
#include <stdio.h>
#endif
@@ -21,7 +22,8 @@
void Check(bool Condition, const char *Message) {
if (Condition)
return;
- android_set_abort_message(Message);
+ if (&android_set_abort_message != nullptr)
+ android_set_abort_message(Message);
abort();
}
#else // ANDROID