[FFmpeg-devel] YASM Generation error in dsputil_yasm.asm and workaround

Gilles Sabourin gilles.sabourin at free.fr
Sun Sep 11 10:41:54 CEST 2011


Hi,

Since August, 16th, i have problem to generate "libavcodec/x86/dsputil_yasm.asm". It gives the following errors :

YASM    libavcodec/x86/dsputil_yasm.o
libavcodec/x86/dsputil_yasm.asm:1122: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1122: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1122: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1122: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1122: error: undefined symbol `CLIPD_MMX.loop' (first use)
libavcodec/x86/dsputil_yasm.asm:1122: error:  (Each undefined symbol is reported only once.)
libavcodec/x86/dsputil_yasm.asm:1125: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1125: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1125: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1125: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1127: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1127: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1127: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1127: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1127: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1127: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1127: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1127: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1127: error: undefined symbol `CLIPD_SSE2.loop' (first use)
libavcodec/x86/dsputil_yasm.asm:1130: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1130: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1130: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1130: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1130: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1130: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1130: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1130: error: instruction expected after label
libavcodec/x86/dsputil_yasm.asm:1130: error: undefined symbol `CLIPD_SSE41.loop' (first use)
make: *** [libavcodec/x86/dsputil_yasm.o] Error 1

I am currently using openSUSE, and YASM version is :

# yasm --version
yasm 1.1.0.2352

Finally I found that the problem was commit 38e06c2, where clipd macros have moved from  libavcodec/x86/dsputil_yasm.asm to libavutil/x86/x86util.asm :

commit 38e06c2969184b5b55ec41d0c053b2480ab52846
Author: Ronald S. Bultje <rsbultje at gmail.com>
Date:   Tue Aug 16 21:23:53 2011 -0700

    Move clipd macros to x86util.asm.
    
    This allows sharing them between multiple .asm files.

 libavcodec/x86/dsputil_yasm.asm |   34 +---------------------------------
 libavutil/x86/x86util.asm       |   33 +++++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+), 33 deletions(-)

Having a look at the code, i can't see anything wrong; macro have moved, but an include has been properly added in dsputil_yasm.asm.
However, i am not a YASM expert but i guess this is a YASM bug.

Up to now i have simply reverted 38e06c2, since noone seemed to use this common part elsewhere in the code.

Greetings,
Gilles


More information about the ffmpeg-devel mailing list