16865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# 26865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# Copyright (C) 2012 The Android Open Source Project 36865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# 46865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# Licensed under the Apache License, Version 2.0 (the "License"); 56865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# you may not use this file except in compliance with the License. 66865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# You may obtain a copy of the License at 76865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# 86865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# http://www.apache.org/licenses/LICENSE-2.0 96865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# 106865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# Unless required by applicable law or agreed to in writing, software 116865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# distributed under the License is distributed on an "AS IS" BASIS, 126865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# See the License for the specific language governing permissions and 146865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# limitations under the License. 156865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# 166865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov 176865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# ----------------------------------------------------------------------------- 186865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# Libraries used by dt_runpath tests. 196865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# ----------------------------------------------------------------------------- 206865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov 21a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov# 22a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov# Dependencies 23a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov# 24a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov# libtest_dt_runpath_d.so runpath: ${ORIGIN}/dt_runpath_b_c_x 25a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov# |-> dt_runpath_b_c_x/libtest_dt_runpath_b.so runpath: ${ORIGIN}/../dt_runpath_a 26a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov# | |-> dt_runpath_a/libtest_dt_runpath_a.so 27a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov# |-> dt_runpath_b_c_x/libtest_dt_runpath_c.so runpath: ${ORIGIN}/invalid_dt_runpath 28a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov# | |-> libtest_dt_runpath_a.so (soname) 29a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov# 30a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov# This one is used to test dlopen 31a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov# dt_runpath_b_c_x/libtest_dt_runpath_x.so 32a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov# 33a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov 346865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# A leaf library in a non-standard directory. 356865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovlibtest_dt_runpath_a_src_files := \ 366865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov empty.cpp 376865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov 386865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovlibtest_dt_runpath_a_relative_path := dt_runpath_a 396865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovmodule := libtest_dt_runpath_a 406865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovinclude $(LOCAL_PATH)/Android.build.testlib.mk 416865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov 426865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# Depends on library A with a DT_RUNPATH 436865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovlibtest_dt_runpath_b_src_files := \ 446865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov empty.cpp 456865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov 466865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovlibtest_dt_runpath_b_shared_libraries := libtest_dt_runpath_a 473fef96f827bb4aebed08e48a1a760e0280029efdDmitriy Ivanovlibtest_dt_runpath_b_ldflags := -Wl,--rpath,\$${ORIGIN}/../dt_runpath_a -Wl,--enable-new-dtags 486865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovlibtest_dt_runpath_b_relative_path := dt_runpath_b_c_x 496865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovmodule := libtest_dt_runpath_b 506865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovinclude $(LOCAL_PATH)/Android.build.testlib.mk 516865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov 526865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# Depends on library A with an incorrect DT_RUNPATH. This does not matter 536865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# because B is the first in the D (below) dependency order, and library A 546865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# is already loaded using the correct DT_RUNPATH from library B. 556865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovlibtest_dt_runpath_c_src_files := \ 566865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov empty.cpp 576865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov 586865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovlibtest_dt_runpath_c_shared_libraries := libtest_dt_runpath_a 593fef96f827bb4aebed08e48a1a760e0280029efdDmitriy Ivanovlibtest_dt_runpath_c_ldflags := -Wl,--rpath,\$${ORIGIN}/invalid_dt_runpath -Wl,--enable-new-dtags 606865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovlibtest_dt_runpath_c_relative_path := dt_runpath_b_c_x 616865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovmodule := libtest_dt_runpath_c 626865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovinclude $(LOCAL_PATH)/Android.build.testlib.mk 636865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov 646865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# D depends on B and C with DT_RUNPATH. 656865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovlibtest_dt_runpath_d_src_files := \ 666865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov dlopen_b.cpp 676865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov 686865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovlibtest_dt_runpath_d_shared_libraries := libtest_dt_runpath_b libtest_dt_runpath_c 693fef96f827bb4aebed08e48a1a760e0280029efdDmitriy Ivanovlibtest_dt_runpath_d_ldflags := -Wl,--rpath,\$${ORIGIN}/dt_runpath_b_c_x -Wl,--enable-new-dtags 70d0ba52ebdcd7c714133b06a5a87aba81984efec3Colin Crosslibtest_dt_runpath_d_ldlibs := -ldl 716865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovmodule := libtest_dt_runpath_d 726865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovinclude $(LOCAL_PATH)/Android.build.testlib.mk 736865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov 74a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov# D version for open-from-zip test with runpath 75b16e44323979be7ecd254992f66657c9c74df091Dimitry Ivanovmodule := libtest_dt_runpath_d_zip 76b16e44323979be7ecd254992f66657c9c74df091Dimitry Ivanov 77a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanovlibtest_dt_runpath_d_zip_src_files := \ 78a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov dlopen_b.cpp 79a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov 80a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanovlibtest_dt_runpath_d_zip_shared_libraries := libtest_dt_runpath_b libtest_dt_runpath_c 81a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanovlibtest_dt_runpath_d_zip_ldflags := -Wl,--rpath,\$${ORIGIN}/dt_runpath_b_c_x -Wl,--enable-new-dtags 82d0ba52ebdcd7c714133b06a5a87aba81984efec3Colin Crosslibtest_dt_runpath_d_zip_ldlibs := -ldl 83ee2952e84ff991ff7adcf55fb604fa100a379ef7Kevin Brodskylibtest_dt_runpath_d_zip_install_to_native_tests_dir := $(module) 84b16e44323979be7ecd254992f66657c9c74df091Dimitry Ivanov 85a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanovmodule_tag := optional 86a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanovbuild_type := target 87a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanovbuild_target := SHARED_LIBRARY 88a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanovinclude $(TEST_PATH)/Android.build.mk 89a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov 90a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov 916865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov# A leaf library in a directory library D has DT_RUNPATH for. 926865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovlibtest_dt_runpath_x_src_files := \ 936865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov empty.cpp 946865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanov 956865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovlibtest_dt_runpath_x_relative_path := dt_runpath_b_c_x 966865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovmodule := libtest_dt_runpath_x 976865082ca6d887766c6651ed2d079dca56a99d32Evgenii Stepanovinclude $(LOCAL_PATH)/Android.build.testlib.mk 98a1feb117e4d5614548574f28dede3443e073512bDmitriy Ivanov 99