Commit 852791c6 authored by Tim-Philipp Müller's avatar Tim-Philipp Müller 🐠

check-exports: Add quick'n'dirty script to check the exported symbols of a...

check-exports: Add quick'n'dirty script to check the exported symbols of a library against the symbols in the corresp...

Original commit message from CVS:
* check-exports:
Add quick'n'dirty script to check the exported symbols of a library
against the symbols in the corresponding .def file (#493983). Based
on script by Ole André Vadla Ravnås.
parent 423e2ea9
2007-12-12 Tim-Philipp Müller <tim at centricular dot net>
* check-exports:
Add quick'n'dirty script to check the exported symbols of a library
against the symbols in the corresponding .def file (#493983). Based
on script by Ole André Vadla Ravnås.
2007-11-06 Jan Schmidt <jan.schmidt@sun.com>
* gtk-doc-plugins.mak:
......
#!/bin/sh
# check-exports
#
# quick'n'dirty script that retrieves the list of exported symbols of a given
# library using 'nm', and compares that against the list of symbols-to-export
# of our win32/common/libfoo.def files.
if [ $# -ne 2 ]; then
echo "Usage: $0 library.def library.so"
exit 1
fi
export LC_ALL=C
def_path=$1
def_name=$(basename $def_path)
lib_path=$2
lib_result=$(mktemp /tmp/defname.XXXXXX)
# FIXME 0.11: in 0.11, we should change the export filter to only export
# _gst_foo, but not __gst_foo (we can't change this now, since we added
# __gst_debug_min and __gst_debug_enabled at some point and need to keep
# ABI compatibility). So below we special-case some symbols that shouldn't
# really be exported, either because we're too lazy to rename them to something
# that's not exported (like the _gst_parse_* stuff) or because we had them in
# public headers at some point although they shouldn't be and so we need to
# keep them exported now (like _gst_debug_init,
# __gst_element_factory_add_interface or
# __gst_element_factory_add_static_pad_template). We suppress them here to
# make sure they're at least not exported in the windows msvc build (they
# were never in the .def file, so they never got exported).
nm $lib_path | awk \
'{
if ($3 !~ /^_gst_parse_yy/ &&
$3 !~ /^_gst_[a-z]*_init/ &&
$3 !~ /^_gst_parse_launch/ &&
$3 !~ /^__gst_element_details_/ &&
$3 !~ /^__gst_element_factory_add_/)
{
if ($2 == "B")
print "\t" $3 " DATA"
else if ($2 == "T")
print "\t" $3
}
}' | sort | awk '{ if (NR == 1) print "EXPORTS"; print $0; }' \
> $lib_result
diffoutput=`diff -u $def_path $lib_result`
rm $lib_result
if test "x$diffoutput" = "x"; then
exit 0;
else
echo -n "$diffoutput" >&2
echo >&2
exit 1;
fi
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment