Blame tools/check-exports.sh
|
Packit |
5756e2 |
#!/bin/sh
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
LC_ALL=C
|
|
Packit |
5756e2 |
export LC_ALL
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
stat=0
|
|
Packit |
5756e2 |
so="$1"
|
|
Packit |
5756e2 |
def="$2"
|
|
Packit |
5756e2 |
PATTERN="_ANCHOR_"
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
TMPFILE="$(mktemp .nm-check-exports.XXXXXX)"
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
get_syms() {
|
|
Packit |
5756e2 |
${NM:-nm} "$1" |
|
|
Packit |
5756e2 |
sed -n 's/^[[:xdigit:]]\+ [DT] //p' |
|
|
Packit |
5756e2 |
sort
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
get_syms_from_def() {
|
|
Packit |
5756e2 |
sed -n 's/^\t\(\([_a-zA-Z0-9]\+\)\|#\s*\([_a-zA-Z0-9]\+@@\?[_a-zA-Z0-9]\+\)\);$/\2\3/p' "$1" |
|
|
Packit |
5756e2 |
sort
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
anchor() {
|
|
Packit |
5756e2 |
sed "s/.*/$PATTERN\0$PATTERN/"
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
unanchor() {
|
|
Packit |
5756e2 |
sed "s/^$PATTERN\(.*\)$PATTERN\$/\1/"
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
get_syms "$so" | anchor > "$TMPFILE"
|
|
Packit |
5756e2 |
WRONG="$(get_syms_from_def "$def" | anchor | grep -F -f - "$TMPFILE" -v)"
|
|
Packit |
5756e2 |
RESULT=$?
|
|
Packit |
5756e2 |
if [ $RESULT -eq 0 ]; then
|
|
Packit |
5756e2 |
stat=1
|
|
Packit |
5756e2 |
echo ">>library \"$so\" exports symbols that are not in linker script \"$def\":"
|
|
Packit |
5756e2 |
echo "$WRONG" | unanchor | nl
|
|
Packit |
5756e2 |
fi
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
get_syms_from_def "$def" | anchor > "$TMPFILE"
|
|
Packit |
5756e2 |
WRONG="$(get_syms "$so" | anchor | grep -F -f - "$TMPFILE" -v)"
|
|
Packit |
5756e2 |
RESULT=$?
|
|
Packit |
5756e2 |
if [ $RESULT -eq 0 ]; then
|
|
Packit |
5756e2 |
stat=1
|
|
Packit |
5756e2 |
echo ">>linker script \"$def\" contains symbols that are not exported by library \"$so\":"
|
|
Packit |
5756e2 |
echo "$WRONG" | unanchor | nl
|
|
Packit |
5756e2 |
fi
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
rm -rf "$TMPFILE"
|
|
Packit |
5756e2 |
exit $stat
|
|
Packit |
5756e2 |
|