Mark Thompson: > On 30/01/2021 04:47, Andreas Rheinhardt wrote: >> 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. > > Given that an implementation can only introduce new external symbols in > its own reserved namespace, maybe this is ok? (The additional things to > remove would be /^_[A-Z_]/ and /[^A-Za-z0-9_]/.) > How would this work with IID_ID3D10BlendState1 (the example mentioned by James)?
- 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".