summaryrefslogtreecommitdiffstats
path: root/trunk/testsuite/movelibs.sh
blob: 4357ee8d43cdc9746e7235cedada47a736c7d7bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/bash
. `dirname $0`/functions.sh
# This script copies needed C and C++ libraries into the test directory
echo 'int main() { }' > movelibs.C
$CXX -o movelibs movelibs.C
> syslib.list
> syslnk.list
for i in `LD_TRACE_PRELINKING=1 LD_WARN= LD_TRACE_LOADED_OBJECTS=1 ./movelibs \
	  | awk '$1 !~ /^\.\/movelibs/ { print $3 } '`; do
  k=`basename $i`
  if [ -L $i ]; then
    j=`ls -l $i | sed 's/^.* -> //'`
    if echo $j | grep / >/dev/null 2>&1; then
      cp -p $i .
      echo $k >> syslib.list
    else
      cp -dp $i .
      cp -p `dirname $i`/$j .
      echo $j >> syslib.list
      echo $k >> syslnk.list
    fi
  else
    cp -p $i .
    echo $k >> syslib.list
  fi
done
rm -f movelibs.C movelibs
pwd > prelink.conf
for i in `cat syslib.list`; do
  if readelf -WS $i 2>/dev/null | grep -q .gnu.prelink_undo; then
    $PRELINK -u $i > /dev/null 2>&1 || exit 1
  fi
  cp -p $i $i.orig
done
exit 77