mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-11-05 19:03:31 +00:00
2a4a222d95
This way you can export NM to use a prefixed tool https://bugzilla.gnome.org/show_bug.cgi?id=755540 Signed-off-by: Quentin Glidic <sardemff7+git@sardemff7.net>
54 lines
1 KiB
Bash
Executable file
54 lines
1 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
LC_ALL=C
|
|
export LC_ALL
|
|
|
|
stat=0
|
|
so="$1"
|
|
def="$2"
|
|
PATTERN="_ANCHOR_"
|
|
|
|
TMPFILE="$(mktemp .nm-check-exports.XXXXXX)"
|
|
|
|
|
|
get_syms() {
|
|
${NM:-nm} "$1" |
|
|
sed -n 's/^[[:xdigit:]]\+ [DT] //p' |
|
|
sort
|
|
}
|
|
|
|
get_syms_from_def() {
|
|
sed -n 's/^\t\(\([_a-zA-Z0-9]\+\)\|#\s*\([_a-zA-Z0-9]\+@@\?[_a-zA-Z0-9]\+\)\);$/\2\3/p' "$1" |
|
|
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
|
|
|