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