[FFmpeg-trac] #4918(undetermined:new): SSSE3 compilation for vp9 fails with nasm on OS X

FFmpeg trac at avcodec.org
Thu Oct 8 14:09:17 CEST 2015


#4918: SSSE3 compilation for vp9 fails with nasm on OS X
-------------------------------------+-------------------------------------
               Reporter:  cehoyos    |                  Owner:
                   Type:  defect     |                 Status:  new
               Priority:  normal     |              Component:
                Version:  git-       |  undetermined
  master                             |               Keywords:  vp9
             Blocked By:             |               Blocking:
Reproduced by developer:  0          |  Analyzed by developer:  0
-------------------------------------+-------------------------------------
 As reported in ticket #4916, current git head fails to compile on OS X if
 the default nasm assembler is used.
 {{{
 $ make V=1
 gcc -Llibavcodec -Llibavdevice -Llibavfilter -Llibavformat -Llibavresample
 -Llibavutil -Llibpostproc -Llibswscale -Llibswresample
 -Wl,-dynamic,-search_paths_first -Qunused-arguments   -o ffmpeg_g
 cmdutils.o ffmpeg_opt.o ffmpeg_filter.o ffmpeg.o  ffmpeg_videotoolbox.o
 -lavdevice -lavfilter -lavformat -lavcodec -lswresample -lswscale -lavutil
 -framework QTKit -framework Foundation -framework QuartzCore -framework
 CoreVideo -framework Foundation -framework AVFoundation -framework
 CoreMedia -framework CoreFoundation -framework VideoToolbox -framework
 CoreMedia -framework QuartzCore -framework CoreServices -framework
 CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore
 -framework CoreServices -liconv -Wl,-framework,CoreFoundation
 -Wl,-framework,Security -framework CoreGraphics -lm -lbz2 -lz -pthread
 ld: warning: directory not found for option '-Llibavresample'
 Undefined symbols for architecture x86_64:
   "_ff_filters_ssse3", referenced from:
       _put_8tap_smooth_64hv_8_ssse3 in libavcodec.a(vp9dsp_init.o)
       _put_8tap_regular_64hv_8_ssse3 in libavcodec.a(vp9dsp_init.o)
       _put_8tap_sharp_64hv_8_ssse3 in libavcodec.a(vp9dsp_init.o)
       _put_8tap_smooth_64v_8_ssse3 in libavcodec.a(vp9dsp_init.o)
       _put_8tap_regular_64v_8_ssse3 in libavcodec.a(vp9dsp_init.o)
       _put_8tap_sharp_64v_8_ssse3 in libavcodec.a(vp9dsp_init.o)
       _put_8tap_smooth_64h_8_ssse3 in libavcodec.a(vp9dsp_init.o)
       ...
 ld: symbol(s) not found for architecture x86_64
 clang: error: linker command failed with exit code 1 (use -v to see
 invocation)
 make: *** [ffmpeg_g] Error 1
 }}}
 The reason is that nasm fails to output ff_filters_ssse3 in vp9mc.o:
 {{{
 $ make V=1 libavcodec/x86/vp9mc.o
 nasm -f macho64  -DPIC -DPREFIX -I./ -Pconfig.asm -I libavcodec/x86/ -M -o
 libavcodec/x86/vp9mc.o libavcodec/x86/vp9mc.asm > libavcodec/x86/vp9mc.d
 nasm -f macho64  -DPIC -DPREFIX -I./ -Pconfig.asm -I libavcodec/x86/ -o
 libavcodec/x86/vp9mc.o libavcodec/x86/vp9mc.asm
 strip -x -x libavcodec/x86/vp9mc.o
 }}}
 {{{
 $ nm libavcodec/x86/vp9mc.o
 00000000000046db S _ff_filters_16bpp
 000000000000305b S _ff_filters_sse2
                  U _ff_pw_256
                  U _ff_pw_64
 0000000000001990 T _ff_vp9_avg128_16_avx2
 0000000000001850 T _ff_vp9_avg128_16_sse2
 0000000000001750 T _ff_vp9_avg16_16_sse2
 0000000000001480 T _ff_vp9_avg16_8_sse2
 00000000000018e0 T _ff_vp9_avg32_16_avx2
 00000000000017b0 T _ff_vp9_avg32_16_sse2
 0000000000001650 T _ff_vp9_avg32_8_avx2
 00000000000014e0 T _ff_vp9_avg32_8_sse2
 00000000000012f0 T _ff_vp9_avg4_8_mmxext
 0000000000001940 T _ff_vp9_avg64_16_avx2
 0000000000001800 T _ff_vp9_avg64_16_sse2
 00000000000016b0 T _ff_vp9_avg64_8_avx2
 0000000000001530 T _ff_vp9_avg64_8_sse2
 0000000000001700 T _ff_vp9_avg8_16_mmxext
 0000000000001340 T _ff_vp9_avg8_8_mmxext
 0000000000000650 T _ff_vp9_avg_8tap_1d_h_16_8_ssse3
 0000000000000810 T _ff_vp9_avg_8tap_1d_h_32_8_avx2
 00000000000000a0 T _ff_vp9_avg_8tap_1d_h_4_8_mmxext
 00000000000003a0 T _ff_vp9_avg_8tap_1d_h_4_8_ssse3
 0000000000000240 T _ff_vp9_avg_8tap_1d_h_8_8_sse2
 00000000000004c0 T _ff_vp9_avg_8tap_1d_h_8_8_ssse3
 0000000000000fb0 T _ff_vp9_avg_8tap_1d_v_16_8_ssse3
 0000000000001190 T _ff_vp9_avg_8tap_1d_v_32_8_avx2
 0000000000000990 T _ff_vp9_avg_8tap_1d_v_4_8_mmxext
 0000000000000cd0 T _ff_vp9_avg_8tap_1d_v_4_8_ssse3
 0000000000000b50 T _ff_vp9_avg_8tap_1d_v_8_8_sse2
 0000000000000e00 T _ff_vp9_avg_8tap_1d_v_8_8_ssse3
 0000000000001610 T _ff_vp9_put128_avx
 0000000000001430 T _ff_vp9_put128_sse
 0000000000001390 T _ff_vp9_put16_sse
 0000000000001580 T _ff_vp9_put32_avx
 00000000000013d0 T _ff_vp9_put32_sse
 0000000000001270 T _ff_vp9_put4_mmx
 00000000000015d0 T _ff_vp9_put64_avx
 0000000000001400 T _ff_vp9_put64_sse
 00000000000012b0 T _ff_vp9_put8_mmx
 0000000000000560 T _ff_vp9_put_8tap_1d_h_16_8_ssse3
 0000000000000740 T _ff_vp9_put_8tap_1d_h_32_8_avx2
 0000000000000000 T _ff_vp9_put_8tap_1d_h_4_8_mmxext
 0000000000000330 T _ff_vp9_put_8tap_1d_h_4_8_ssse3
 0000000000000150 T _ff_vp9_put_8tap_1d_h_8_8_sse2
 0000000000000420 T _ff_vp9_put_8tap_1d_h_8_8_ssse3
 0000000000000eb0 T _ff_vp9_put_8tap_1d_v_16_8_ssse3
 00000000000010b0 T _ff_vp9_put_8tap_1d_v_32_8_avx2
 00000000000008e0 T _ff_vp9_put_8tap_1d_v_4_8_mmxext
 0000000000000c50 T _ff_vp9_put_8tap_1d_v_4_8_ssse3
 0000000000000a50 T _ff_vp9_put_8tap_1d_v_8_8_sse2
 0000000000000d50 T _ff_vp9_put_8tap_1d_v_8_8_ssse3
 }}}
 Without stripping, nm shows the symbol _ff_filters_ssse3 but compilation
 still fails with the same error message.

--
Ticket URL: <https://trac.ffmpeg.org/ticket/4918>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list