aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/deps1.sh
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/deps1.sh')
-rwxr-xr-xtestsuite/deps1.sh60
1 files changed, 60 insertions, 0 deletions
diff --git a/testsuite/deps1.sh b/testsuite/deps1.sh
new file mode 100755
index 0000000..a5bdcac
--- /dev/null
+++ b/testsuite/deps1.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+. `dirname $0`/functions.sh
+
+PRELINK=`echo $PRELINK \
+ | sed -e 's, \./\(prelink\.\(cache\|conf\)\), deps1.tree/etc/\1,g' \
+ -e 's,path=\.,path=deps1.tree/lib:deps1.tree/usr/lib:deps1.tree/opt/lib,' \
+ -e 's,linker=\./,linker=deps1.tree/lib/,'`
+CCLINK=`echo $CCLINK \
+ | sed -e 's,linker=\./,linker=deps1.tree/lib/,'`
+rm -rf deps1.tree
+rm -f deps1.log
+mkdir -p deps1.tree/{lib,etc,usr/lib,opt/lib,usr/bin}
+$RUN_HOST $CC -shared -O2 -fpic -o deps1.tree/usr/lib/lib1.so $srcdir/deps1lib1.c
+$RUN_HOST $CC -shared -O2 -fpic -o deps1.tree/opt/lib/lib1.so $srcdir/deps1lib1.c
+$RUN_HOST $CC -shared -O2 -fpic -o deps1.tree/usr/lib/lib2.so $srcdir/deps1lib2.c \
+ -L deps1.tree/opt/lib -Wl,-rpath,deps1.tree/opt/lib -l1
+echo '' | $RUN_HOST $CC -shared -O2 -fpic -o deps1.tree/usr/lib/lib3.so -xc - -xnone \
+ -L deps1.tree/usr/lib -L deps1.tree/opt/lib -Wl,-rpath,deps1.tree/usr/lib \
+ -l1 -l2
+for lib in `cat syslib.list`; do
+ cp -p $lib.orig deps1.tree/lib/$lib
+ cp -p $lib.orig deps1.tree/lib/$lib.orig
+done
+for lib in `cat syslnk.list`; do
+ cp -dp $lib deps1.tree/lib
+done
+$RUN_HOST $CCLINK -o deps1.tree/usr/bin/bin1 $srcdir/deps1.c \
+ -Wl,-rpath,deps1.tree/usr/lib -L deps1.tree/usr/lib -l3 -lc -l1 -l2
+cat > deps1.tree/etc/prelink.conf <<EOF
+deps1.tree/usr/bin
+deps1.tree/lib
+deps1.tree/usr/lib
+deps1.tree/opt/lib
+EOF
+LIBS="deps1.tree/usr/lib/lib1.so deps1.tree/usr/lib/lib2.so"
+LIBS="$LIBS deps1.tree/usr/lib/lib3.so deps1.tree/opt/lib/lib1.so"
+LIBS="$LIBS `sed 's|^|deps1.tree/lib/|' syslib.list`"
+BINS="deps1.tree/usr/bin/bin1"
+savelibs
+chmod 644 `ls $BINS | sed 's|$|.orig|'`
+echo $PRELINK ${PRELINK_OPTS--v} -avvvvv > deps1.log
+$RUN_HOST $PRELINK ${PRELINK_OPTS--v} -avvvvv > deps1.tree/etc/log1 2>&1 || exit 1
+cat deps1.tree/etc/log1 >> deps1.log
+if [ "x$CROSS" = "x" ]; then
+ $RUN LD_LIBRARY_PATH=deps1.tree/lib deps1.tree/usr/bin/bin1 || exit 2
+fi
+$RUN_HOST $READELF -d deps1.tree/{usr,opt}/lib/lib1.so 2>&1 | grep CHECKSUM >> deps1.log || exit 3
+$RUN_HOST $READELF -A deps1.tree/usr/lib/lib1.so >> deps1.log 2>&1 || exit 4
+$RUN_HOST $READELF -A deps1.tree/opt/lib/lib1.so >> deps1.log 2>&1 || exit 5
+$RUN_HOST $READELF -A deps1.tree/usr/lib/lib2.so >> deps1.log 2>&1 || exit 6
+$RUN_HOST $READELF -A deps1.tree/usr/lib/lib3.so >> deps1.log 2>&1 || exit 7
+$RUN_HOST $READELF -A deps1.tree/usr/bin/bin1 >> deps1.log 2>&1 || exit 8
+LIBS="deps1.tree/usr/lib/lib1.so deps1.tree/usr/lib/lib2.so"
+LIBS="$LIBS deps1.tree/opt/lib/lib1.so"
+$RUN_HOST $READELF -S deps1.tree/usr/lib/lib3.so | grep -q .gnu.prelink_undo \
+ && LIBS="$LIBS deps1.tree/usr/lib/lib3.so"
+$RUN_HOST $READELF -S deps1.tree/usr/bin/bin1 | grep -q .gnu.prelink_undo \
+ || BINS=
+comparelibs >> deps1.log 2>&1 || exit 8
+exit 0