summaryrefslogtreecommitdiff
path: root/lib/ubsan/ubsan_init_standalone.cc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ubsan/ubsan_init_standalone.cc')
-rw-r--r--lib/ubsan/ubsan_init_standalone.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/ubsan/ubsan_init_standalone.cc b/lib/ubsan/ubsan_init_standalone.cc
index 8e999e3ac..ff1a20efe 100644
--- a/lib/ubsan/ubsan_init_standalone.cc
+++ b/lib/ubsan/ubsan_init_standalone.cc
@@ -19,6 +19,11 @@
#include "sanitizer_common/sanitizer_internal_defs.h"
#include "ubsan_init.h"
+#if SANITIZER_CAN_USE_PREINIT_ARRAY
+__attribute__((section(".preinit_array"), used))
+void (*__local_ubsan_preinit)(void) = __ubsan::InitAsStandalone;
+#else
+// Use a dynamic initializer.
class UbsanStandaloneInitializer {
public:
UbsanStandaloneInitializer() {
@@ -26,3 +31,5 @@ class UbsanStandaloneInitializer {
}
};
static UbsanStandaloneInitializer ubsan_standalone_initializer;
+#endif // SANITIZER_CAN_USE_PREINIT_ARRAY
+