Android.mk revision e48a197f5e2c72c350de60486fc6ef9c5ba3c681
1# 2# Copyright (C) 2012 The Android Open Source Project 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15# 16# 17 18LOCAL_PATH:= $(call my-dir) 19 20ifeq ($(TARGET_ARCH),arm) 21 22ASAN_NEEDS_SEGV=0 23ASAN_HAS_EXCEPTIONS=1 24ASAN_FLEXIBLE_MAPPING_AND_OFFSET=0 25 26asan_rtl_files := \ 27 asan_rtl.cc \ 28 asan_allocator.cc \ 29 asan_globals.cc \ 30 asan_interceptors.cc \ 31 asan_linux.cc \ 32 asan_malloc_linux.cc \ 33 asan_malloc_mac.cc \ 34 asan_poisoning.cc \ 35 asan_posix.cc \ 36 asan_printf.cc \ 37 asan_stack.cc \ 38 asan_stats.cc \ 39 asan_thread.cc \ 40 asan_thread_registry.cc \ 41 interception/interception_linux.cc 42 43asan_rtl_cflags := \ 44 -fvisibility=hidden \ 45 -fno-exceptions \ 46 -DASAN_LOW_MEMORY=1 \ 47 -DASAN_NEEDS_SEGV=$(ASAN_NEEDS_SEGV) \ 48 -DASAN_HAS_EXCEPTIONS=$(ASAN_HAS_EXCEPTIONS) \ 49 -DASAN_FLEXIBLE_MAPPING_AND_OFFSET=$(ASAN_FLEXIBLE_MAPPING_AND_OFFSET) \ 50 -Wno-covered-switch-default \ 51 -Wno-sign-compare \ 52 -Wno-unused-parameter \ 53 -D__WORDSIZE=32 54 55asan_test_files := \ 56 tests/asan_test.cc \ 57 tests/asan_globals_test.cc \ 58 tests/asan_break_optimization.cc \ 59 tests/asan_interface_test.cc 60 61asan_test_cflags := \ 62 -mllvm -asan-blacklist=external/compiler-rt/lib/asan/tests/asan_test.ignore \ 63 -DASAN_LOW_MEMORY=1 \ 64 -DASAN_UAR=0 \ 65 -DASAN_NEEDS_SEGV=$(ASAN_NEEDS_SEGV) \ 66 -DASAN_HAS_EXCEPTIONS=$(ASAN_HAS_EXCEPTIONS) \ 67 -DASAN_HAS_BLACKLIST=1 \ 68 -Wno-covered-switch-default \ 69 -Wno-sign-compare \ 70 -Wno-unused-parameter \ 71 -D__WORDSIZE=32 72 73 74include $(CLEAR_VARS) 75 76LOCAL_MODULE := libasan 77LOCAL_MODULE_TAGS := optional 78LOCAL_C_INCLUDES := bionic 79LOCAL_CFLAGS += $(asan_rtl_cflags) 80LOCAL_SRC_FILES := asan_android_stub.cc 81LOCAL_CPP_EXTENSION := .cc 82LOCAL_CLANG := true 83include $(BUILD_STATIC_LIBRARY) 84 85 86include $(CLEAR_VARS) 87 88LOCAL_MODULE := libasan_preload 89LOCAL_MODULE_TAGS := eng 90LOCAL_C_INCLUDES := bionic 91LOCAL_CFLAGS += $(asan_rtl_cflags) 92LOCAL_SRC_FILES := $(asan_rtl_files) 93LOCAL_CPP_EXTENSION := .cc 94LOCAL_SHARED_LIBRARIES := libc libstlport libdl 95LOCAL_CLANG := true 96include $(BUILD_SHARED_LIBRARY) 97 98 99include $(CLEAR_VARS) 100 101LOCAL_MODULE := asanwrapper 102LOCAL_MODULE_TAGS := eng 103LOCAL_C_INCLUDES := \ 104 bionic \ 105 external/stlport/stlport 106LOCAL_SRC_FILES := asanwrapper.cc 107LOCAL_CPP_EXTENSION := .cc 108LOCAL_SHARED_LIBRARIES := libstlport libc 109 110include $(BUILD_EXECUTABLE) 111 112 113include $(CLEAR_VARS) 114 115LOCAL_MODULE := libasan_noinst_test 116LOCAL_MODULE_TAGS := tests 117LOCAL_C_INCLUDES := \ 118 bionic \ 119 external/stlport/stlport \ 120 external/gtest/include 121LOCAL_CFLAGS += \ 122 -Wno-unused-parameter \ 123 -Wno-sign-compare \ 124 -D__WORDSIZE=32 125LOCAL_SRC_FILES := tests/asan_noinst_test.cc 126LOCAL_CPP_EXTENSION := .cc 127LOCAL_CLANG := true 128include $(BUILD_STATIC_LIBRARY) 129 130 131include $(CLEAR_VARS) 132 133LOCAL_MODULE := asan_test 134LOCAL_MODULE_TAGS := tests 135LOCAL_C_INCLUDES := \ 136 bionic \ 137 external/stlport/stlport \ 138 external/gtest/include 139LOCAL_CFLAGS += $(asan_test_cflags) 140LOCAL_SRC_FILES := $(asan_test_files) 141LOCAL_CPP_EXTENSION := .cc 142LOCAL_STATIC_LIBRARIES := libgtest libasan_noinst_test 143LOCAL_SHARED_LIBRARIES := libc libstlport 144LOCAL_ADDRESS_SANITIZER := true 145 146include $(BUILD_EXECUTABLE) 147 148# Build output tests for AddressSanitizer. 149 150define asan-output-test 151 include $(CLEAR_VARS) 152 LOCAL_MODULE := $(1) 153 LOCAL_MODULE_PATH := $(TARGET_OUT_EXECUTABLES)/asan 154 LOCAL_MODULE_TAGS := tests 155 LOCAL_SRC_FILES := output_tests/$(1).cc 156 LOCAL_CPP_EXTENSION := .cc 157 LOCAL_ADDRESS_SANITIZER := true 158 LOCAL_C_INCLUDES := bionic external/stlport/stlport 159 LOCAL_CFLAGS := -Wno-unused-parameter 160 LOCAL_SHARED_LIBRARIES := libstlport 161 include $(BUILD_EXECUTABLE) 162endef 163 164define asan-output-test-so 165 include $(CLEAR_VARS) 166 LOCAL_MODULE := $(1) 167 LOCAL_MODULE_TAGS := tests 168 LOCAL_MODULE_PATH := $(TARGET_OUT_EXECUTABLES)/asan 169 LOCAL_SRC_FILES := output_tests/$(1).cc 170 LOCAL_CPP_EXTENSION := .cc 171 LOCAL_ADDRESS_SANITIZER := true 172 LOCAL_C_INCLUDES := bionic external/stlport/stlport 173 LOCAL_CFLAGS := -Wno-unused-parameter 174 LOCAL_SHARED_LIBRARIES := libstlport 175 include $(BUILD_SHARED_LIBRARY) 176endef 177 178OUTPUT_TESTS := \ 179 clone_test \ 180 deep_tail_call \ 181 dlclose-test \ 182 dlclose-test-so \ 183 global-overflow \ 184 heap-overflow \ 185 large_func_test \ 186 null_deref \ 187 shared-lib-test \ 188 shared-lib-test-so \ 189 stack-overflow \ 190 strncpy-overflow \ 191 use-after-free 192 193$(foreach test,$(filter %-so,$(OUTPUT_TESTS)),$(eval $(call asan-output-test-so,$(test)))) 194$(foreach test,$(filter-out %-so,$(OUTPUT_TESTS)),$(eval $(call asan-output-test,$(test)))) 195 196endif # ifeq($(TARGET_ARCH),arm) 197