diff options
-rw-r--r-- | lib/Makefile.mk | 8 | ||||
-rw-r--r-- | lib/asan/Makefile.mk | 29 | ||||
-rw-r--r-- | lib/asan/README.txt | 15 | ||||
-rw-r--r-- | lib/dfsan/Makefile.mk | 23 | ||||
-rw-r--r-- | lib/interception/Makefile.mk | 23 | ||||
-rw-r--r-- | lib/lsan/Makefile.mk | 28 | ||||
-rw-r--r-- | lib/msan/Makefile.mk | 24 | ||||
-rw-r--r-- | lib/sanitizer_common/Makefile.mk | 22 | ||||
-rw-r--r-- | lib/tsan/Makefile.mk | 18 | ||||
-rw-r--r-- | lib/tsan/rtl/Makefile.mk | 25 | ||||
-rw-r--r-- | lib/ubsan/Makefile.mk | 26 | ||||
-rw-r--r-- | make/platform/clang_darwin.mk | 58 | ||||
-rw-r--r-- | make/platform/clang_linux.mk | 75 |
13 files changed, 365 insertions, 9 deletions
diff --git a/lib/Makefile.mk b/lib/Makefile.mk index dc7695db3..ed9690d46 100644 --- a/lib/Makefile.mk +++ b/lib/Makefile.mk @@ -10,5 +10,13 @@ SubDirs := # Add submodules. +SubDirs += asan SubDirs += builtins +SubDirs += dfsan +SubDirs += interception +SubDirs += lsan +SubDirs += msan SubDirs += profile +SubDirs += sanitizer_common +SubDirs += tsan +SubDirs += ubsan diff --git a/lib/asan/Makefile.mk b/lib/asan/Makefile.mk new file mode 100644 index 000000000..0dafefc2f --- /dev/null +++ b/lib/asan/Makefile.mk @@ -0,0 +1,29 @@ +#===- lib/asan/Makefile.mk ---------------------------------*- Makefile -*--===# +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +#===------------------------------------------------------------------------===# + +ModuleName := asan +SubDirs := + +CCSources := $(foreach file,$(wildcard $(Dir)/*.cc),$(notdir $(file))) +CXXOnlySources := asan_new_delete.cc +COnlySources := $(filter-out $(CXXOnlySources),$(CCSources)) +SSources := $(foreach file,$(wildcard $(Dir)/*.S),$(notdir $(file))) +Sources := $(CCSources) $(SSources) +ObjNames := $(CCSources:%.cc=%.o) $(SSources:%.S=%.o) + +Implementation := Generic + +# FIXME: use automatic dependencies? +Dependencies := $(wildcard $(Dir)/*.h) +Dependencies += $(wildcard $(Dir)/../interception/*.h) +Dependencies += $(wildcard $(Dir)/../sanitizer_common/*.h) + +# Define a convenience variable for all the asan functions. +AsanFunctions := $(COnlySources:%.cc=%) $(SSources:%.S=%) +AsanCXXFunctions := $(CXXOnlySources:%.cc=%) diff --git a/lib/asan/README.txt b/lib/asan/README.txt index f89551417..b9c43acd5 100644 --- a/lib/asan/README.txt +++ b/lib/asan/README.txt @@ -1,9 +1,11 @@ AddressSanitizer RT ================================ -This directory contains sources of the AddressSanitizer (ASan) runtime library. +This directory contains sources of the AddressSanitizer (asan) runtime library. +We are in the process of integrating AddressSanitizer with LLVM, stay tuned. Directory structure: README.txt : This file. +Makefile.mk : File for make-based build. CMakeLists.txt : File for cmake-based build. asan_*.{cc,h} : Sources of the asan runtime library. scripts/* : Helper scripts. @@ -11,13 +13,14 @@ tests/* : ASan unit tests. Also ASan runtime needs the following libraries: lib/interception/ : Machinery used to intercept function calls. -lib/sanitizer_common/ : Code shared between various sanitizers. +lib/sanitizer_common/ : Code shared between ASan and TSan. -ASan runtime currently also embeds part of LeakSanitizer runtime for -leak detection (lib/lsan/lsan_common.{cc,h}). +Currently ASan runtime can be built by both make and cmake build systems. +(see compiler-rt/make and files Makefile.mk for make-based build and +files CMakeLists.txt for cmake-based build). -ASan runtime can only be built by CMake. You can run ASan tests -from the root of your CMake build tree: +ASan unit and output tests work only with cmake. You may run this +command from the root of your cmake build tree: make check-asan diff --git a/lib/dfsan/Makefile.mk b/lib/dfsan/Makefile.mk new file mode 100644 index 000000000..4aeaac42d --- /dev/null +++ b/lib/dfsan/Makefile.mk @@ -0,0 +1,23 @@ +#===- lib/dfsan/Makefile.mk --------------------------------*- Makefile -*--===# +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +#===------------------------------------------------------------------------===# + +ModuleName := dfsan +SubDirs := + +Sources := $(foreach file,$(wildcard $(Dir)/*.cc),$(notdir $(file))) +ObjNames := $(Sources:%.cc=%.o) + +Implementation := Generic + +# FIXME: use automatic dependencies? +Dependencies := $(wildcard $(Dir)/*.h) +Dependencies += $(wildcard $(Dir)/../sanitizer_common/*.h) + +# Define a convenience variable for all the dfsan functions. +DfsanFunctions := $(Sources:%.cc=%) diff --git a/lib/interception/Makefile.mk b/lib/interception/Makefile.mk new file mode 100644 index 000000000..88aa6cbc2 --- /dev/null +++ b/lib/interception/Makefile.mk @@ -0,0 +1,23 @@ +#===- lib/interception/Makefile.mk -------------------------*- Makefile -*--===# +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +#===------------------------------------------------------------------------===# + +ModuleName := interception +SubDirs := + +Sources := $(foreach file,$(wildcard $(Dir)/*.cc),$(notdir $(file))) +ObjNames := $(Sources:%.cc=%.o) + +Implementation := Generic + +# FIXME: use automatic dependencies? +Dependencies := $(wildcard $(Dir)/*.h) +Dependencies += $(wildcard $(Dir)/../sanitizer_common/*.h) + +# Define a convenience variable for all the interception functions. +InterceptionFunctions := $(Sources:%.cc=%) diff --git a/lib/lsan/Makefile.mk b/lib/lsan/Makefile.mk new file mode 100644 index 000000000..2a6b41c98 --- /dev/null +++ b/lib/lsan/Makefile.mk @@ -0,0 +1,28 @@ +#===- lib/lsan/Makefile.mk ---------------------------------*- Makefile -*--===# +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +#===------------------------------------------------------------------------===# + +ModuleName := lsan +SubDirs := + +Sources := $(foreach file,$(wildcard $(Dir)/*.cc),$(notdir $(file))) +ObjNames := $(Sources:%.cc=%.o) + +Implementation := Generic + +# FIXME: use automatic dependencies? +Dependencies := $(wildcard $(Dir)/*.h) +Dependencies += $(wildcard $(Dir)/../interception/*.h) +Dependencies += $(wildcard $(Dir)/../sanitizer_common/*.h) + +# Define a convenience variable for all the lsan functions. +LsanFunctions := $(Sources:%.cc=%) + +# lsan functions used in another sanitizers. +LsanCommonSources := $(foreach file,$(wildcard $(Dir)/lsan_common*.cc),$(notdir $(file))) +LsanCommonFunctions := $(LsanCommonSources:%.cc=%) diff --git a/lib/msan/Makefile.mk b/lib/msan/Makefile.mk new file mode 100644 index 000000000..99e3b036e --- /dev/null +++ b/lib/msan/Makefile.mk @@ -0,0 +1,24 @@ +#===- lib/msan/Makefile.mk ---------------------------------*- Makefile -*--===# +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +#===------------------------------------------------------------------------===# + +ModuleName := msan +SubDirs := + +Sources := $(foreach file,$(wildcard $(Dir)/*.cc),$(notdir $(file))) +ObjNames := $(Sources:%.cc=%.o) + +Implementation := Generic + +# FIXME: use automatic dependencies? +Dependencies := $(wildcard $(Dir)/*.h) +Dependencies += $(wildcard $(Dir)/../interception/*.h) +Dependencies += $(wildcard $(Dir)/../sanitizer_common/*.h) + +# Define a convenience variable for all the msan functions. +MsanFunctions := $(Sources:%.cc=%) diff --git a/lib/sanitizer_common/Makefile.mk b/lib/sanitizer_common/Makefile.mk new file mode 100644 index 000000000..da83c2d6b --- /dev/null +++ b/lib/sanitizer_common/Makefile.mk @@ -0,0 +1,22 @@ +#===- lib/sanitizer_common/Makefile.mk ---------------------*- Makefile -*--===# +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +#===------------------------------------------------------------------------===# + +ModuleName := sanitizer_common +SubDirs := + +Sources := $(foreach file,$(wildcard $(Dir)/*.cc),$(notdir $(file))) +ObjNames := $(Sources:%.cc=%.o) + +Implementation := Generic + +# FIXME: use automatic dependencies? +Dependencies := $(wildcard $(Dir)/*.h) + +# Define a convenience variable for all the sanitizer_common functions. +SanitizerCommonFunctions := $(Sources:%.cc=%) diff --git a/lib/tsan/Makefile.mk b/lib/tsan/Makefile.mk new file mode 100644 index 000000000..70fb610bd --- /dev/null +++ b/lib/tsan/Makefile.mk @@ -0,0 +1,18 @@ +#===- lib/tsan/Makefile.mk ---------------------------------*- Makefile -*--===# +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +#===------------------------------------------------------------------------===# + +ModuleName := tsan +SubDirs := rtl +Sources := +ObjNames := +Dependencies := + +Implementation := Generic + +TsanFunctions := diff --git a/lib/tsan/rtl/Makefile.mk b/lib/tsan/rtl/Makefile.mk new file mode 100644 index 000000000..2687123f7 --- /dev/null +++ b/lib/tsan/rtl/Makefile.mk @@ -0,0 +1,25 @@ +#===- lib/tsan/rtl/Makefile.mk -----------------------------*- Makefile -*--===# +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +#===------------------------------------------------------------------------===# + +ModuleName := tsan +SubDirs := + +Sources := $(foreach file,$(wildcard $(Dir)/*.cc),$(notdir $(file))) +AsmSources := $(foreach file,$(wildcard $(Dir)/*.S),$(notdir $(file))) +ObjNames := $(Sources:%.cc=%.o) $(AsmSources:%.S=%.o) + +Implementation := Generic + +# FIXME: use automatic dependencies? +Dependencies := $(wildcard $(Dir)/*.h) +Dependencies += $(wildcard $(Dir)/../../interception/*.h) +Dependencies += $(wildcard $(Dir)/../../sanitizer_common/*.h) + +# Define a convenience variable for all the tsan functions. +TsanFunctions += $(Sources:%.cc=%) $(AsmSources:%.S=%) diff --git a/lib/ubsan/Makefile.mk b/lib/ubsan/Makefile.mk new file mode 100644 index 000000000..d5561f41b --- /dev/null +++ b/lib/ubsan/Makefile.mk @@ -0,0 +1,26 @@ +#===- lib/ubsan/Makefile.mk ---------------------------------*- Makefile -*--===# +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +#===------------------------------------------------------------------------===# + +ModuleName := ubsan +SubDirs := + +Sources := $(foreach file,$(wildcard $(Dir)/*.cc),$(notdir $(file))) +CXXSources := ubsan_type_hash.cc ubsan_handlers_cxx.cc +CSources := $(filter-out $(CXXSources),$(Sources)) +ObjNames := $(Sources:%.cc=%.o) + +Implementation := Generic + +# FIXME: use automatic dependencies? +Dependencies := $(wildcard $(Dir)/*.h) +Dependencies += $(wildcard $(Dir)/../sanitizer_common/*.h) + +# Define a convenience variable for all the ubsan functions. +UbsanFunctions := $(CSources:%.cc=%) +UbsanCXXFunctions := $(CXXSources:%.cc=%) diff --git a/make/platform/clang_darwin.mk b/make/platform/clang_darwin.mk index cf7e418a6..4f71c0b46 100644 --- a/make/platform/clang_darwin.mk +++ b/make/platform/clang_darwin.mk @@ -112,6 +112,16 @@ Configs += profile_ios UniversalArchs.profile_ios := $(call CheckArches,i386 x86_64,profile_ios,$(IOSSIM_SDK)) UniversalArchs.profile_ios += $(call CheckArches,armv7 arm64,profile_ios,$(IOS_SDK)) +# Configurations which define the ASAN support functions. +Configs += asan_osx_dynamic +UniversalArchs.asan_osx_dynamic := $(call CheckArches,i386 x86_64 x86_64h,asan_osx_dynamic,$(OSX_SDK)) + +Configs += asan_iossim_dynamic +UniversalArchs.asan_iossim_dynamic := $(call CheckArches,i386 x86_64,asan_iossim_dynamic,$(IOSSIM_SDK)) + +Configs += ubsan_osx +UniversalArchs.ubsan_osx := $(call CheckArches,i386 x86_64 x86_64h,ubsan_osx,$(OSX_SDK)) + # Darwin 10.6 has a bug in cctools that makes it unable to use ranlib on our ARM # object files. If we are on that platform, strip out all ARM archs. We still # build the libraries themselves so that Clang can find them where it expects @@ -162,6 +172,27 @@ IOSSIM_DEPLOYMENT_ARGS += -isysroot $(IOSSIM_SDK) CFLAGS.eprintf := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS) CFLAGS.10.4 := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS) +CFLAGS.asan_osx_dynamic := \ + $(CFLAGS) -mmacosx-version-min=10.7 \ + -stdlib=libc++ \ + -isysroot $(OSX_SDK) \ + -fno-builtin \ + -gline-tables-only \ + -DMAC_INTERPOSE_FUNCTIONS=1 \ + -DASAN_DYNAMIC=1 + +CFLAGS.asan_iossim_dynamic := \ + $(CFLAGS) -mios-simulator-version-min=7.0 \ + -isysroot $(IOSSIM_SDK) \ + -fno-builtin \ + -gline-tables-only \ + -DMAC_INTERPOSE_FUNCTIONS=1 \ + -DASAN_DYNAMIC=1 + +CFLAGS.ubsan_osx := $(CFLAGS) -mmacosx-version-min=10.6 \ + -isysroot $(OSX_SDK) \ + -fno-builtin + CFLAGS.ios.i386 := $(CFLAGS) $(IOSSIM_DEPLOYMENT_ARGS) CFLAGS.ios.x86_64 := $(CFLAGS) $(IOSSIM_DEPLOYMENT_ARGS) CFLAGS.ios.armv7 := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS) @@ -191,6 +222,20 @@ CFLAGS.profile_ios.armv7k := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS) CFLAGS.profile_ios.armv7s := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS) CFLAGS.profile_ios.arm64 := $(CFLAGS) $(IOS6_DEPLOYMENT_ARGS) +# Configure the asan_osx_dynamic library to be built shared. +SHARED_LIBRARY.asan_osx_dynamic := 1 +LDFLAGS.asan_osx_dynamic := -lc++ -undefined dynamic_lookup -install_name @rpath/libclang_rt.asan_osx_dynamic.dylib \ + -mmacosx-version-min=10.7 \ + -isysroot $(OSX_SDK) + +# Configure the asan_iossim_dynamic library to be built shared. +SHARED_LIBRARY.asan_iossim_dynamic := 1 +# configure+make uses Clang, so we're using isysroot instead of --sysroot +# or -Wl,-syslibroot. +LDFLAGS.asan_iossim_dynamic := -undefined dynamic_lookup -install_name @rpath/libclang_rt.asan_iossim_dynamic.dylib \ + -Wl,-ios_simulator_version_min,7.0.0 \ + -mios-simulator-version-min=7.0 -isysroot $(IOSSIM_SDK) + FUNCTIONS.eprintf := eprintf FUNCTIONS.10.4 := eprintf floatundidf floatundisf floatundixf @@ -208,6 +253,19 @@ FUNCTIONS.profile_osx := GCDAProfiling InstrProfiling InstrProfilingBuffer \ InstrProfilingRuntime FUNCTIONS.profile_ios := $(FUNCTIONS.profile_osx) +FUNCTIONS.asan_osx_dynamic := $(AsanFunctions) $(AsanCXXFunctions) \ + $(InterceptionFunctions) \ + $(SanitizerCommonFunctions) \ + $(AsanDynamicFunctions) + +FUNCTIONS.asan_iossim_dynamic := $(AsanFunctions) $(AsanCXXFunctions) \ + $(InterceptionFunctions) \ + $(SanitizerCommonFunctions) \ + $(AsanDynamicFunctions) + +FUNCTIONS.ubsan_osx := $(UbsanFunctions) $(UbsanCXXFunctions) \ + $(SanitizerCommonFunctions) + CCKEXT_PROFILE_FUNCTIONS := \ InstrProfiling \ InstrProfilingBuffer \ diff --git a/make/platform/clang_linux.mk b/make/platform/clang_linux.mk index cb023f3db..fc4405734 100644 --- a/make/platform/clang_linux.mk +++ b/make/platform/clang_linux.mk @@ -49,34 +49,80 @@ endif # Build runtime libraries for i386. ifeq ($(call contains,$(SupportedArches),i386),true) -Configs += builtins-i386 profile-i386 +Configs += builtins-i386 profile-i386 san-i386 asan-i386 asan_cxx-i386 \ + ubsan-i386 ubsan_cxx-i386 Arch.builtins-i386 := i386 Arch.profile-i386 := i386 +Arch.san-i386 := i386 +Arch.asan-i386 := i386 +Arch.asan_cxx-i386 := i386 +Arch.ubsan-i386 := i386 +Arch.ubsan_cxx-i386 := i386 endif # Build runtime libraries for x86_64. ifeq ($(call contains,$(SupportedArches),x86_64),true) -Configs += builtins-x86_64 profile-x86_64 +Configs += builtins-x86_64 profile-x86_64 san-x86_64 asan-x86_64 asan_cxx-x86_64 \ + tsan-x86_64 msan-x86_64 ubsan-x86_64 ubsan_cxx-x86_64 dfsan-x86_64 \ + lsan-x86_64 Arch.builtins-x86_64 := x86_64 Arch.profile-x86_64 := x86_64 +Arch.san-x86_64 := x86_64 +Arch.asan-x86_64 := x86_64 +Arch.asan_cxx-x86_64 := x86_64 +Arch.tsan-x86_64 := x86_64 +Arch.msan-x86_64 := x86_64 +Arch.ubsan-x86_64 := x86_64 +Arch.ubsan_cxx-x86_64 := x86_64 +Arch.dfsan-x86_64 := x86_64 +Arch.lsan-x86_64 := x86_64 endif endif +ifneq ($(LLVM_ANDROID_TOOLCHAIN_DIR),) +Configs += asan-arm-android +Arch.asan-arm-android := arm-android +endif + endif ### CFLAGS := -Wall -Werror -O3 -fomit-frame-pointer +SANITIZER_CFLAGS := -fPIE -fno-builtin -gline-tables-only CFLAGS.builtins-i386 := $(CFLAGS) -m32 CFLAGS.builtins-x86_64 := $(CFLAGS) -m64 CFLAGS.profile-i386 := $(CFLAGS) -m32 CFLAGS.profile-x86_64 := $(CFLAGS) -m64 +CFLAGS.san-i386 := $(CFLAGS) -m32 $(SANITIZER_CFLAGS) -fno-rtti +CFLAGS.san-x86_64 := $(CFLAGS) -m64 $(SANITIZER_CFLAGS) -fno-rtti +CFLAGS.asan-i386 := $(CFLAGS) -m32 $(SANITIZER_CFLAGS) -fno-rtti +CFLAGS.asan-x86_64 := $(CFLAGS) -m64 $(SANITIZER_CFLAGS) -fno-rtti +CFLAGS.asan_cxx-i386 := $(CFLAGS) -m32 $(SANITIZER_CFLAGS) -fno-rtti +CFLAGS.asan_cxx-x86_64 := $(CFLAGS) -m64 $(SANITIZER_CFLAGS) -fno-rtti +CFLAGS.tsan-x86_64 := $(CFLAGS) -m64 $(SANITIZER_CFLAGS) -fno-rtti +CFLAGS.msan-x86_64 := $(CFLAGS) -m64 $(SANITIZER_CFLAGS) -fno-rtti +CFLAGS.ubsan-i386 := $(CFLAGS) -m32 $(SANITIZER_CFLAGS) -fno-rtti +CFLAGS.ubsan-x86_64 := $(CFLAGS) -m64 $(SANITIZER_CFLAGS) -fno-rtti +CFLAGS.ubsan_cxx-i386 := $(CFLAGS) -m32 $(SANITIZER_CFLAGS) +CFLAGS.ubsan_cxx-x86_64 := $(CFLAGS) -m64 $(SANITIZER_CFLAGS) +CFLAGS.dfsan-x86_64 := $(CFLAGS) -m64 $(SANITIZER_CFLAGS) -fno-rtti +CFLAGS.lsan-x86_64 := $(CFLAGS) -m64 $(SANITIZER_CFLAGS) -fno-rtti + +SHARED_LIBRARY.asan-arm-android := 1 +ANDROID_COMMON_FLAGS := -target arm-linux-androideabi \ + --sysroot=$(LLVM_ANDROID_TOOLCHAIN_DIR)/sysroot \ + -B$(LLVM_ANDROID_TOOLCHAIN_DIR) +CFLAGS.asan-arm-android := $(CFLAGS) $(SANITIZER_CFLAGS) \ + $(ANDROID_COMMON_FLAGS) -fno-rtti +LDFLAGS.asan-arm-android := $(LDFLAGS) $(ANDROID_COMMON_FLAGS) -ldl -lm -llog \ + -lstdc++ -Wl,-soname=libclang_rt.asan-arm-android.so -Wl,-z,defs # Use our stub SDK as the sysroot to support more portable building. For now we # just do this for the core module, because the stub SDK doesn't have -# enough support to build the profile runtime. +# enough support to build the sanitizers or profile runtimes. CFLAGS.builtins-i386 += --sysroot=$(ProjSrcRoot)/SDKs/linux CFLAGS.builtins-x86_64 += --sysroot=$(ProjSrcRoot)/SDKs/linux @@ -86,6 +132,29 @@ FUNCTIONS.profile-i386 := GCDAProfiling InstrProfiling InstrProfilingBuffer \ InstrProfilingFile InstrProfilingPlatformOther \ InstrProfilingRuntime FUNCTIONS.profile-x86_64 := $(FUNCTIONS.profile-i386) +FUNCTIONS.san-i386 := $(SanitizerCommonFunctions) +FUNCTIONS.san-x86_64 := $(SanitizerCommonFunctions) +FUNCTIONS.asan-i386 := $(AsanFunctions) $(InterceptionFunctions) \ + $(SanitizerCommonFunctions) +FUNCTIONS.asan-x86_64 := $(AsanFunctions) $(InterceptionFunctions) \ + $(SanitizerCommonFunctions) $(LsanCommonFunctions) +FUNCTIONS.asan_cxx-i386 := $(AsanCXXFunctions) +FUNCTIONS.asan_cxx-x86_64 := $(AsanCXXFunctions) +FUNCTIONS.asan-arm-android := $(AsanFunctions) $(AsanCXXFunctions) \ + $(InterceptionFunctions) \ + $(SanitizerCommonFunctions) +FUNCTIONS.tsan-x86_64 := $(TsanFunctions) $(InterceptionFunctions) \ + $(SanitizerCommonFunctions) +FUNCTIONS.msan-x86_64 := $(MsanFunctions) $(InterceptionFunctions) \ + $(SanitizerCommonFunctions) +FUNCTIONS.ubsan-i386 := $(UbsanFunctions) +FUNCTIONS.ubsan-x86_64 := $(UbsanFunctions) +FUNCTIONS.ubsan_cxx-i386 := $(UbsanCXXFunctions) +FUNCTIONS.ubsan_cxx-x86_64 := $(UbsanCXXFunctions) +FUNCTIONS.dfsan-x86_64 := $(DfsanFunctions) $(InterceptionFunctions) \ + $(SanitizerCommonFunctions) +FUNCTIONS.lsan-x86_64 := $(LsanFunctions) $(InterceptionFunctions) \ + $(SanitizerCommonFunctions) # Always use optimized variants. OPTIMIZED := 1 |