1 // 2 // Copyright (C) 2015 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 18 ubsan_rtl_files = [ 19 "ubsan_diag.cc", 20 "ubsan_init.cc", 21 "ubsan_flags.cc", 22 "ubsan_handlers.cc", 23 "ubsan_value.cc", 24 ] 25 26 ubsan_cxx_rtl_files = [ 27 "ubsan_handlers_cxx.cc", 28 "ubsan_type_hash.cc", 29 "ubsan_type_hash_itanium.cc", 30 "ubsan_type_hash_win.cc", 31 ] 32 33 ubsan_rtl_cppflags = [ 34 "-fvisibility=hidden", 35 "-fno-exceptions", 36 "-std=c++11", 37 "-Wall", 38 "-Werror", 39 "-Wno-unused-parameter", 40 "-Wno-non-virtual-dtor", 41 "-DUBSAN_CAN_USE_CXXABI", 42 ] 43 44 ubsan_rtl_c_includes = ["external/compiler-rt/lib"] 45 46 cc_library_static { 47 name: "libubsan", 48 host_supported: true, 49 50 include_dirs: ubsan_rtl_c_includes, 51 cppflags: ubsan_rtl_cppflags, 52 srcs: ubsan_rtl_files, 53 sdk_version: "19", 54 stl: "none", 55 sanitize: { 56 never: true, 57 }, 58 compile_multilib: "both", 59 target: { 60 host: { 61 cflags: ["-fno-rtti"], 62 }, 63 }, 64 } 65 66 cc_library_static { 67 name: "libubsan_cxx", 68 host_supported: true, 69 70 include_dirs: ubsan_rtl_c_includes, 71 cppflags: ubsan_rtl_cppflags, 72 rtti: true, 73 srcs: ubsan_cxx_rtl_files, 74 sdk_version: "19", 75 sanitize: { 76 never: true, 77 }, 78 compile_multilib: "both", 79 } 80 81 cc_defaults { 82 name: "libclang_rt_ubsan_defaults", 83 84 include_dirs: [ 85 "external/compiler-rt/lib", 86 "external/compiler-rt/include", 87 ], 88 static_libs: [ 89 "libsan", 90 ], 91 whole_static_libs: [ 92 "libubsan", 93 "libubsan_cxx", 94 ], 95 shared_libs: [ 96 "liblog", 97 "libdl", 98 ], 99 clang: true, 100 sanitize: { 101 never: true, 102 }, 103 // _cxx bits (vptr-sanitizer and cfi) need dynamic_cast<> 104 stl: "c++_static", 105 sdk_version: "19", 106 enabled: false, 107 } 108 109 // Disable libubsan_standalone prebuilts in aosp/master until soong has a build 110 // option to pick a prebuilt or compile/build a module. 111 // 112 // cc_library_shared { 113 // name: "libclang_rt.ubsan_standalone-arm-android", 114 // defaults: ["libclang_rt_ubsan_defaults"], 115 // arch: { 116 // arm: { 117 // enabled: true, 118 // }, 119 // }, 120 // } 121 // 122 // cc_library_shared { 123 // name: "libclang_rt.ubsan_standalone-aarch64-android", 124 // defaults: ["libclang_rt_ubsan_defaults"], 125 // arch: { 126 // arm64: { 127 // enabled: true, 128 // }, 129 // }, 130 // } 131 // 132 // cc_library_shared { 133 // name: "libclang_rt.ubsan_standalone-i686-android", 134 // defaults: ["libclang_rt_ubsan_defaults"], 135 // arch: { 136 // x86: { 137 // enabled: true, 138 // }, 139 // }, 140 // } 141 // 142 // cc_library_shared { 143 // name: "libclang_rt.ubsan_standalone-x86_64-android", 144 // defaults: ["libclang_rt_ubsan_defaults"], 145 // arch: { 146 // x86_64: { 147 // enabled: true, 148 // }, 149 // }, 150 // } 151 // 152 // cc_library_shared { 153 // name: "libclang_rt.ubsan_standalone-mips-android", 154 // defaults: ["libclang_rt_ubsan_defaults"], 155 // arch: { 156 // mips: { 157 // enabled: true, 158 // }, 159 // }, 160 // } 161 // 162 // cc_library_shared { 163 // name: "libclang_rt.ubsan_standalone-mips64-android", 164 // defaults: ["libclang_rt_ubsan_defaults"], 165 // arch: { 166 // mips64: { 167 // enabled: true, 168 // }, 169 // }, 170 // } 171 172 //############################################################################### 173 // Host modules 174 175 cc_library_host_static { 176 name: "libubsan_standalone", 177 178 include_dirs: ubsan_rtl_c_includes, 179 cppflags: ubsan_rtl_cppflags + ["-fno-rtti"], 180 srcs: ubsan_rtl_files, 181 whole_static_libs: ["libsan"], 182 stl: "none", 183 sanitize: { 184 never: true, 185 }, 186 compile_multilib: "both", 187 target: { 188 darwin: { 189 enabled: false, 190 }, 191 }, 192 } 193 194 cc_library_host_static { 195 name: "libubsan_standalone_cxx", 196 197 include_dirs: ubsan_rtl_c_includes, 198 cppflags: ubsan_rtl_cppflags, 199 srcs: ubsan_cxx_rtl_files, 200 sanitize: { 201 never: true, 202 }, 203 compile_multilib: "both", 204 target: { 205 darwin: { 206 enabled: false, 207 }, 208 }, 209 } 210