36 lines · cpp
1//===-- ubsan_init_standalone_preinit.cpp --------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// Initialization of standalone UBSan runtime.10//11//===----------------------------------------------------------------------===//12 13#include "ubsan_platform.h"14#if !CAN_SANITIZE_UB15#error "UBSan is not supported on this platform!"16#endif17 18#include "sanitizer_common/sanitizer_internal_defs.h"19#include "ubsan_init.h"20#include "ubsan_signals_standalone.h"21 22#if SANITIZER_CAN_USE_PREINIT_ARRAY23 24namespace __ubsan {25 26static void PreInitAsStandalone() {27 InitAsStandalone();28 InitializeDeadlySignals();29}30 31} // namespace __ubsan32 33__attribute__((section(".preinit_array"), used)) static auto preinit =34 __ubsan::PreInitAsStandalone;35#endif // SANITIZER_CAN_USE_PREINIT_ARRAY36