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_activation.cc \ 28 asan_allocator2.cc \ 29 asan_fake_stack.cc \ 30 asan_globals.cc \ 31 asan_interceptors.cc \ 32 asan_linux.cc \ 33 asan_mac.cc \ 34 asan_malloc_linux.cc \ 35 asan_malloc_mac.cc \ 36 asan_malloc_win.cc \ 37 asan_new_delete.cc \ 38 asan_poisoning.cc \ 39 asan_posix.cc \ 40 asan_report.cc \ 41 asan_rtl.cc \ 42 asan_stack.cc \ 43 asan_stats.cc \ 44 asan_thread.cc \ 45 asan_win.cc \ 46 ../interception/interception_linux.cc \ 47 ../sanitizer_common/sanitizer_allocator.cc \ 48 ../sanitizer_common/sanitizer_common.cc \ 49 ../sanitizer_common/sanitizer_common_libcdep.cc \ 50 ../sanitizer_common/sanitizer_coverage_libcdep.cc \ 51 ../sanitizer_common/sanitizer_coverage_mapping_libcdep.cc \ 52 ../sanitizer_common/sanitizer_deadlock_detector1.cc \ 53 ../sanitizer_common/sanitizer_deadlock_detector2.cc \ 54 ../sanitizer_common/sanitizer_flags.cc \ 55 ../sanitizer_common/sanitizer_libc.cc \ 56 ../sanitizer_common/sanitizer_libignore.cc \ 57 ../sanitizer_common/sanitizer_linux.cc \ 58 ../sanitizer_common/sanitizer_linux_libcdep.cc \ 59 ../sanitizer_common/sanitizer_mac.cc \ 60 ../sanitizer_common/sanitizer_persistent_allocator.cc \ 61 ../sanitizer_common/sanitizer_platform_limits_linux.cc \ 62 ../sanitizer_common/sanitizer_platform_limits_posix.cc \ 63 ../sanitizer_common/sanitizer_posix.cc \ 64 ../sanitizer_common/sanitizer_posix_libcdep.cc \ 65 ../sanitizer_common/sanitizer_printf.cc \ 66 ../sanitizer_common/sanitizer_procmaps_linux.cc \ 67 ../sanitizer_common/sanitizer_procmaps_mac.cc \ 68 ../sanitizer_common/sanitizer_stackdepot.cc \ 69 ../sanitizer_common/sanitizer_stacktrace.cc \ 70 ../sanitizer_common/sanitizer_stacktrace_libcdep.cc \ 71 ../sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc \ 72 ../sanitizer_common/sanitizer_suppressions.cc \ 73 ../sanitizer_common/sanitizer_symbolizer.cc \ 74 ../sanitizer_common/sanitizer_symbolizer_libbacktrace.cc \ 75 ../sanitizer_common/sanitizer_symbolizer_libcdep.cc \ 76 ../sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc \ 77 ../sanitizer_common/sanitizer_symbolizer_win.cc \ 78 ../sanitizer_common/sanitizer_thread_registry.cc \ 79 ../sanitizer_common/sanitizer_tls_get_addr.cc \ 80 ../sanitizer_common/sanitizer_win.cc 81 82asan_rtl_cflags := \ 83 -fvisibility=hidden \ 84 -fno-exceptions \ 85 -DASAN_LOW_MEMORY=1 \ 86 -DASAN_NEEDS_SEGV=$(ASAN_NEEDS_SEGV) \ 87 -DASAN_HAS_EXCEPTIONS=$(ASAN_HAS_EXCEPTIONS) \ 88 -DASAN_FLEXIBLE_MAPPING_AND_OFFSET=$(ASAN_FLEXIBLE_MAPPING_AND_OFFSET) \ 89 -Wno-covered-switch-default \ 90 -Wno-non-virtual-dtor \ 91 -Wno-sign-compare \ 92 -Wno-unused-parameter \ 93 -D__WORDSIZE=32 94 95asan_test_files := \ 96 tests/asan_globals_test.cc \ 97 tests/asan_test.cc 98 99#tests/asan_noinst_test.cc \ 100#tests/asan_test_main.cc \ 101 102asan_test_cflags := \ 103 -fsanitize-blacklist=external/compiler-rt/lib/asan/tests/asan_test.ignore \ 104 -DASAN_LOW_MEMORY=1 \ 105 -DASAN_UAR=0 \ 106 -DASAN_NEEDS_SEGV=$(ASAN_NEEDS_SEGV) \ 107 -DASAN_HAS_EXCEPTIONS=$(ASAN_HAS_EXCEPTIONS) \ 108 -DASAN_HAS_BLACKLIST=1 \ 109 -Wno-covered-switch-default \ 110 -Wno-non-virtual-dtor \ 111 -Wno-sign-compare \ 112 -Wno-unused-parameter \ 113 -D__WORDSIZE=32 \ 114 -std=c++11 115 116 117include $(CLEAR_VARS) 118 119LOCAL_MODULE := libasan 120LOCAL_MODULE_TAGS := optional 121LOCAL_C_INCLUDES := bionic external/compiler-rt/lib external/compiler-rt/include 122LOCAL_CFLAGS += $(asan_rtl_cflags) 123LOCAL_SRC_FILES := asan_preinit.cc 124#LOCAL_SRC_FILES := asan_android_stub.cc asan_preinit.cc 125LOCAL_CPP_EXTENSION := .cc 126LOCAL_CLANG := true 127LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 128include $(BUILD_STATIC_LIBRARY) 129 130 131include $(CLEAR_VARS) 132 133LOCAL_MODULE := $(ADDRESS_SANITIZER_RUNTIME_LIBRARY) 134LOCAL_MODULE_TAGS := eng 135LOCAL_C_INCLUDES := \ 136 bionic \ 137 external/compiler-rt/lib \ 138 external/compiler-rt/include 139LOCAL_CFLAGS += $(asan_rtl_cflags) 140LOCAL_SRC_FILES := $(asan_rtl_files) 141LOCAL_CPP_EXTENSION := .cc 142LOCAL_SHARED_LIBRARIES := liblog libc libdl 143LOCAL_CLANG := true 144LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 145include $(BUILD_SHARED_LIBRARY) 146 147 148include $(CLEAR_VARS) 149 150LOCAL_MODULE := asanwrapper 151LOCAL_MODULE_TAGS := eng 152LOCAL_C_INCLUDES := \ 153 bionic 154LOCAL_SRC_FILES := asanwrapper.cc 155LOCAL_CPP_EXTENSION := .cc 156LOCAL_SHARED_LIBRARIES += libc 157LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 158include external/libcxx/libcxx.mk 159 160include $(BUILD_EXECUTABLE) 161 162 163include $(CLEAR_VARS) 164 165LOCAL_MODULE := libasan_noinst_test 166LOCAL_MODULE_TAGS := tests 167LOCAL_C_INCLUDES := \ 168 bionic \ 169 external/gtest/include \ 170 external/compiler-rt/include \ 171 external/compiler-rt/lib \ 172 external/compiler-rt/lib/asan/tests \ 173 external/compiler-rt/lib/sanitizer_common/tests 174LOCAL_CFLAGS += \ 175 -Wno-unused-parameter \ 176 -Wno-sign-compare \ 177 -DASAN_UAR=0 \ 178 -DASAN_HAS_BLACKLIST=1 \ 179 -DASAN_HAS_EXCEPTIONS=$(ASAN_HAS_EXCEPTIONS) \ 180 -DASAN_NEEDS_SEGV=$(ASAN_NEEDS_SEGV) \ 181 -D__WORDSIZE=32 182LOCAL_SRC_FILES := tests/asan_noinst_test.cc tests/asan_test_main.cc 183LOCAL_CPP_EXTENSION := .cc 184LOCAL_CLANG := true 185LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 186include external/libcxx/libcxx.mk 187 188include $(BUILD_STATIC_LIBRARY) 189 190 191include $(CLEAR_VARS) 192 193LOCAL_MODULE := asan_test 194LOCAL_MODULE_TAGS := tests 195LOCAL_C_INCLUDES := \ 196 bionic \ 197 external/gtest/include \ 198 external/compiler-rt/lib \ 199 external/compiler-rt/lib/asan/tests \ 200 external/compiler-rt/lib/sanitizer_common/tests 201LOCAL_CFLAGS += $(asan_test_cflags) 202LOCAL_SRC_FILES := $(asan_test_files) 203LOCAL_CPP_EXTENSION := .cc 204LOCAL_STATIC_LIBRARIES := libgtest_libc++ libasan_noinst_test 205LOCAL_SHARED_LIBRARIES := libc 206LOCAL_ADDRESS_SANITIZER := true 207LOCAL_CLANG := true 208LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 209include external/libcxx/libcxx.mk 210 211include $(BUILD_EXECUTABLE) 212 213endif # ifeq($(TARGET_ARCH),arm) 214