<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>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.</div><div><br></div><div>-Nick</div><br><div><div>On Feb 20, 2012, at 5:20 AM, Harel Cain wrote:</div><blockquote type="cite"><div dir="ltr">Hi all,<br><br>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.<br>
<br>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).<br>
<br>According to <a href="http://simplemachines.it/doc/aaelf.pdf">http://simplemachines.it/doc/aaelf.pdf</a>, 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.<br>
<br>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.<br>
<br><br>Many thanks!<br><br><br>Harel Cain<br><br>
</div>
_______________________________________________<br>LLVM Developers mailing list<br><a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu">http://llvm.cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br></blockquote></div><br></body></html>