device: renew dhcp leases on awake for software devices
[NetworkManager.git] / tools / check-exports.sh
1 #!/bin/sh
2
3 LC_ALL=C
4 export LC_ALL
5
6 stat=0
7 so="$1"
8 def="$2"
9 PATTERN="_ANCHOR_"
10
11 TMPFILE="$(mktemp .nm-check-exports.XXXXXX)"
12
13
14 get_syms() {
15     ${NM:-nm} "$1" |
16     sed -n 's/^[[:xdigit:]]\+ [DT] //p' |
17     sort
18 }
19
20 get_syms_from_def() {
21     sed -n 's/^\t\(\([_a-zA-Z0-9]\+\)\|#\s*\([_a-zA-Z0-9]\+@@\?[_a-zA-Z0-9]\+\)\);$/\2\3/p' "$1" |
22     sort
23 }
24
25 anchor() {
26     sed "s/.*/$PATTERN\0$PATTERN/"
27 }
28
29 unanchor() {
30     sed "s/^$PATTERN\(.*\)$PATTERN\$/\1/"
31 }
32
33
34 get_syms "$so" | anchor > "$TMPFILE"
35 WRONG="$(get_syms_from_def "$def" | anchor | grep -F -f - "$TMPFILE" -v)"
36 RESULT=$?
37 if [ $RESULT -eq 0 ]; then
38     stat=1
39     echo ">>library \"$so\" exports symbols that are not in linker script \"$def\":"
40     echo "$WRONG" | unanchor | nl
41 fi
42
43 get_syms_from_def "$def" | anchor > "$TMPFILE"
44 WRONG="$(get_syms "$so" | anchor | grep -F -f - "$TMPFILE" -v)"
45 RESULT=$?
46 if [ $RESULT -eq 0 ]; then
47     stat=1
48     echo ">>linker script \"$def\" contains symbols that are not exported by library \"$so\":"
49     echo "$WRONG" | unanchor | nl
50 fi
51
52 rm -rf "$TMPFILE"
53 exit $stat
54