Mark Thompson: > Ensures that external symbols in the built static libraries either have > correct namespace prefixes or are on a known list of exceptions. > --- > tests/Makefile | 1 + > tests/fate/namespace.mak | 19 ++++++++++ > tests/fate/namespace.sh | 15 ++++++++ > tests/ref/fate/namespace-avcodec | 0 > tests/ref/fate/namespace-avdevice | 0 > tests/ref/fate/namespace-avfilter | 0 > tests/ref/fate/namespace-avformat | 0 > tests/ref/fate/namespace-avutil | 0 > tests/ref/fate/namespace-postproc | 0 > tests/ref/fate/namespace-swresample | 0 > tests/ref/fate/namespace-swscale | 58 +++++++++++++++++++++++++++++ > 11 files changed, 93 insertions(+) > create mode 100644 tests/fate/namespace.mak > create mode 100755 tests/fate/namespace.sh > create mode 100644 tests/ref/fate/namespace-avcodec > create mode 100644 tests/ref/fate/namespace-avdevice > create mode 100644 tests/ref/fate/namespace-avfilter > create mode 100644 tests/ref/fate/namespace-avformat > create mode 100644 tests/ref/fate/namespace-avutil > create mode 100644 tests/ref/fate/namespace-postproc > create mode 100644 tests/ref/fate/namespace-swresample > create mode 100644 tests/ref/fate/namespace-swscale > > diff --git a/tests/Makefile b/tests/Makefile > index 7844901e53..94057eb81d 100644 > --- a/tests/Makefile > +++ b/tests/Makefile > @@ -173,6 +173,7 @@ include $(SRC_PATH)/tests/fate/mpeg4.mak > include $(SRC_PATH)/tests/fate/mpegps.mak > include $(SRC_PATH)/tests/fate/mpegts.mak > include $(SRC_PATH)/tests/fate/mxf.mak > +include $(SRC_PATH)/tests/fate/namespace.mak > include $(SRC_PATH)/tests/fate/opus.mak > include $(SRC_PATH)/tests/fate/pcm.mak > include $(SRC_PATH)/tests/fate/pixfmt.mak > diff --git a/tests/fate/namespace.mak b/tests/fate/namespace.mak > new file mode 100644 > index 0000000000..0021e7152d > --- /dev/null > +++ b/tests/fate/namespace.mak > @@ -0,0 +1,19 @@ > + > +define FATE_NAMESPACE > +# (library_name, config_option) > +FATE_NAMESPACE-$(call ALLYES, STATIC $(2)) += fate-namespace-$(1) > +fate-namespace-$(1): lib$(1)/$(LIBPREF)$(1)$(LIBSUF) > +fate-namespace-$(1): CMD = runlocal fate/namespace.sh "$(NM_CMD) -P > lib$(1)/$(LIBPREF)$(1)$(LIBSUF)" > +endef > + > +$(eval $(call FATE_NAMESPACE,avutil, AVUTIL)) > +$(eval $(call FATE_NAMESPACE,avcodec, AVCODEC)) > +$(eval $(call FATE_NAMESPACE,avformat, AVFORMAT)) > +$(eval $(call FATE_NAMESPACE,avfilter, AVFILTER)) > +$(eval $(call FATE_NAMESPACE,avdevice, AVDEVICE)) > +$(eval $(call FATE_NAMESPACE,swscale, SWSCALE)) > +$(eval $(call FATE_NAMESPACE,swresample, SWRESAMPLE)) > +$(eval $(call FATE_NAMESPACE,postproc, POSTPROC)) > + > +FATE += $(FATE_NAMESPACE-yes) > +fate-namespace: $(FATE_NAMESPACE-yes) > diff --git a/tests/fate/namespace.sh b/tests/fate/namespace.sh > new file mode 100755 > index 0000000000..16d306eafc > --- /dev/null > +++ b/tests/fate/namespace.sh > @@ -0,0 +1,15 @@ > +#!/bin/sh > + > +$1 | > + grep ' [TDBR] ' | # Filter to all global text/data/bss symbols. > + grep -v '^ff_' | # Internal-only globals. > + grep -v '^av' | # libav* external API. > + grep -v '^sws' | # libswscale external API. > + grep -v '^swr' | # libswresample external API. > + grep -v '^\(postproc\|pp\)_' | # libpostproc external API. > + grep -v '^\(ffio\|ffurl\)_' | # libavformat internal ffio/ffurl APIs. > + grep -v '^rgb2rgb_init_' | # libswscale arch-specific init function. > + sed 's/ .*//' | # Remove everything except the symbol name. > + sort # Sort to allow deterministic comparison. > + > +exit 0 > diff --git a/tests/ref/fate/namespace-avcodec > b/tests/ref/fate/namespace-avcodec > new file mode 100644 > index 0000000000..e69de29bb2 > diff --git a/tests/ref/fate/namespace-avdevice > b/tests/ref/fate/namespace-avdevice > new file mode 100644 > index 0000000000..e69de29bb2 > diff --git a/tests/ref/fate/namespace-avfilter > b/tests/ref/fate/namespace-avfilter > new file mode 100644 > index 0000000000..e69de29bb2 > diff --git a/tests/ref/fate/namespace-avformat > b/tests/ref/fate/namespace-avformat > new file mode 100644 > index 0000000000..e69de29bb2 > diff --git a/tests/ref/fate/namespace-avutil b/tests/ref/fate/namespace-avutil > new file mode 100644 > index 0000000000..e69de29bb2 > diff --git a/tests/ref/fate/namespace-postproc > b/tests/ref/fate/namespace-postproc > new file mode 100644 > index 0000000000..e69de29bb2 > diff --git a/tests/ref/fate/namespace-swresample > b/tests/ref/fate/namespace-swresample > new file mode 100644 > index 0000000000..e69de29bb2 > diff --git a/tests/ref/fate/namespace-swscale > b/tests/ref/fate/namespace-swscale > new file mode 100644 > index 0000000000..a7aa4504ae > --- /dev/null > +++ b/tests/ref/fate/namespace-swscale > @@ -0,0 +1,58 @@ > +deinterleaveBytes > +interleaveBytes > +planar2x > +rgb12to15 > +rgb12tobgr12 > +rgb15to16 > +rgb15to24 > +rgb15to32 > +rgb15tobgr15 > +rgb15tobgr16 > +rgb15tobgr24 > +rgb15tobgr32 > +rgb16to15 > +rgb16to24 > +rgb16to32 > +rgb16tobgr15 > +rgb16tobgr16 > +rgb16tobgr24 > +rgb16tobgr32 > +rgb24to15 > +rgb24to16 > +rgb24to32 > +rgb24tobgr15 > +rgb24tobgr16 > +rgb24tobgr24 > +rgb24tobgr32 > +rgb32to15 > +rgb32to16 > +rgb32to24 > +rgb32tobgr15 > +rgb32tobgr16 > +rgb32tobgr24 > +rgb48to64_bswap > +rgb48to64_nobswap > +rgb48tobgr48_bswap > +rgb48tobgr48_nobswap > +rgb48tobgr64_bswap > +rgb48tobgr64_nobswap > +rgb64to48_bswap > +rgb64to48_nobswap > +rgb64tobgr48_bswap > +rgb64tobgr48_nobswap > +shuffle_bytes_0321 > +shuffle_bytes_1230 > +shuffle_bytes_2103 > +shuffle_bytes_3012 > +shuffle_bytes_3210 > +uyvytoyuv420 > +uyvytoyuv422 > +vu9_to_vu12 > +yuv422ptouyvy > +yuv422ptoyuy2 > +yuy2toyv12 > +yuyvtoyuv420 > +yuyvtoyuv422 > +yv12touyvy > +yv12toyuy2 > +yvu9_to_yuy2 > I sent a patch (https://ffmpeg.org/pipermail/ffmpeg-devel/2021-January/275382.html) that fixes all of the exceptions above; yet when testing it, a new problem emerged: __x86.get_pc_thunk.* (functions that are used on 32-bit x86 for position-independent code). Of course one can filter them away; but this together with James' report about mingw makes me wary whether such a test is even possible. It might just lead to an ever-growing list of additional filters.
- Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".