1263320Sdim//===-- ubsan_init_standalone_preinit.cc ---------------------------------===//
2263320Sdim//
3263320Sdim//                     The LLVM Compiler Infrastructure
4263320Sdim//
5269012Semaste// This file is distributed under the University of Illinois Open Source
6263320Sdim// License. See LICENSE.TXT for details.
7263320Sdim//
8263320Sdim//===----------------------------------------------------------------------===//
9263320Sdim//
10263320Sdim// Initialization of standalone UBSan runtime.
11263320Sdim//
12263320Sdim//===----------------------------------------------------------------------===//
13263320Sdim
14263320Sdim#include "ubsan_platform.h"
15263320Sdim#if !CAN_SANITIZE_UB
16263320Sdim#error "UBSan is not supported on this platform!"
17263320Sdim#endif
18263320Sdim
19263320Sdim#include "sanitizer_common/sanitizer_internal_defs.h"
20263320Sdim#include "ubsan_init.h"
21263320Sdim#include "ubsan_signals_standalone.h"
22263320Sdim
23263320Sdim#if SANITIZER_CAN_USE_PREINIT_ARRAY
24263320Sdim
25263320Sdimnamespace __ubsan {
26263320Sdim
27263320Sdimstatic void PreInitAsStandalone() {
28263320Sdim  InitAsStandalone();
29263320Sdim  InitializeDeadlySignals();
30263320Sdim}
31263320Sdim
32263320Sdim} // namespace __ubsan
33263320Sdim
34263320Sdim__attribute__((section(".preinit_array"), used)) void (*__local_ubsan_preinit)(
35263320Sdim    void) = __ubsan::PreInitAsStandalone;
36263320Sdim#endif // SANITIZER_CAN_USE_PREINIT_ARRAY
37263320Sdim