//===-- sanitizer_redefine_builtins.h ---------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // Redefine builtin functions to use internal versions. This is needed where // compiler optimizations end up producing unwanted libcalls! // //===----------------------------------------------------------------------===// #ifndef SANITIZER_COMMON_NO_REDEFINE_BUILTINS # ifndef SANITIZER_REDEFINE_BUILTINS_H #define SANITIZER_REDEFINE_BUILTINS_H // The asm hack only works with GCC and Clang. # if !defined(_WIN32) asm …; # if defined(__cplusplus) && \ !defined(SANITIZER_COMMON_REDEFINE_BUILTINS_IN_STD) // The builtins should not be redefined in source files that make use of C++ // standard libraries, in particular where C++STL headers with inline functions // are used. The redefinition in such cases would lead to ODR violations. // // Try to break the build in common cases where builtins shouldn't be redefined. namespace std { class Define_SANITIZER_COMMON_NO_REDEFINE_BUILTINS_in_cpp_file { … }; array; atomic; function; map; set; shared_ptr; string; unique_ptr; unordered_map; unordered_set; vector; } // namespace std # endif // __cpluplus # endif // !_WIN32 # endif // SANITIZER_REDEFINE_BUILTINS_H #endif // SANITIZER_COMMON_NO_REDEFINE_BUILTINS