[FFmpeg-trac] #5164(avcodec:new): clang fails compilation of pfft for android-arm
FFmpeg
trac at avcodec.org
Sun Jan 17 18:22:31 CET 2016
#5164: clang fails compilation of pfft for android-arm
-------------------------------------+-------------------------------------
Reporter: cehoyos | Owner:
Type: defect | Status: new
Priority: normal | Component: avcodec
Version: git- | Keywords: android osx
master | arm
Blocked By: | Blocking:
Reproduced by developer: 0 | Analyzed by developer: 0
-------------------------------------+-------------------------------------
I installed clang for Android as explained in ticket #5158 in a directory
android9standalone. If gas-preprocessor is installed, compilation works
fine with {{{--disable-fft}}}.
Compilation of all fft-related files fails for the following configure
line:
{{{
$ ../FFmpeg/configure --cross-prefix=../android9standalone/bin/arm-linux-
androideabi- --arch=arm --target-os=android
--sysroot=../android9standalone/sysroot --cc=../android9standalone/bin
/arm-linux-androideabi-clang --cpu=cortex-a8
}}}
{{{
$ make V=1 libavcodec/arm/fft_vfp.o
gas-preprocessor.pl -arch arm -as-type clang -- ../android9standalone/bin
/arm-linux-androideabi-clang -I. -I/Users/cehoyos/Projects/FFmpeg/
--sysroot=../android9standalone/sysroot -isysroot
../android9standalone/sysroot -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64
-D_LARGEFILE_SOURCE -Dstrtod=avpriv_strtod -DPIC -DZLIB_CONST
-mcpu=cortex-a8 -fPIC -g -Qunused-arguments -MMD -MF
libavcodec/arm/fft_vfp.d -MT libavcodec/arm/fft_vfp.o -c -o
libavcodec/arm/fft_vfp.o
/Users/cehoyos/Projects/FFmpeg/libavcodec/arm/fft_vfp.S
<stdin>:677:17: error: redefinition of 'gp' does not match original.
gp .req a1
^
<stdin>:852:17: error: redefinition of 'gp' does not match original.
gp .req a1
^
<stdin>:1027:17: error: redefinition of 'gp' does not match original.
gp .req a1
^
<stdin>:1204:17: error: redefinition of 'gp' does not match original.
gp .req a1
^
<stdin>:1385:17: error: redefinition of 'gp' does not match original.
gp .req a1
^
<stdin>:1566:17: error: redefinition of 'gp' does not match original.
gp .req a1
^
<stdin>:1747:17: error: redefinition of 'gp' does not match original.
gp .req a1
^
<stdin>:1928:17: error: redefinition of 'gp' does not match original.
gp .req a1
^
<stdin>:2109:17: error: redefinition of 'gp' does not match original.
gp .req a1
^
<stdin>:2290:17: error: redefinition of 'gp' does not match original.
gp .req a1
^
<stdin>:2471:17: error: redefinition of 'gp' does not match original.
gp .req a1
^
make: *** [libavcodec/arm/fft_vfp.o] Error 1
}}}
{{{
$ make V=1 libavcodec/arm/fft_neon.o
gas-preprocessor.pl -arch arm -as-type clang -- ../android9standalone/bin
/arm-linux-androideabi-clang -I. -I/Users/cehoyos/Projects/FFmpeg/
--sysroot=../android9standalone/sysroot -isysroot
../android9standalone/sysroot -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64
-D_LARGEFILE_SOURCE -Dstrtod=avpriv_strtod -DPIC -DZLIB_CONST
-mcpu=cortex-a8 -fPIC -g -Qunused-arguments -MMD -MF
libavcodec/arm/fft_neon.d -MT libavcodec/arm/fft_neon.o -c -o
libavcodec/arm/fft_neon.o
/Users/cehoyos/Projects/FFmpeg/libavcodec/arm/fft_neon.S
<stdin>:404:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:439:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:474:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:509:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:544:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:579:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:614:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:649:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:684:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:719:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:754:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:789:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
make: *** [libavcodec/arm/fft_neon.o] Error 1
}}}
{{{
$ make V=1 libavcodec/arm/fft_fixed_neon.o
gas-preprocessor.pl -arch arm -as-type clang -- ../android9standalone/bin
/arm-linux-androideabi-clang -I. -I/Users/cehoyos/Projects/FFmpeg/
--sysroot=../android9standalone/sysroot -isysroot
../android9standalone/sysroot -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64
-D_LARGEFILE_SOURCE -Dstrtod=avpriv_strtod -DPIC -DZLIB_CONST
-mcpu=cortex-a8 -fPIC -g -Qunused-arguments -MMD -MF
libavcodec/arm/fft_fixed_neon.d -MT libavcodec/arm/fft_fixed_neon.o -c -o
libavcodec/arm/fft_fixed_neon.o
/Users/cehoyos/Projects/FFmpeg/libavcodec/arm/fft_fixed_neon.S
<stdin>:448:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:482:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:516:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:550:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:584:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:618:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:652:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:686:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:720:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:754:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
<stdin>:788:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
make: *** [libavcodec/arm/fft_fixed_neon.o] Error 1
}}}
{{{
$ make V=1 libavcodec/arm/sbrdsp_neon.o
gas-preprocessor.pl -arch arm -as-type clang -- ../android9standalone/bin
/arm-linux-androideabi-clang -I. -I/Users/cehoyos/Projects/FFmpeg/
--sysroot=../android9standalone/sysroot -isysroot
../android9standalone/sysroot -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64
-D_LARGEFILE_SOURCE -Dstrtod=avpriv_strtod -DPIC -DZLIB_CONST
-mcpu=cortex-a8 -fPIC -g -Qunused-arguments -MMD -MF
libavcodec/arm/sbrdsp_neon.d -MT libavcodec/arm/sbrdsp_neon.o -c -o
libavcodec/arm/sbrdsp_neon.o
/Users/cehoyos/Projects/FFmpeg/libavcodec/arm/sbrdsp_neon.S
<stdin>:515:17: error: redefinition of 'gp' does not match original.
gp .req r12
^
make: *** [libavcodec/arm/sbrdsp_neon.o] Error 1
}}}
The errors are related to the macro movrelx in libavutil/arm/asm.S
Workaround is to specify a compatible assembler:
{{{
$ ../FFmpeg/configure --cross-prefix=../android9standalone/bin/arm-linux-
androideabi- --arch=arm --target-os=android
--sysroot=../android9standalone/sysroot --cc=../android9standalone/bin
/arm-linux-androideabi-clang --cpu=cortex-a8
--as=../android9standalone/bin/arm-linux-androideabi-gcc
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/5164>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list