blob: 43863c49c034963de48c9bcc6cdb151d242d27f9 (
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
36
37
38
39
|
#/bin/sh
# .so files.
#
filelist=
while read instfile ; do
filelist="$filelist $instfile"
done
# for objdump:
export LC_ALL=C
# --- Set needed to 0 for traditional find-requires behavior.
needed=1
for i in `echo $filelist | tr '[:blank:]' "\n" | egrep "(/usr)?/lib(|64)/[^/]+\.so$"`; do
objd=`objdump -p ${i} | grep SONAME`
lib64=`if file -L $i 2>/dev/null | grep "ELF 64-bit" >/dev/null; then echo "(64bit)"; fi` && \
if [ -h ${i} -a -n "${objd}" ]; then
if [ "$needed" -eq 0 ]; then
ldd ${i} \
| grep -v "statically linked" \
| grep -v "/\(lib\|lib64\)/\(ld\|ld64\|ld-linux.*\)\.so" \
| perl -p -e "s/\s+(\S+)\.so.*/devel(\1$lib64)/g"
else
objdump -p $i | grep -v "\(ld\|ld64\|ld-linux.*\)\.so" \
| awk 'BEGIN { START=0; }
/^$/ { START=0; }
/^Dynamic Section:$/ { START=1; }
(START==1) && /NEEDED/ {
sub(/^/, "devel(", $2) ;
sub(/\.so.*$/, "'$lib64')", $2) ;
print $2 ;
}
'
fi
fi
done | egrep -v 'devel\(linux-gate|linux-vdso32|linux-vdso64|lib(c|pthread|rt)(\(64bit\))?\)' | sort -u
|