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 LOCAL_PATH := $(call my-dir) 18 TEST_PATH := $(LOCAL_PATH)/.. 19 20 common_cppflags += -std=gnu++11 21 common_additional_dependencies := \ 22 $(LOCAL_PATH)/Android.mk \ 23 $(LOCAL_PATH)/Android.build.dlext_testzip.mk \ 24 $(LOCAL_PATH)/Android.build.testlib.mk \ 25 $(TEST_PATH)/Android.build.mk 26 27 # ----------------------------------------------------------------------------- 28 # Library used by dlfcn tests. 29 # ----------------------------------------------------------------------------- 30 ifneq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),mips mips64)) 31 no-elf-hash-table-library_src_files := \ 32 empty.cpp \ 33 34 no-elf-hash-table-library_ldflags := \ 35 -Wl,--hash-style=gnu \ 36 37 module := no-elf-hash-table-library 38 module_tag := optional 39 include $(LOCAL_PATH)/Android.build.testlib.mk 40 endif 41 42 # ----------------------------------------------------------------------------- 43 # Library used by dlext tests - with GNU RELRO program header 44 # ----------------------------------------------------------------------------- 45 libdlext_test_src_files := \ 46 dlext_test_library.cpp \ 47 48 libdlext_test_ldflags := \ 49 -Wl,-z,relro \ 50 51 module := libdlext_test 52 module_tag := optional 53 include $(LOCAL_PATH)/Android.build.testlib.mk 54 55 # ----------------------------------------------------------------------------- 56 # create symlink to libdlext_test.so for symlink test 57 # ----------------------------------------------------------------------------- 58 # Use = instead of := to defer the evaluation of $@ 59 $(TARGET_OUT)/lib/libdlext_test.so: PRIVATE_POST_INSTALL_CMD = \ 60 $(hide) cd $(dir $@) && ln -sf $(notdir $@) libdlext_test_v2.so 61 62 ifneq ($(TARGET_2ND_ARCH),) 63 # link 64 bit .so 64 $(TARGET_OUT)/lib64/libdlext_test.so: PRIVATE_POST_INSTALL_CMD = \ 65 $(hide) cd $(dir $@) && ln -sf $(notdir $@) libdlext_test_v2.so 66 endif 67 68 # host symlinks 69 $(HOST_OUT)/lib64/libdlext_test.so: PRIVATE_POST_INSTALL_CMD = \ 70 $(hide) cd $(dir $@) && ln -sf $(notdir $@) libdlext_test_v2.so 71 72 $(HOST_OUT)/lib/libdlext_test.so: PRIVATE_POST_INSTALL_CMD = \ 73 $(hide) cd $(dir $@) && ln -sf $(notdir $@) libdlext_test_v2.so 74 75 # ----------------------------------------------------------------------------- 76 # Library used by dlext tests - without GNU RELRO program header 77 # ----------------------------------------------------------------------------- 78 libdlext_test_norelro_src_files := \ 79 dlext_test_library.cpp \ 80 81 libdlext_test_norelro_ldflags := \ 82 -Wl,-z,norelro \ 83 84 module := libdlext_test_norelro 85 module_tag := optional 86 build_type := target 87 build_target := SHARED_LIBRARY 88 include $(TEST_PATH)/Android.build.mk 89 90 # ----------------------------------------------------------------------------- 91 # Library used by dlext tests - different name non-default location 92 # ----------------------------------------------------------------------------- 93 libdlext_test_fd_src_files := \ 94 dlext_test_library.cpp \ 95 96 libdlext_test_fd_install_to_out_data := true 97 module := libdlext_test_fd 98 module_tag := optional 99 build_type := target 100 build_target := SHARED_LIBRARY 101 include $(TEST_PATH)/Android.build.mk 102 103 # ----------------------------------------------------------------------------- 104 # Library used by dlext tests - zipped and aligned 105 # ----------------------------------------------------------------------------- 106 include $(CLEAR_VARS) 107 bionic_2nd_arch_prefix := 108 include $(LOCAL_PATH)/Android.build.dlext_testzip.mk 109 ifneq ($(TARGET_2ND_ARCH),) 110 bionic_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX) 111 include $(LOCAL_PATH)/Android.build.dlext_testzip.mk 112 endif 113 114 # ----------------------------------------------------------------------------- 115 # Library used by dlfcn tests 116 # ----------------------------------------------------------------------------- 117 libtest_simple_src_files := \ 118 dlopen_testlib_simple.cpp 119 120 module := libtest_simple 121 include $(LOCAL_PATH)/Android.build.testlib.mk 122 123 # ----------------------------------------------------------------------------- 124 # Libraries used by dlfcn tests to verify correct load order: 125 # libtest_check_order_2_right.so 126 # ----------------------------------------------------------------------------- 127 libtest_check_order_2_right_src_files := \ 128 dlopen_testlib_answer.cpp 129 130 libtest_check_order_2_right_cflags := -D__ANSWER=42 131 module := libtest_check_order_2_right 132 include $(LOCAL_PATH)/Android.build.testlib.mk 133 134 # ----------------------------------------------------------------------------- 135 # libtest_check_order_a.so 136 # ----------------------------------------------------------------------------- 137 libtest_check_order_a_src_files := \ 138 dlopen_testlib_answer.cpp 139 140 libtest_check_order_a_cflags := -D__ANSWER=1 141 module := libtest_check_order_a 142 include $(LOCAL_PATH)/Android.build.testlib.mk 143 144 # ----------------------------------------------------------------------------- 145 # libtest_check_order_b.so 146 # ----------------------------------------------------------------------------- 147 libtest_check_order_b_src_files := \ 148 dlopen_testlib_answer.cpp 149 150 libtest_check_order_b_cflags := -D__ANSWER=2 -D__ANSWER2=43 151 module := libtest_check_order_b 152 include $(LOCAL_PATH)/Android.build.testlib.mk 153 154 # ----------------------------------------------------------------------------- 155 # libtest_check_order_c.so 156 # ----------------------------------------------------------------------------- 157 libtest_check_order_3_c_src_files := \ 158 dlopen_testlib_answer.cpp 159 160 libtest_check_order_3_c_cflags := -D__ANSWER=3 161 module := libtest_check_order_3_c 162 include $(LOCAL_PATH)/Android.build.testlib.mk 163 164 # ----------------------------------------------------------------------------- 165 # libtest_check_order_d.so 166 # ----------------------------------------------------------------------------- 167 libtest_check_order_d_src_files := \ 168 dlopen_testlib_answer.cpp 169 170 libtest_check_order_d_shared_libraries := libtest_check_order_b 171 libtest_check_order_d_cflags := -D__ANSWER=4 -D__ANSWER2=4 172 module := libtest_check_order_d 173 include $(LOCAL_PATH)/Android.build.testlib.mk 174 175 # ----------------------------------------------------------------------------- 176 # libtest_check_order_left.so 177 # ----------------------------------------------------------------------------- 178 libtest_check_order_1_left_src_files := \ 179 empty.cpp 180 181 libtest_check_order_1_left_shared_libraries := libtest_check_order_a libtest_check_order_b 182 183 module := libtest_check_order_1_left 184 include $(LOCAL_PATH)/Android.build.testlib.mk 185 186 # ----------------------------------------------------------------------------- 187 # libtest_check_order.so 188 # ----------------------------------------------------------------------------- 189 libtest_check_order_src_files := \ 190 empty.cpp 191 192 libtest_check_order_shared_libraries := libtest_check_order_1_left \ 193 libtest_check_order_2_right libtest_check_order_3_c 194 195 module := libtest_check_order 196 include $(LOCAL_PATH)/Android.build.testlib.mk 197 198 # ----------------------------------------------------------------------------- 199 # Library with dependency loop used by dlfcn tests 200 # 201 # libtest_with_dependency_loop -> a -> b -> c -> a 202 # ----------------------------------------------------------------------------- 203 libtest_with_dependency_loop_src_files := dlopen_testlib_invalid.cpp 204 205 libtest_with_dependency_loop_shared_libraries := \ 206 libtest_with_dependency_loop_a 207 208 module := libtest_with_dependency_loop 209 include $(LOCAL_PATH)/Android.build.testlib.mk 210 211 # ----------------------------------------------------------------------------- 212 # libtest_with_dependency_loop_a.so 213 # ----------------------------------------------------------------------------- 214 libtest_with_dependency_loop_a_src_files := dlopen_testlib_invalid.cpp 215 216 libtest_with_dependency_loop_a_shared_libraries := \ 217 libtest_with_dependency_loop_b_tmp 218 219 module := libtest_with_dependency_loop_a 220 include $(LOCAL_PATH)/Android.build.testlib.mk 221 222 # ----------------------------------------------------------------------------- 223 # libtest_with_dependency_loop_b.so 224 # 225 # this is temporary placeholder - will be removed 226 # ----------------------------------------------------------------------------- 227 libtest_with_dependency_loop_b_tmp_src_files := dlopen_testlib_invalid.cpp 228 libtest_with_dependency_loop_b_tmp_ldflags := -Wl,-soname=libtest_with_dependency_loop_b.so 229 230 module := libtest_with_dependency_loop_b_tmp 231 include $(LOCAL_PATH)/Android.build.testlib.mk 232 233 # ----------------------------------------------------------------------------- 234 # libtest_with_dependency_loop_b.so 235 # ----------------------------------------------------------------------------- 236 libtest_with_dependency_loop_b_src_files := dlopen_testlib_invalid.cpp 237 libtest_with_dependency_loop_b_shared_libraries := libtest_with_dependency_loop_c 238 239 module := libtest_with_dependency_loop_b 240 include $(LOCAL_PATH)/Android.build.testlib.mk 241 242 # ----------------------------------------------------------------------------- 243 # libtest_with_dependency_loop_c.so 244 # ----------------------------------------------------------------------------- 245 libtest_with_dependency_loop_c_src_files := dlopen_testlib_invalid.cpp 246 247 libtest_with_dependency_loop_c_shared_libraries := \ 248 libtest_with_dependency_loop_a 249 250 module := libtest_with_dependency_loop_c 251 include $(LOCAL_PATH)/Android.build.testlib.mk 252 253 # ----------------------------------------------------------------------------- 254 # libtest_relo_check_dt_needed_order.so 255 # | 256 # +-> libtest_relo_check_dt_needed_order_1.so 257 # | 258 # +-> libtest_relo_check_dt_needed_order_2.so 259 # ----------------------------------------------------------------------------- 260 libtest_relo_check_dt_needed_order_shared_libraries := \ 261 libtest_relo_check_dt_needed_order_1 libtest_relo_check_dt_needed_order_2 262 263 libtest_relo_check_dt_needed_order_src_files := dlopen_testlib_relo_check_dt_needed_order.cpp 264 libtest_relo_check_dt_needed_order_1_src_files := dlopen_testlib_relo_check_dt_needed_order_1.cpp 265 libtest_relo_check_dt_needed_order_2_src_files := dlopen_testlib_relo_check_dt_needed_order_2.cpp 266 267 module := libtest_relo_check_dt_needed_order 268 include $(LOCAL_PATH)/Android.build.testlib.mk 269 module := libtest_relo_check_dt_needed_order_1 270 include $(LOCAL_PATH)/Android.build.testlib.mk 271 module := libtest_relo_check_dt_needed_order_2 272 include $(LOCAL_PATH)/Android.build.testlib.mk 273 274 # ----------------------------------------------------------------------------- 275 # Library with dependency used by dlfcn tests 276 # ----------------------------------------------------------------------------- 277 libtest_with_dependency_src_files := \ 278 dlopen_testlib_simple.cpp 279 280 libtest_with_dependency_shared_libraries := libdlext_test 281 282 module := libtest_with_dependency 283 include $(LOCAL_PATH)/Android.build.testlib.mk 284 285 # ----------------------------------------------------------------------------- 286 # Library used by ifunc tests 287 # ----------------------------------------------------------------------------- 288 libtest_ifunc_src_files := \ 289 dlopen_testlib_ifunc.c 290 291 libtest_ifunc_clang_host := false 292 module := libtest_ifunc 293 build_target := SHARED_LIBRARY 294 295 build_type := host 296 include $(TEST_PATH)/Android.build.mk 297 298 ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86 x86_64)) 299 ifeq ($(TARGET_ARCH),arm64) 300 libtest_ifunc_multilib := 64 301 # TODO: This is a workaround - remove it once gcc 302 # removes its Android ifunc checks 303 libtest_ifunc_cflags := -mglibc 304 endif 305 306 build_type := target 307 include $(TEST_PATH)/Android.build.mk 308 endif 309 310 # ----------------------------------------------------------------------------- 311 # Library used by atexit tests 312 # ----------------------------------------------------------------------------- 313 314 libtest_atexit_src_files := \ 315 atexit_testlib.cpp 316 317 module := libtest_atexit 318 include $(LOCAL_PATH)/Android.build.testlib.mk 319 320 # ----------------------------------------------------------------------------- 321 # Library with weak function 322 # ----------------------------------------------------------------------------- 323 libtest_dlsym_weak_func_src_files := \ 324 dlsym_weak_function.cpp 325 326 module := libtest_dlsym_weak_func 327 include $(LOCAL_PATH)/Android.build.testlib.mk 328