X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=tests%2Fregression%2Fabi0-conflict%2Ftest_abi0_conflict;h=9dccbe12cbe94390460d2057379ca6051a03c642;hb=14f8b52c90ad4a66e2908f454da6bb431f9f35f9;hp=cc5966eae448ab4c724e8f8c93b5137b322cc010;hpb=05bfa3dc3a6e6b2ece3686a5f384b6645c2a5010;p=lttng-ust.git diff --git a/tests/regression/abi0-conflict/test_abi0_conflict b/tests/regression/abi0-conflict/test_abi0_conflict index cc5966ea..9dccbe12 100755 --- a/tests/regression/abi0-conflict/test_abi0_conflict +++ b/tests/regression/abi0-conflict/test_abi0_conflict @@ -26,11 +26,21 @@ STD_ERROR="/dev/null" NUM_TESTS=22 +# Set this variable to disable tests that rely on a library using a symbol from +# the global offset table even if it provides its own copy, which is the +# default behavior on Linux. This happens when using the '-Bsymbolic-functions' +# linker flag. +UST_TESTS_LD_SYMBOLIC_FUNC=${UST_TESTS_LD_SYMBOLIC_FUNC:-} + # On FreeBSD, symbol resolution when dlopening a shared object will always # favor symbols local to this shared object and thus our canary function will # never be called which breaks our abi conflict detection when abi1 is loaded # first. if [ "$UST_OS_TYPE" = "freebsd" ]; then + UST_TESTS_LD_SYMBOLIC_FUNC=1 +fi + +if [ "$UST_TESTS_LD_SYMBOLIC_FUNC" != "" ]; then NUM_TESTS=$((NUM_TESTS - 4)) fi @@ -92,7 +102,7 @@ ok $? "dlopen: no-ust app with abi1 and abi1 succeeds" LD_LIBRARY_PATH="$LIBFAKEUST0_PATH:$LIBUST1_PATH" "${CURDIR}/app_noust_dlopen" abi0_abi1 >"$STD_OUTPUT" 2>"$STD_ERROR" isnt $? 0 "dlopen: no-ust app with abi0 and abi1 fails" -if [ "$UST_OS_TYPE" != "freebsd" ]; then +if [ "$UST_TESTS_LD_SYMBOLIC_FUNC" = "" ]; then LD_LIBRARY_PATH="$LIBFAKEUST0_PATH:$LIBUST1_PATH" "${CURDIR}/app_noust_dlopen" abi1_abi0 >"$STD_OUTPUT" 2>"$STD_ERROR" isnt $? 0 "dlopen: no-ust app with abi1 and abi0 fails" fi @@ -102,7 +112,7 @@ fi LD_LIBRARY_PATH="$LIBFAKEUST0_PATH:$LIBUST1_PATH" "${CURDIR}/app_ust_dlopen" abi1 >"$STD_OUTPUT" 2>"$STD_ERROR" ok $? "dlopen: ust app works" -if [ "$UST_OS_TYPE" != "freebsd" ]; then +if [ "$UST_TESTS_LD_SYMBOLIC_FUNC" = "" ]; then LD_LIBRARY_PATH="$LIBFAKEUST0_PATH:$LIBUST1_PATH" "${CURDIR}/app_ust_dlopen" abi0 >"$STD_OUTPUT" 2>"$STD_ERROR" isnt $? 0 "dlopen: ust app with abi0 fails"