| // |
| // Copyright (C) 2012 The Android Open Source Project |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| // |
| // |
| |
| ASAN_NEEDS_SEGV = "0" |
| ASAN_HAS_EXCEPTIONS = "1" |
| ASAN_FLEXIBLE_MAPPING_AND_OFFSET = "0" |
| |
| asan_rtl_files = [ |
| "asan_activation.cc", |
| "asan_allocator.cc", |
| "asan_fake_stack.cc", |
| "asan_flags.cc", |
| "asan_globals.cc", |
| "asan_interceptors.cc", |
| "asan_linux.cc", |
| "asan_mac.cc", |
| "asan_malloc_linux.cc", |
| "asan_malloc_mac.cc", |
| "asan_malloc_win.cc", |
| "asan_poisoning.cc", |
| "asan_posix.cc", |
| "asan_report.cc", |
| "asan_rtl.cc", |
| "asan_stack.cc", |
| "asan_stats.cc", |
| "asan_suppressions.cc", |
| "asan_thread.cc", |
| "asan_win.cc", |
| ] |
| |
| asan_rtl_cxx_files = ["asan_new_delete.cc"] |
| |
| asan_rtl_cflags = [ |
| "-fvisibility=hidden", |
| "-fno-exceptions", |
| "-DASAN_LOW_MEMORY=1", |
| "-DASAN_NEEDS_SEGV=" + ASAN_NEEDS_SEGV, |
| "-DASAN_HAS_EXCEPTIONS=" + ASAN_HAS_EXCEPTIONS, |
| "-DASAN_FLEXIBLE_MAPPING_AND_OFFSET=" + ASAN_FLEXIBLE_MAPPING_AND_OFFSET, |
| "-Wno-covered-switch-default", |
| "-Wno-non-virtual-dtor", |
| "-Wno-sign-compare", |
| "-Wno-unused-parameter", |
| "-std=c++11", |
| "-fno-rtti", |
| "-fno-builtin", |
| ] |
| |
| cc_library_static { |
| name: "libasan", |
| host_supported: true, |
| defaults: ["asan_arch_defaults"], |
| include_dirs: [ |
| "external/compiler-rt/lib", |
| "external/compiler-rt/include", |
| ], |
| cflags: asan_rtl_cflags, |
| target: { |
| android: { |
| srcs: ["asan_preinit.cc"], |
| }, |
| host: { |
| srcs: asan_rtl_files, |
| whole_static_libs: [ |
| "libubsan", |
| "libinterception", |
| "liblsan", |
| "libsan" |
| ], |
| }, |
| }, |
| |
| clang: true, |
| sdk_version: "19", |
| stl: "none", |
| |
| sanitize: { |
| never: true, |
| }, |
| } |
| |
| cc_library_host_static { |
| name: "libasan_cxx", |
| include_dirs: [ |
| "external/compiler-rt/lib", |
| "external/compiler-rt/include", |
| ], |
| cflags: asan_rtl_cflags, |
| srcs: asan_rtl_cxx_files, |
| |
| clang: true, |
| compile_multilib: "both", |
| |
| sanitize: { |
| never: true, |
| }, |
| target: { |
| darwin: { |
| enabled: false, |
| }, |
| }, |
| } |
| |
| cc_defaults { |
| name: "libclang_rt_defaults", |
| |
| // TODO: |
| // This library must go on /system partition, even in SANITIZE_TARGET mode (when all libraries are |
| // installed on /data). That's because /data may not be available until vold does some magic and |
| // vold itself depends on this library. |
| |
| arch: { |
| arm: { |
| instruction_set: "arm", |
| }, |
| }, |
| include_dirs: [ |
| "external/compiler-rt/lib", |
| "external/compiler-rt/include", |
| ], |
| cflags: asan_rtl_cflags, |
| ldflags: ["-Wl,-z,global"], |
| srcs: asan_rtl_files + asan_rtl_cxx_files, |
| static_libs: [ |
| "libinterception", |
| "liblsan", |
| "libsan", |
| "libubsan", |
| ], |
| shared_libs: [ |
| "liblog", |
| "libdl", |
| ], |
| clang: true, |
| sanitize: { |
| never: true, |
| }, |
| sdk_version: "19", |
| stl: "none", |
| enabled: false, |
| } |
| |
| // Disable libclang_rt prebuilts in aosp/master until soong has a build option |
| // to pick a prebuilt or compile/build a module. |
| // |
| // cc_library_shared { |
| // name: "libclang_rt.asan-arm-android", |
| // defaults: ["libclang_rt_defaults"], |
| // arch: { |
| // arm: { |
| // enabled: true, |
| // }, |
| // }, |
| // } |
| // |
| // cc_library_shared { |
| // name: "libclang_rt.asan-aarch64-android", |
| // defaults: ["libclang_rt_defaults"], |
| // arch: { |
| // arm64: { |
| // enabled: true, |
| // }, |
| // }, |
| // } |
| // |
| // cc_library_shared { |
| // name: "libclang_rt.asan-mips-android", |
| // defaults: ["libclang_rt_defaults"], |
| // arch: { |
| // mips: { |
| // enabled: true, |
| // }, |
| // }, |
| // } |
| // |
| // cc_library_shared { |
| // name: "libclang_rt.asan-mips64-android", |
| // defaults: ["libclang_rt_defaults"], |
| // arch: { |
| // mips64: { |
| // enabled: true, |
| // }, |
| // }, |
| // } |
| // |
| // cc_library_shared { |
| // name: "libclang_rt.asan-i686-android", |
| // defaults: ["libclang_rt_defaults"], |
| // arch: { |
| // x86: { |
| // enabled: true, |
| // }, |
| // }, |
| // } |
| |
| cc_binary { |
| name: "asanwrapper", |
| defaults: ["asan_arch_defaults"], |
| |
| srcs: ["asanwrapper.cc"], |
| |
| cppflags: ["-std=c++11"], |
| sanitize: { |
| never: true, |
| }, |
| |
| stl: "libc++", |
| } |
| |
| // ANDROIDMK TRANSLATION ERROR: unsupported conditional |
| // ifneq (true,$(SKIP_LLVM_TESTS)) |
| cc_library_static { |
| name: "libasan_noinst_test", |
| host_supported: true, |
| defaults: ["asan_arch_defaults"], |
| |
| tags: ["tests"], |
| include_dirs: [ |
| "external/compiler-rt/include", |
| "external/compiler-rt/lib", |
| "external/compiler-rt/lib/asan/tests", |
| "external/compiler-rt/lib/sanitizer_common/tests", |
| ], |
| cflags: [ |
| "-Wno-non-virtual-dtor", |
| "-Wno-unused-parameter", |
| "-Wno-sign-compare", |
| "-DASAN_UAR=0", |
| "-DASAN_HAS_BLACKLIST=1", |
| "-DASAN_HAS_EXCEPTIONS=" + ASAN_HAS_EXCEPTIONS, |
| "-DASAN_NEEDS_SEGV=" + ASAN_NEEDS_SEGV, |
| "-std=c++11", |
| ], |
| srcs: [ |
| "tests/asan_noinst_test.cc", |
| "tests/asan_test_main.cc", |
| ], |
| |
| static_libs: ["libgtest"], |
| |
| clang: true, |
| sanitize: { |
| never: true, |
| }, |
| |
| stl: "libc++", |
| } |
| |
| cc_test { |
| name: "asan_test", |
| host_supported: true, |
| defaults: ["asan_arch_defaults"], |
| |
| tags: ["tests"], |
| include_dirs: [ |
| "external/compiler-rt/lib", |
| "external/compiler-rt/lib/asan/tests", |
| "external/compiler-rt/lib/sanitizer_common/tests", |
| ], |
| cflags: [ |
| "-DASAN_LOW_MEMORY=1", |
| "-DASAN_UAR=0", |
| "-DASAN_NEEDS_SEGV=" + ASAN_NEEDS_SEGV, |
| "-DASAN_HAS_EXCEPTIONS=" + ASAN_HAS_EXCEPTIONS, |
| "-DASAN_HAS_BLACKLIST=1", |
| "-Wno-covered-switch-default", |
| "-Wno-non-virtual-dtor", |
| "-Wno-sign-compare", |
| "-Wno-unused-parameter", |
| "-std=c++11", |
| ], |
| |
| srcs: [ |
| "tests/asan_globals_test.cc", |
| "tests/asan_test.cc", |
| //"tests/asan_noinst_test.cc", |
| //"tests/asan_test_main.cc", |
| ], |
| |
| static_libs: ["libasan_noinst_test"], |
| sanitize: { |
| address: true, |
| blacklist: "tests/asan_test.ignore", |
| }, |
| clang: true, |
| |
| stl: "libc++", |
| target: { |
| host: { |
| host_ldlibs: ["-lrt"], |
| }, |
| }, |
| } |
| |
| // ANDROIDMK TRANSLATION ERROR: endif from unsupported contitional |
| // endif |
| // SKIP_LLVM_TESTS |