1*760c2415Smrg //===-- ubsan_init_standalone_preinit.cc ---------------------------------===//
28dd4bdcdSmrg //
38dd4bdcdSmrg // This file is distributed under the University of Illinois Open Source
48dd4bdcdSmrg // License. See LICENSE.TXT for details.
58dd4bdcdSmrg //
68dd4bdcdSmrg //===----------------------------------------------------------------------===//
78dd4bdcdSmrg //
88dd4bdcdSmrg // Initialization of standalone UBSan runtime.
98dd4bdcdSmrg //
108dd4bdcdSmrg //===----------------------------------------------------------------------===//
118dd4bdcdSmrg 
128dd4bdcdSmrg #include "ubsan_platform.h"
138dd4bdcdSmrg #if !CAN_SANITIZE_UB
148dd4bdcdSmrg #error "UBSan is not supported on this platform!"
158dd4bdcdSmrg #endif
168dd4bdcdSmrg 
178dd4bdcdSmrg #include "sanitizer_common/sanitizer_internal_defs.h"
188dd4bdcdSmrg #include "ubsan_init.h"
198dd4bdcdSmrg #include "ubsan_signals_standalone.h"
208dd4bdcdSmrg 
218dd4bdcdSmrg #if SANITIZER_CAN_USE_PREINIT_ARRAY
228dd4bdcdSmrg 
238dd4bdcdSmrg namespace __ubsan {
248dd4bdcdSmrg 
PreInitAsStandalone()258dd4bdcdSmrg static void PreInitAsStandalone() {
268dd4bdcdSmrg   InitAsStandalone();
278dd4bdcdSmrg   InitializeDeadlySignals();
288dd4bdcdSmrg }
298dd4bdcdSmrg 
308dd4bdcdSmrg } // namespace __ubsan
318dd4bdcdSmrg 
328dd4bdcdSmrg __attribute__((section(".preinit_array"), used)) void (*__local_ubsan_preinit)(
338dd4bdcdSmrg     void) = __ubsan::PreInitAsStandalone;
348dd4bdcdSmrg #endif // SANITIZER_CAN_USE_PREINIT_ARRAY
35