diff options
author | Evgeniy Stepanov <eugenis@google.com> | 2015-05-12 22:34:16 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-05-12 22:34:16 +0000 |
commit | 04cfb9e11306a778b92b4abae6946ebf096b0af5 (patch) | |
tree | 26a4c9d7ee77c1abc4d95e369547323d040db996 | |
parent | 480a9bb64e127bff863e6c357d3bd4c3dabfbb57 (diff) | |
parent | bdd8ca06044ebd31986cac62f18af42e87de3a54 (diff) | |
download | build-04cfb9e11306a778b92b4abae6946ebf096b0af5.zip build-04cfb9e11306a778b92b4abae6946ebf096b0af5.tar.gz build-04cfb9e11306a778b92b4abae6946ebf096b0af5.tar.bz2 |
Merge changes Idd0f477f,I937d2020,I3b95c868 into mnc-dev
* changes:
--no-as-needed needs -Wl.
Fix AddressSanitizer link order and multilib setup.
Make asan more closely match clang behavior.
-rw-r--r-- | core/clang/TARGET_arm.mk | 4 | ||||
-rw-r--r-- | core/clang/TARGET_arm64.mk | 4 | ||||
-rw-r--r-- | core/clang/config.mk | 4 | ||||
-rw-r--r-- | core/config_sanitizers.mk | 9 |
4 files changed, 16 insertions, 5 deletions
diff --git a/core/clang/TARGET_arm.mk b/core/clang/TARGET_arm.mk index 6f6d624..62ce242 100644 --- a/core/clang/TARGET_arm.mk +++ b/core/clang/TARGET_arm.mk @@ -66,3 +66,7 @@ $(clang_2nd_arch_prefix)RS_TRIPLE_CFLAGS := $(clang_2nd_arch_prefix)RS_COMPAT_TRIPLE := armv7-none-linux-gnueabi $(clang_2nd_arch_prefix)TARGET_LIBPROFILE_RT := $(LLVM_RTLIB_PATH)/libclang_rt.profile-arm-android.a + +# Address sanitizer clang config +$(clang_2nd_arch_prefix)ADDRESS_SANITIZER_RUNTIME_LIBRARY := libclang_rt.asan-arm-android +$(clang_2nd_arch_prefix)ADDRESS_SANITIZER_RPATH := /system/lib/asan diff --git a/core/clang/TARGET_arm64.mk b/core/clang/TARGET_arm64.mk index b67d458..ea4d937 100644 --- a/core/clang/TARGET_arm64.mk +++ b/core/clang/TARGET_arm64.mk @@ -64,3 +64,7 @@ RS_TRIPLE_CFLAGS := RS_COMPAT_TRIPLE := aarch64-linux-android TARGET_LIBPROFILE_RT := $(LLVM_RTLIB_PATH)/libclang_rt.profile-aarch64-android.a + +# Address sanitizer clang config +ADDRESS_SANITIZER_RUNTIME_LIBRARY := libclang_rt.asan-arm64-android +ADDRESS_SANITIZER_RPATH := /system/lib64/asan diff --git a/core/clang/config.mk b/core/clang/config.mk index 6da90ec..dfad7ec 100644 --- a/core/clang/config.mk +++ b/core/clang/config.mk @@ -149,12 +149,10 @@ clang_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX) include $(BUILD_SYSTEM)/clang/TARGET_$(TARGET_2ND_ARCH).mk endif -# Address sanitizer clang config -ADDRESS_SANITIZER_RUNTIME_LIBRARY := libclang_rt.asan_$(TARGET_ARCH)_android ADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS := -fno-omit-frame-pointer ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS := -Wl,-u,__asan_preinit -ADDRESS_SANITIZER_CONFIG_EXTRA_SHARED_LIBRARIES := libdl $(ADDRESS_SANITIZER_RUNTIME_LIBRARY) +ADDRESS_SANITIZER_CONFIG_EXTRA_SHARED_LIBRARIES := libdl ADDRESS_SANITIZER_CONFIG_EXTRA_STATIC_LIBRARIES := libasan # This allows us to use the superset of functionality that compiler-rt diff --git a/core/config_sanitizers.mk b/core/config_sanitizers.mk index 210d442..7eb1c89 100644 --- a/core/config_sanitizers.mk +++ b/core/config_sanitizers.mk @@ -78,10 +78,15 @@ ifneq ($(filter address,$(my_sanitize)),) ifdef LOCAL_IS_HOST_MODULE # -nodefaultlibs (provided with libc++) prevents the driver from linking # libraries needed with -fsanitize=address. http://b/18650275 (WAI) - my_ldlibs += -ldl -lpthread + my_ldlibs += -lm -ldl -lpthread + my_ldflags += -Wl,--no-as-needed else - my_shared_libraries += $(ADDRESS_SANITIZER_CONFIG_EXTRA_SHARED_LIBRARIES) + # ASan runtime library must be the first in the link order. + my_shared_libraries := $($(LOCAL_2ND_ARCH_VAR_PREFIX)ADDRESS_SANITIZER_RUNTIME_LIBRARY) \ + $(my_shared_libraries) \ + $(ADDRESS_SANITIZER_CONFIG_EXTRA_SHARED_LIBRARIES) my_static_libraries += $(ADDRESS_SANITIZER_CONFIG_EXTRA_STATIC_LIBRARIES) + my_ldflags += -Wl,-rpath,$($(LOCAL_2ND_ARCH_VAR_PREFIX)ADDRESS_SANITIZER_RPATH) endif endif |