summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPádraig Brady <P@draigBrady.com>2013-03-27 12:51:43 +0000
committerPádraig Brady <P@draigBrady.com>2013-04-04 03:02:10 +0100
commite92d16f68a97575ed7112204b069514edc8d54a0 (patch)
treea3d9089c0eddddba5cb96c78433ed513f4ec15f7
parent7abf99e1907b1b05cb45eacaa98bfa73efe0ab92 (diff)
downloadcoreutils-e92d16f68a97575ed7112204b069514edc8d54a0.tar.xz
tests: avoid shared lib tests on unsupported platforms
* init.cfg (require_gcc_shared_): A new function to check that we can build shared libraries in the particular manner we use in our tests. * tests/cp/nfs-removal-race.sh: Use require_gcc_shared_. Then fail rather than skip, if the actual shared lib build fails. * tests/df/no-mtab-status.sh: Likewise. * tests/df/skip-duplicates.sh: Likewise. * tests/ls/getxattr-speedup.sh: Likewise. Reported in http://bugs.gnu.org/14024
-rw-r--r--init.cfg9
-rwxr-xr-xtests/cp/nfs-removal-race.sh3
-rwxr-xr-xtests/df/no-mtab-status.sh3
-rwxr-xr-xtests/df/skip-duplicates.sh3
-rwxr-xr-xtests/ls/getxattr-speedup.sh3
5 files changed, 17 insertions, 4 deletions
diff --git a/init.cfg b/init.cfg
index afee93077..093cd8586 100644
--- a/init.cfg
+++ b/init.cfg
@@ -466,6 +466,15 @@ require_sparse_support_()
fi
}
+# There are a myriad of ways to build shared libs,
+# so we only consider running tests requiring shared libs,
+# on platforms that support building them as follows.
+require_gcc_shared_()
+{
+ $CC -shared -fPIC -O2 -xc -o d.so -ldl - < /dev/null 2>&1 \
+ || skip_ '$CC -shared ... failed to build a shared lib'
+}
+
mkfifo_or_skip_()
{
test $# = 1 || framework_failure_
diff --git a/tests/cp/nfs-removal-race.sh b/tests/cp/nfs-removal-race.sh
index b606784ec..e59908a91 100755
--- a/tests/cp/nfs-removal-race.sh
+++ b/tests/cp/nfs-removal-race.sh
@@ -30,6 +30,7 @@
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
print_ver_ cp
+require_gcc_shared_
# Replace each stat call with a call to this wrapper.
cat > k.c <<'EOF' || framework_failure_
@@ -58,7 +59,7 @@ EOF
# Then compile/link it:
$CC -shared -fPIC -O2 k.c -o k.so -ldl \
- || framework_failure_ 'failed to compile with -shared -fPIC'
+ || framework_failure_ 'failed to build shared library'
touch d2 || framework_failure_
echo xyz > src || framework_failure_
diff --git a/tests/df/no-mtab-status.sh b/tests/df/no-mtab-status.sh
index 896a9fe55..2e6b61bb8 100755
--- a/tests/df/no-mtab-status.sh
+++ b/tests/df/no-mtab-status.sh
@@ -19,6 +19,7 @@
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
print_ver_ df
+require_gcc_shared_
df || skip_ "df fails"
@@ -45,7 +46,7 @@ EOF
# Then compile/link it:
$CC -shared -fPIC -ldl -O2 k.c -o k.so \
- || skip_ "getmntent hack does not work on this platform"
+ || framework_failure_ 'failed to build shared library'
# Test if LD_PRELOAD works:
LD_PRELOAD=./k.so df
diff --git a/tests/df/skip-duplicates.sh b/tests/df/skip-duplicates.sh
index ad5249b59..2b7de562b 100755
--- a/tests/df/skip-duplicates.sh
+++ b/tests/df/skip-duplicates.sh
@@ -19,6 +19,7 @@
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
print_ver_ df
+require_gcc_shared_
df || skip_ "df fails"
@@ -58,7 +59,7 @@ EOF
# Then compile/link it:
gcc --std=gnu99 -shared -fPIC -ldl -O2 k.c -o k.so \
- || skip_ "getmntent hack does not work on this platform"
+ || framework_failure_ 'failed to build shared library'
# Test if LD_PRELOAD works:
LD_PRELOAD=./k.so df
diff --git a/tests/ls/getxattr-speedup.sh b/tests/ls/getxattr-speedup.sh
index 224362f0c..989a5263d 100755
--- a/tests/ls/getxattr-speedup.sh
+++ b/tests/ls/getxattr-speedup.sh
@@ -21,6 +21,7 @@
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
print_ver_ ls
+require_gcc_shared_
# Replace each getxattr and lgetxattr call with a call to these stubs.
# Count those and write the total number of calls to the file "x"
@@ -48,7 +49,7 @@ EOF
# Then compile/link it:
$CC -shared -fPIC -O2 k.c -o k.so \
- || framework_failure_ 'failed to compile with -shared -fPIC'
+ || framework_failure_ 'failed to build shared library'
# Create a few files:
seq 20 | xargs touch || framework_failure_