Blame common/check-exports
|
Packit Service |
4387a0 |
#!/bin/sh
|
|
Packit Service |
4387a0 |
# check-exports
|
|
Packit Service |
4387a0 |
#
|
|
Packit Service |
4387a0 |
# quick'n'dirty script that retrieves the list of exported symbols of a given
|
|
Packit Service |
4387a0 |
# library using 'nm', and compares that against the list of symbols-to-export
|
|
Packit Service |
4387a0 |
# of our win32/common/libfoo.def files.
|
|
Packit Service |
4387a0 |
|
|
Packit Service |
4387a0 |
if [ $# -ne 2 ]; then
|
|
Packit Service |
4387a0 |
echo "Usage: $0 library.def library.so"
|
|
Packit Service |
4387a0 |
exit 1
|
|
Packit Service |
4387a0 |
fi
|
|
Packit Service |
4387a0 |
|
|
Packit Service |
4387a0 |
def_path="$1"
|
|
Packit Service |
4387a0 |
def_name="$(basename $def_path)"
|
|
Packit Service |
4387a0 |
lib_path="$2"
|
|
Packit Service |
4387a0 |
|
|
Packit Service |
4387a0 |
lib_result="`mktemp /tmp/defname.XXXXXX`"
|
|
Packit Service |
4387a0 |
|
|
Packit Service |
4387a0 |
LC_ALL=C
|
|
Packit Service |
4387a0 |
export LC_ALL
|
|
Packit Service |
4387a0 |
|
|
Packit Service |
4387a0 |
# On Solaris, add -p to get the correct output format
|
|
Packit Service |
4387a0 |
NMARGS=
|
|
Packit Service |
4387a0 |
if nm -V 2>&1 |grep Solaris > /dev/null; then
|
|
Packit Service |
4387a0 |
NMARGS=-p
|
|
Packit Service |
4387a0 |
fi
|
|
Packit Service |
4387a0 |
|
|
Packit Service |
4387a0 |
# _end is special cased because for some reason it is reported as an exported
|
|
Packit Service |
4387a0 |
# BSS symbol, unlike on linux where it's a local absolute symbol.
|
|
Packit Service |
4387a0 |
nm $NMARGS $lib_path | awk \
|
|
Packit Service |
4387a0 |
'{
|
|
Packit Service |
4387a0 |
if ($3 ~ /^[_]?(gst_|Gst|GST_|ges_|Ges|GES_).*/)
|
|
Packit Service |
4387a0 |
{
|
|
Packit Service |
4387a0 |
if ($2 ~ /^[BSDG]$/)
|
|
Packit Service |
4387a0 |
print "\t" $3 " DATA"
|
|
Packit Service |
4387a0 |
else if ($2 == "T")
|
|
Packit Service |
4387a0 |
print "\t" $3
|
|
Packit Service |
4387a0 |
}
|
|
Packit Service |
4387a0 |
}' | sort | awk '{ if (NR == 1) print "EXPORTS"; print $0; }' \
|
|
Packit Service |
4387a0 |
> $lib_result
|
|
Packit Service |
4387a0 |
|
|
Packit Service |
4387a0 |
diffoutput=`diff -u $def_path $lib_result`
|
|
Packit Service |
4387a0 |
diffresult=$?
|
|
Packit Service |
4387a0 |
|
|
Packit Service |
4387a0 |
rm $lib_result
|
|
Packit Service |
4387a0 |
|
|
Packit Service |
4387a0 |
if test "$diffresult" -eq 0; then
|
|
Packit Service |
4387a0 |
exit 0;
|
|
Packit Service |
4387a0 |
else
|
|
Packit Service |
4387a0 |
echo -n "$diffoutput" >&2
|
|
Packit Service |
4387a0 |
echo >&2
|
|
Packit Service |
4387a0 |
exit 1;
|
|
Packit Service |
4387a0 |
fi
|
|
Packit Service |
4387a0 |
|