diff options
author | Dan Albert <danalbert@google.com> | 2014-12-08 19:07:33 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-12-08 19:07:33 +0000 |
commit | e98755f9d6619ff141d099f9da655d141da72b8e (patch) | |
tree | 9c9e1bfcc90aedd6046b0ee34990c97c888f0788 | |
parent | cd814343e897ae8b6d19874163eec8d89c6ae37f (diff) | |
parent | 4ae5d4b331923ee837f0d6afd5605da0a49419c9 (diff) | |
download | build-e98755f9d6619ff141d099f9da655d141da72b8e.zip build-e98755f9d6619ff141d099f9da655d141da72b8e.tar.gz build-e98755f9d6619ff141d099f9da655d141da72b8e.tar.bz2 |
Merge "Add a SANITIZE_HOST flag."
-rw-r--r-- | core/binary.mk | 14 | ||||
-rw-r--r-- | core/config_sanitizers.mk | 32 | ||||
-rw-r--r-- | envsetup.sh | 6 |
3 files changed, 39 insertions, 13 deletions
diff --git a/core/binary.mk b/core/binary.mk index 7fd7e32..752a5c3 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -191,19 +191,7 @@ $(foreach lib, $(LOCAL_HAL_STATIC_LIBRARIES), \ b_lib := endif -ifeq ($(strip $(LOCAL_ADDRESS_SANITIZER)),true) - my_clang := true - # Frame pointer based unwinder in ASan requires ARM frame setup. - LOCAL_ARM_MODE := arm - my_cflags += $(ADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS) - my_ldflags += $(ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS) - ifdef LOCAL_IS_HOST_MODULE - my_ldflags += -fsanitize=address - else - my_shared_libraries += $(ADDRESS_SANITIZER_CONFIG_EXTRA_SHARED_LIBRARIES) - my_static_libraries += $(ADDRESS_SANITIZER_CONFIG_EXTRA_STATIC_LIBRARIES) - endif -endif +include $(BUILD_SYSTEM)/config_sanitizers.mk ifeq ($(strip $($(LOCAL_2ND_ARCH_VAR_PREFIX)WITHOUT_$(my_prefix)CLANG)),true) my_clang := diff --git a/core/config_sanitizers.mk b/core/config_sanitizers.mk new file mode 100644 index 0000000..a1964a9 --- /dev/null +++ b/core/config_sanitizers.mk @@ -0,0 +1,32 @@ +############################################## +## Perform configuration steps for sanitizers. +############################################## + +# Configure SANITIZE_HOST. +ifdef LOCAL_IS_HOST_MODULE +ifeq ($(SANITIZE_HOST),true) +ifneq ($(strip $(LOCAL_CLANG)),false) +ifneq ($(strip $(LOCAL_ADDRESS_SANITIZER)),false) + LOCAL_ADDRESS_SANITIZER := true +endif +endif +endif +endif + +# Configure address sanitizer. +ifeq ($(strip $(LOCAL_ADDRESS_SANITIZER)),true) + my_clang := true + # Frame pointer based unwinder in ASan requires ARM frame setup. + LOCAL_ARM_MODE := arm + my_cflags += $(ADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS) + my_ldflags += $(ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS) + ifdef LOCAL_IS_HOST_MODULE + my_ldflags += -fsanitize=address + # -nodefaultlibs (provided with libc++) prevents the driver from linking + # libraries needed with -fsanitize=address. http://b/18650275 + my_ldlibs += -ldl -lpthread + else + my_shared_libraries += $(ADDRESS_SANITIZER_CONFIG_EXTRA_SHARED_LIBRARIES) + my_static_libraries += $(ADDRESS_SANITIZER_CONFIG_EXTRA_STATIC_LIBRARIES) + endif +endif diff --git a/envsetup.sh b/envsetup.sh index 0e853fe..9a540ef 100644 --- a/envsetup.sh +++ b/envsetup.sh @@ -17,6 +17,11 @@ Invoke ". build/envsetup.sh" from your shell to add the following functions to y - sgrep: Greps on all local source files. - godir: Go to the directory containing a file. +Environemnt options: +- SANITIZE_HOST: Set to 'true' to use ASAN for all host modules. Note that + ASAN_OPTIONS=detect_leaks=0 will be set by default until the + build is leak-check clean. + Look at the source to view more functions. The complete list is: EOF T=$(gettop) @@ -231,6 +236,7 @@ function set_stuff_for_environment() export ANDROID_BUILD_TOP=$(gettop) # With this environment variable new GCC can apply colors to warnings/errors export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + export ASAN_OPTIONS=detect_leaks=0 } function set_sequence_number() |