1*4882a593SmuzhiyunRewrite the public symbol check to verify the shared libraries, to check for 2*4882a593Smuzhiyunmore things, and to avoid duplication; fixes make check on ARM 3*4882a593Smuzhiyun 4*4882a593SmuzhiyunTaken From 5*4882a593Smuzhiyunhttps://sources.debian.org/src/mpeg2dec/0.5.1-8/debian/patches/61_global-symbol-test.patch/ 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunUpstream-Status: Pending 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunSigned-off-by: Khem Raj <raj.khem@gmail.com> 10*4882a593Smuzhiyun--- 11*4882a593Smuzhiyun test/globals | 42 +++++++++++++++++++++++++++--------------- 12*4882a593Smuzhiyun 1 file changed, 27 insertions(+), 15 deletions(-) 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun--- mpeg2dec.orig/test/globals 15*4882a593Smuzhiyun+++ mpeg2dec/test/globals 16*4882a593Smuzhiyun@@ -1,4 +1,8 @@ 17*4882a593Smuzhiyun #!/bin/sh 18*4882a593Smuzhiyun+# TODO 19*4882a593Smuzhiyun+# - fix checking of .a libs; problem is that "nm -g --defined-only" lists 20*4882a593Smuzhiyun+# internal symbols; this can be solved by using objdump, but it's probably 21*4882a593Smuzhiyun+# good enough to just run the tests on the shared lib 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun if test x"$srcdir" != x""; then 24*4882a593Smuzhiyun builddir="." # running from make check, but it does not define that 25*4882a593Smuzhiyun@@ -14,22 +18,30 @@ builddir=`cd $builddir;pwd` 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun error=0 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun-bad_globals=`nm -g --defined-only $builddir/../libmpeg2/*.o |\ 30*4882a593Smuzhiyun- awk '{if ($3) print $3}' | grep -v '^_\?mpeg2_'` 31*4882a593Smuzhiyun- 32*4882a593Smuzhiyun-if test x"$bad_globals" != x""; then 33*4882a593Smuzhiyun- echo BAD GLOBAL SYMBOLS: 34*4882a593Smuzhiyun- for s in $bad_globals; do echo $s; done 35*4882a593Smuzhiyun+# check_bad_public_symbols <symbol prefix> <lib file> [<lib file>...] 36*4882a593Smuzhiyun+# 37*4882a593Smuzhiyun+# checks public symbols in shared libs: 38*4882a593Smuzhiyun+# - allow prefix_anything 39*4882a593Smuzhiyun+# - reject _prefixanything 40*4882a593Smuzhiyun+# - allow _anything 41*4882a593Smuzhiyun+# - reject anything else 42*4882a593Smuzhiyun+# 43*4882a593Smuzhiyun+# NB: skips missing files 44*4882a593Smuzhiyun+check_bad_public_symbols() { 45*4882a593Smuzhiyun+ symbols_prefix="$1" 46*4882a593Smuzhiyun+ shift 47*4882a593Smuzhiyun+ lib_files=`ls "$@" 2>/dev/null` 48*4882a593Smuzhiyun+ [ -z "$lib_files" ] && return 49*4882a593Smuzhiyun+ bad_globals=`nm -g --defined-only $lib_files | 50*4882a593Smuzhiyun+ awk '{if ($3) print $3}' | 51*4882a593Smuzhiyun+ sed -n "/^${symbols_prefix}_/ d; /^_${symbols_prefix}/ { p; d }; /^_/ d; p"` 52*4882a593Smuzhiyun+ [ -z "$bad_globals" ] && return 53*4882a593Smuzhiyun error=1 54*4882a593Smuzhiyun-fi 55*4882a593Smuzhiyun- 56*4882a593Smuzhiyun-bad_globals=`nm -g --defined-only $builddir/../libmpeg2/convert/*.o |\ 57*4882a593Smuzhiyun- awk '{if ($3) print $3}' | grep -v '^_\?mpeg2convert_'` 58*4882a593Smuzhiyun+ echo BAD GLOBAL SYMBOLS in $lib_files: 59*4882a593Smuzhiyun+ echo "$bad_globals" 60*4882a593Smuzhiyun+} 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun-if test x"$bad_globals" != x""; then 63*4882a593Smuzhiyun- echo BAD GLOBAL SYMBOLS: 64*4882a593Smuzhiyun- for s in $bad_globals; do echo $s; done 65*4882a593Smuzhiyun- error=1 66*4882a593Smuzhiyun-fi 67*4882a593Smuzhiyun+check_bad_public_symbols mpeg2 $builddir/../libmpeg2/.libs/libmpeg2.so 68*4882a593Smuzhiyun+check_bad_public_symbols mpeg2convert $builddir/../libmpeg2/convert/.libs/libmpeg2convert.so 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun exit $error 71