aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Albert <danalbert@google.com>2014-12-08 19:07:33 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2014-12-08 19:07:33 +0000
commite98755f9d6619ff141d099f9da655d141da72b8e (patch)
tree9c9e1bfcc90aedd6046b0ee34990c97c888f0788
parentcd814343e897ae8b6d19874163eec8d89c6ae37f (diff)
parent4ae5d4b331923ee837f0d6afd5605da0a49419c9 (diff)
downloadbuild-lollipop-wear-release.tar.gz
Merge "Add a SANITIZE_HOST flag."android-wear-5.0.0_r1lollipop-wear-release
-rw-r--r--core/binary.mk14
-rw-r--r--core/config_sanitizers.mk32
-rw-r--r--envsetup.sh6
3 files changed, 39 insertions, 13 deletions
diff --git a/core/binary.mk b/core/binary.mk
index 7fd7e3238c..752a5c36ea 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 0000000000..a1964a9a4a
--- /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 0e853fe17c..9a540ef8bc 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()