From: Michael Jeanson Date: Thu, 2 Dec 2021 21:11:21 +0000 (-0500) Subject: fix: Allow disabling some abi compat tests X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=14f8b52c90ad4a66e2908f454da6bb431f9f35f9;p=lttng-ust.git fix: Allow disabling some abi compat tests Allow disabling ABI compat 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 situation happens when using the '-Bsymbolic-functions' linker flag which binds references to public symbols in a library to the definition within the library, bypassing the global offset table. To disable those tests when running the test suite, set the UST_TESTS_LD_SYMBOLIC_FUNC environment variable to any value, for example : make check UST_TESTS_LD_SYMBOLIC_FUNC=1 Change-Id: I1ed23d90bbe1b174ab7b4fccfb40b701b291c074 Signed-off-by: Michael Jeanson Signed-off-by: Mathieu Desnoyers --- 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"