mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-05 05:18:23 +02:00
build: adjust tools/check-exports.sh
Now that the version scripts might have different sections, the previous check-exports.sh script no longer works.
This commit is contained in:
parent
005b83de47
commit
256662f701
1 changed files with 44 additions and 13 deletions
|
|
@ -4,22 +4,53 @@ LC_ALL=C
|
|||
export LC_ALL
|
||||
|
||||
stat=0
|
||||
so=$1
|
||||
def=$2
|
||||
so="$1"
|
||||
def="$2"
|
||||
PATTERN="_ANCHOR_"
|
||||
|
||||
# Have to prefix with a tab and suffix with a ';' to match .ver file format
|
||||
get_syms='nm "$so" | grep "^[[:xdigit:]]\+ T " | sed "s/^[[:xdigit:]]\+ T //" | sed "s/^/\t/" | sed "s/$/;/"'
|
||||
TMPFILE="$(mktemp .nm-check-exports.XXXXXX)"
|
||||
|
||||
echo $so: checking exported symbols against $def
|
||||
|
||||
{
|
||||
echo "{"
|
||||
echo "global:"
|
||||
eval $get_syms | sort -u
|
||||
echo "local:"
|
||||
echo " *;"
|
||||
echo "};"
|
||||
} | diff -u "$def" - >&2 || stat=1
|
||||
get_syms() {
|
||||
nm "$1" |
|
||||
sed -n 's/^[[:xdigit:]]\+ T //p' |
|
||||
sort
|
||||
}
|
||||
|
||||
get_syms_from_def() {
|
||||
# be strict and only parse entries that start with one \t and end with a ';'
|
||||
sed -n 's/^\t\([_a-zA-Z0-9]\+\);$/\1/p' "$1" |
|
||||
grep '^\*$' -v |
|
||||
sort
|
||||
}
|
||||
|
||||
anchor() {
|
||||
sed "s/.*/$PATTERN\0$PATTERN/"
|
||||
}
|
||||
|
||||
unanchor() {
|
||||
sed "s/^$PATTERN\(.*\)$PATTERN\$/\1/"
|
||||
}
|
||||
|
||||
|
||||
get_syms "$so" | anchor > "$TMPFILE"
|
||||
WRONG="$(get_syms_from_def "$def" | anchor | grep -F -f - "$TMPFILE" -v)"
|
||||
RESULT=$?
|
||||
if [ $RESULT -eq 0 ]; then
|
||||
stat=1
|
||||
echo ">>library \"$so\" exports symbols that are not in linker script \"$def\":"
|
||||
echo "$WRONG" | unanchor | nl
|
||||
fi
|
||||
|
||||
get_syms_from_def "$def" | anchor > "$TMPFILE"
|
||||
WRONG="$(get_syms "$so" | anchor | grep -F -f - "$TMPFILE" -v)"
|
||||
RESULT=$?
|
||||
if [ $RESULT -eq 0 ]; then
|
||||
stat=1
|
||||
echo ">>linker script \"$def\" contains symbols that are not exported by library \"$so\":"
|
||||
echo "$WRONG" | unanchor | nl
|
||||
fi
|
||||
|
||||
rm -rf "$TMPFILE"
|
||||
exit $stat
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue