diff options
Diffstat (limited to 'testsuite/deps1.sh')
-rwxr-xr-x | testsuite/deps1.sh | 60 |
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 |