Page 1 of 1

MobileVLC iOS broken with NEON enabled

Posted: 10 Aug 2012 06:38
by yalee104
Hi,

With Neon enabled i get the following assembly code compilation error... By the way, there is actually another assembly code error related to complains about relative PC addressing on armv6 aacpsdsp but i disabled armv6 (since i don't need it for old iOS generation devices) in order to get to this point. Is Noen plays crucial part on performance in iPhone4s / iPad2? And is there an estimate time to fix Neon?

i'm building with MacOSX 10.7.4 with Xcode 4.2.3 for iOS5.1

Code: Select all

./libavutil/arm/asm.S:180:cannot use register index with PC-relative addressing -- `ldr r1,[pc,r1]' ./libavutil/arm/asm.S:180:cannot use register index with PC-relative addressing -- `ldr r1,[pc,r1]' ./libavutil/arm/asm.S:180:cannot use register index with PC-relative addressing -- `ldr r1,[pc,r1]' ./libavutil/arm/asm.S:180:cannot use register index with PC-relative addressing -- `ldr r1,[pc,r1]' ./libavutil/arm/asm.S:180:cannot use register index with PC-relative addressing -- `ldr r1,[pc,r1]' ./libavutil/arm/asm.S:180:cannot use register index with PC-relative addressing -- `ldr r1,[pc,r1]' ./libavutil/arm/asm.S:180:cannot use register index with PC-relative addressing -- `ldr r1,[pc,r1]' ./libavutil/arm/asm.S:180:cannot use register index with PC-relative addressing -- `ldr r1,[pc,r1]' ./libavutil/arm/asm.S:180:cannot use register index with PC-relative addressing -- `ldr r1,[pc,r1]' ./libavutil/arm/asm.S:180:cannot use register index with PC-relative addressing -- `ldr r1,[pc,r1]' ./libavutil/arm/asm.S:180:cannot use register index with PC-relative addressing -- `ldr r1,[pc,r1]' ./libavutil/arm/asm.S:180:cannot use register index with PC-relative addressing -- `ldr r1,[pc,r1]' clang: error: assembler command failed with exit code 1 (use -v to see invocation) make[1]: *** [libavcodec/arm/fft_fixed_neon.o] Error 1 make: *** [.ffmpeg] Error 2


Furthermore, with Neon disabled i can pass libav but leads to another compilation error in libmad:

Code: Select all

/bin/sh ./libtool --tag=CC --mode=compile xcrun clang -DHAVE_CONFIG_H -I. -DFPM_ARM -DASO_INTERLEAVE1 -DASO_IMDCT -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk -arch armv7 -mcpu=cortex-a8 -miphoneos-version-min=5.0 -arch armv7 -mcpu=cortex-a8 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk -miphoneos-version-min=5.0 -I/Users/AaronLee/Project/Codec/VLC/MobileVLC/ImportedSources/vlc/contrib/arm-apple-darwin11/include -Wall -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk -arch armv7 -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk -I/Users/AaronLee/Project/Codec/VLC/MobileVLC/ImportedSources/vlc/contrib/arm-apple-darwin11/include -mcpu=cortex-a8 -miphoneos-version-min=5.0 -mcpu=cortex-a8 -miphoneos-version-min=5.0 -O3 -c -o synth.lo synth.c libtool: compile: xcrun clang -DHAVE_CONFIG_H -I. -DFPM_ARM -DASO_INTERLEAVE1 -DASO_IMDCT -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk -arch armv7 -mcpu=cortex-a8 -miphoneos-version-min=5.0 -arch armv7 -mcpu=cortex-a8 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk -miphoneos-version-min=5.0 -I/Users/AaronLee/Project/Codec/VLC/MobileVLC/ImportedSources/vlc/contrib/arm-apple-darwin11/include -Wall -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk -arch armv7 -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk -I/Users/AaronLee/Project/Codec/VLC/MobileVLC/ImportedSources/vlc/contrib/arm-apple-darwin11/include -mcpu=cortex-a8 -miphoneos-version-min=5.0 -mcpu=cortex-a8 -miphoneos-version-min=5.0 -O3 -c synth.c -fno-common -DPIC -o synth.o /var/folders/y_/8c1b0kbx0qldw6tqv7n36c_c0000gn/T/synth-MecHrD.s:305:selected processor does not support `rsc r0,r0,#0' /var/folders/y_/8c1b0kbx0qldw6tqv7n36c_c0000gn/T/synth-MecHrD.s:477:selected processor does not support `rsc r5,r5,#0' /var/folders/y_/8c1b0kbx0qldw6tqv7n36c_c0000gn/T/synth-MecHrD.s:853:selected processor does not support `rsc r0,r0,#0' /var/folders/y_/8c1b0kbx0qldw6tqv7n36c_c0000gn/T/synth-MecHrD.s:1021:selected processor does not support `rsc r9,r9,#0' clang: error: assembler command failed with exit code 1 (use -v to see invocation) make[3]: *** [synth.lo] Error 1 make[2]: *** [install-recursive] Error 1 make[1]: *** [install] Error 2 make: *** [.mad] Error 2
Any idea about the error on libmad?

Re: MobileVLC iOS broken with NEON enabled

Posted: 10 Aug 2012 11:42
by Jean-Baptiste Kempf
Unfortunately, you probably need to fix the code.

Re: MobileVLC iOS broken with NEON enabled

Posted: 10 Aug 2012 13:09
by yalee104
Hi Jean,

Will someone (Developer) from VideoLan fix the broken compilation of MobileVLC? I believe most user is not an expert on low level assembly code fixing.... I believe it's maintained by VideoLan no? otherwise it will always remain broken...

PS. If its related to my environment setting i can understand i have to deal with it with or without help, but it looks like it's compilation issue on assembly code with iOS's assembly compiler which the project will definitely fail on all user who is trying to compile with MacOSX 10.7.x and Xcode 4.3 or later .

No offense, i really appreciate the open source project and will glad to contribute (code or donation) if i find the project useful for my learning....

Re: MobileVLC iOS broken with NEON enabled

Posted: 10 Aug 2012 15:54
by Jean-Baptiste Kempf
maybe, someone will fix...

Re: MobileVLC iOS broken with NEON enabled

Posted: 10 Oct 2012 13:49
by anselmhook
I had an interesting silent failure with libmad (under xcode 4.5 with ios6 and using gcc rather than apples llvm). After applying a bunch of changes suggested by http://stackoverflow.com/questions/1201 ... code-4-4-1 and viewtopic.php?f=12&t=103331 I was left with a mysterious link error that said Libtool was failing because frame.o is not an object. On closer inspection ( with otool ) I found that the libmad object files were not recognized as object files. I imagine this is because of the assembler issues mentioned here ( or possibly something with gcc ); but it was interesting that it pretended to compile them. For my purposes however I can get away without audio so I figure I'll stub out the behavior of everything in libmad.