[LLVMdev] Invalid relocation types for Thumb in LLVM version 2.9

Nick Kledzik kledzik at apple.com
Mon Feb 20 13:08:28 PST 2012

The llvm compiler can now generated movt/movw instructions to create 32-bit constants.  Those new instructions use new relocations.  Mach-o uses different numbering for relocations than ELF does.  For mach-o, ARM_RELOC_PAIR=1 and ARM_RELOC_HALF=8.   You need a newer linker that understands the new relocations.


On Feb 20, 2012, at 5:20 AM, Harel Cain wrote:
> Hi all,
> I'm trying to figure out a problem with relocation types 1 and 8 (as observed using otool -r on ARM/Thumb object files). Earlier, when I used LLVM 2.8 with llc to generate thumb (-march=thumb -mattr=+thumb2) assembly listings, then assemble those using the gcc of iPhone 4.2 SDK, there wasn't any problem.
> However starting with LLVM 2.9, the same toolchain emits slightly different assembly listings that after assembly into object files have relocation entries of type 1 and 8 which the iPhonsOS 4.2 SDK linker doesn't like (they produce warnings, and the linked binary crashes).
> According to http://simplemachines.it/doc/aaelf.pdf, these relocation types are called R_ARM_PC24 and R_ARM_ABS8. They simply weren't created with the assembly listings generated with LLVM 2.8.
> Anyone has any suggestion has to solve this? Is there any other toolchain combination you can suggest in order to build Thumb object files for the iOS/ARM platform? I'm not sure I'm even using LLVM the way I should here.
> Many thanks!
> Harel Cain
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120220/19548351/attachment.html>

More information about the llvm-dev mailing list