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.