ubsan_init_standalone.cc revision 1.3
1//===-- ubsan_init_standalone.cc ------------------------------------------===//
2//
3// This file is distributed under the University of Illinois Open Source
4// License. See LICENSE.TXT for details.
5//
6//===----------------------------------------------------------------------===//
7//
8// Initialization of standalone UBSan runtime.
9//
10//===----------------------------------------------------------------------===//
11
12#include "ubsan_platform.h"
13#if !CAN_SANITIZE_UB
14# error "UBSan is not supported on this platform!"
15#endif
16
17#include "sanitizer_common/sanitizer_internal_defs.h"
18#include "ubsan_init.h"
19
20#if SANITIZER_CAN_USE_PREINIT_ARRAY
21__attribute__((section(".preinit_array"), used))
22void (*__local_ubsan_preinit)(void) = __ubsan::InitAsStandalone;
23#else
24// Use a dynamic initializer.
25class UbsanStandaloneInitializer {
26 public:
27  UbsanStandaloneInitializer() {
28    __ubsan::InitAsStandalone();
29  }
30};
31static UbsanStandaloneInitializer ubsan_standalone_initializer;
32#endif  // SANITIZER_CAN_USE_PREINIT_ARRAY
33