[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