packaging: changed asan macro check for "bad %if condition"
[platform/upstream/prelink.git] / testsuite / unprel1.sh
1 #!/bin/bash
2 . `dirname $0`/functions.sh
3 PRELINK=`echo $PRELINK \
4          | sed -e 's, \./\(prelink\.\(cache\|conf\)\), unprel1.tree/etc/\1,g' \
5                -e 's,path=\.,path=unprel1.tree/opt:unprel1.tree/lib,' \
6                -e 's,linker=\./,linker=unprel1.tree/lib/,'`
7 CCLINK=`echo $CCLINK \
8         | sed -e 's,linker=\./,linker=unprel1.tree/lib/,'`
9 rm -rf unprel1.tree
10 rm -f unprel1.log
11 mkdir -p unprel1.tree/{lib,etc,opt,bin}
12 $CC -shared -O2 -fpic -o unprel1.tree/lib/lib1.so $srcdir/unprel1lib1.c
13 cp -a unprel1.tree/{lib,opt}/lib1.so
14 $CC -shared -O2 -fpic -o unprel1.tree/lib/lib2.so $srcdir/unprel1lib2.c \
15     -L unprel1.tree/lib -l1
16 $CCLINK -o unprel1.tree/bin/bin1 $srcdir/unprel1.c \
17     -Wl,-rpath,unprel1.tree/lib -L unprel1.tree/lib -l2
18 cat > unprel1.tree/etc/prelink.conf <<EOF
19 unprel1.tree/bin
20 unprel1.tree/lib
21 EOF
22 for lib in `cat syslib.list`; do
23   cp -p $lib.orig unprel1.tree/lib/$lib
24   cp -p $lib.orig unprel1.tree/lib/$lib.orig
25 done
26 for lib in `cat syslnk.list`; do
27   cp -dp $lib unprel1.tree/lib
28 done
29 LIBS="unprel1.tree/lib/lib1.so unprel1.tree/lib/lib2.so"
30 LIBS="$LIBS unprel1.tree/opt/lib1.so"
31 BINS="unprel1.tree/bin/bin1"
32 savelibs
33 chmod -x unprel1.tree/bin/bin1.orig
34 echo $PRELINK ${PRELINK_OPTS--vm} unprel1.tree/{bin,lib} > unprel1.log
35 $PRELINK ${PRELINK_OPTS--vm} unprel1.tree/{bin,lib} >> unprel1.log 2>&1 || exit 1
36 grep -v 'opt/lib1.so is not present in any config file directories' unprel1.log \
37   | grep -v 'lib/lib2.so because its dependency unprel1.tree/opt/lib1.so could not be prelinked' \
38   | grep -v 'bin/bin1 because its dependency unprel1.tree/lib/lib2.so could not be prelinked' \
39   | grep -q ^`echo $PRELINK | sed 's/ .*$/: /'` && exit 2
40 grep -q 'opt/lib1.so is not present in any config file directories' \
41   unprel1.log || exit 3
42 grep -q 'lib/lib2.so because its dependency unprel1.tree/opt/lib1.so could not be prelinked' \
43   unprel1.log || exit 4
44 grep -q 'bin/bin1 because its dependency unprel1.tree/lib/lib2.so could not be prelinked' \
45   unprel1.log || exit 5
46
47 exit 0
48 # this fails because lib2.so has no runpath evaluation to unprel1.tree/lib/lib1.so for
49 # some reason. might be a bug in prelink or the current linker
50
51 unprel1.tree/bin/bin1 || exit 6
52 # So that it is not prelinked again
53 chmod -x unprel1.tree/bin/bin1
54 LIBS=unprel1.tree/lib/lib1.so
55 BINS=
56 comparelibs >> unprel1.log 2>&1 || exit 7
57 for i in unprel1.tree/lib/lib2.so unprel1.tree/opt/lib1.so unprel1.tree/bin/bin1; do
58   cmp -s $i $i.orig || exit 8
59 done
60 exit 0