summaryrefslogtreecommitdiffstats
path: root/tests/set-rpath-library.sh
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2008-05-28 12:29:23 (GMT)
committerEelco Dolstra <e.dolstra@tudelft.nl>2008-05-28 12:29:23 (GMT)
commitdd00c212272e6871983421a480475becc3cdbd40 (patch)
tree10885e50c4b7783d516e271f7ac726cc9a0fb479 /tests/set-rpath-library.sh
parent36f96d03dba4a3bf19a3a228786aac5e69ea85d2 (diff)
downloadpatchelf-dd00c212272e6871983421a480475becc3cdbd40.zip
patchelf-dd00c212272e6871983421a480475becc3cdbd40.tar.gz
patchelf-dd00c212272e6871983421a480475becc3cdbd40.tar.bz2
* A test for setting the rpath on a library.
Diffstat (limited to 'tests/set-rpath-library.sh')
-rwxr-xr-xtests/set-rpath-library.sh57
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/set-rpath-library.sh b/tests/set-rpath-library.sh
new file mode 100755
index 0000000..9800d0e
--- /dev/null
+++ b/tests/set-rpath-library.sh
@@ -0,0 +1,57 @@
+#! /bin/sh -e
+
+rm -rf scratch
+mkdir -p scratch
+mkdir -p scratch/libsA
+mkdir -p scratch/libsB
+
+cp main-scoped scratch/
+cp libfoo-scoped.so scratch/libsA/
+cp libbar-scoped.so scratch/libsB/
+
+oldRPath=$(../src/patchelf --print-rpath scratch/main-scoped)
+if test -z "$oldRPath"; then oldRPath="/oops"; fi
+../src/patchelf --force-rpath --set-rpath $oldRPath:$(pwd)/scratch/libsA:$(pwd)/scratch/libsB scratch/main-scoped
+
+#oldRPath=$(../src/patchelf --print-rpath scratch/libsB/libbar.so)
+#if test -z "$oldRPath"; then oldRPath="/oops"; fi
+#../src/patchelf --set-rpath $oldRPath:$(pwd)/scratch/libsC scratch/libsB/libbar.so
+
+# "main" contains libbar in its RUNPATH, but that's ignored when
+# resolving libfoo. So libfoo won't find libbar and this will fail.
+exitCode=0
+(cd scratch && ./main-scoped) || exitCode=$?
+
+if test "$exitCode" = 46; then
+ echo "expected failure"
+ exit 1
+fi
+
+# So set an RUNPATH on libfoo as well.
+oldRPath=$(../src/patchelf --print-rpath scratch/libsA/libfoo-scoped.so)
+if test -z "$oldRPath"; then oldRPath="/oops"; fi
+../src/patchelf --set-rpath $oldRPath:$(pwd)/scratch/libsB scratch/libsA/libfoo-scoped.so
+
+exitCode=0
+(cd scratch && ./main-scoped) || exitCode=$?
+
+if test "$exitCode" != 46; then
+ echo "bad exit code!"
+ exit 1
+fi
+
+# Remove the libbar PATH from main using --shrink-rpath.
+../src/patchelf --shrink-rpath scratch/main-scoped
+if ../src/patchelf --print-rpath scratch/main-scoped | grep /libsB; then
+ echo "shrink failed"
+ exit 1
+fi
+
+# And it should still run.
+exitCode=0
+(cd scratch && ./main-scoped) || exitCode=$?
+
+if test "$exitCode" != 46; then
+ echo "bad exit code!"
+ exit 1
+fi