[cfe-dev] clang, -fPIC & R_PPC_REL24

James Gregurich bayoubengal at mac.com
Thu Jun 26 15:15:17 PDT 2014


this issue is resolved by building the final exe with -pie. I’m not sure why the final exe has to be position independent just because some of the libraries are shared libs. 



On Jun 26, 2014, at 2:59 PM, James Gregurich <bayoubengal at mac.com> wrote:

> 
> I’m getting the following error when running a ppc (32 bit) exe on a linux-ppc board.
> 
>> # ./testPocsn
>> ./testPocsn: error while loading shared libraries: /usr/lib/libc++.so.3: R_PPC_REL24 relocation at 0x0fbd7928 for symbol `__cxa_guard_acquire' out of range
> 
> 
> 
> A bunch of digging online suggests that the solution to this problem for the shared lib to be compiled with ‘-fPIC’. I checked the build logs on libc++ and it is already compiled with -fPIC.
> 
> 
> I also understand that if -fPIC is issued, then the shared lib should not contain any relative addressing entries (R_PPC_REL24), but 
> 
> 
>> powerpc-unknown-linux-readelf -D -r  libc++.so
> 
> 
> reveals…
> 
> 
>> 00051928  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0005e48c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0005e57c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0005e8c4  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0005eb14  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0005effc  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0005f310  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0005f5e8  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0005f7a4  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0005f970  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0005fb18  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0005fc08  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0005fe28  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00060148  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00060324  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00060508  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000606f4  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000608dc  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00060b34  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00060df0  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000612ac  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00061580  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000617a4  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000619d4  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00061c04  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00062110  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000622f4  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00062610  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0006281c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000629d8  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00062bc4  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00062d80  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00062f6c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00063b14  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00064660  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00076e74  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0007848c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0007a280  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0007a488  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0007add4  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0007af08  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0007b254  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0007c0f0  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0007eb48  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0007ec54  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0007eccc  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000808f8  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000809f8  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00080b44  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00080cc0  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00080e2c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00080f58  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00081044  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00081184  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000812b8  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000813a4  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000814e4  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00081730  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000818fc  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00081a30  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00081b58  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00081c8c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00081ec4  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0008212c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00082c04  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0008372c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0008382c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00088d68  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00088de4  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00089014  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00089090  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000892c0  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0008933c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00089634  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000896b0  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000899a8  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00089a24  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00089b64  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00089be0  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00089d20  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00089e2c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00089f44  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0008a050  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0008a168  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0008a274  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0008a38c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0008a498  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0008d434  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00092ed0  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00098614  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 00099eb0  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009a91c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009abec  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009aeb8  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009b1fc  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009b2f8  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009b908  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009b9f4  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009bfc4  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009c138  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009c4e0  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009ce8c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009d808  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009dad8  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009dda4  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009e0e8  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009e1e4  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009e6f8  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009e7e4  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009edc8  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009ef3c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 0009f2e0  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000a6184  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000a6294  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000a6790  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000a6898  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000a69a0  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000a6dd0  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000a6ee0  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000a73e8  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000a74f0  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000a75f8  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000a7c04  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000a7d0c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000a7e14  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000a8124  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000a822c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000a8334  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000affac  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000b18f0  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000b3ecc  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000b3fe4  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000b40fc  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000b50ac  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000b524c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000b536c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000b558c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000b5744  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000b5978  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000b5b24  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000b5ce8  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000b5e7c  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000b6014  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000b61ac  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000b6348  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000b6500  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000b7054  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000cdca8  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000cde78  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000cdf58  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000ceca0  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
>> 000cf164  0000db0a R_PPC_REL24       00000000   __cxa_guard_acquire + 0
> 
> 
> 
> questions….  
> 
> Is this correct behavior for clang? If you specify the -fPIC, is ok to have R_PPC_REL24 references? If the behavior is correct, then why is the library loading failing?
> 
> 
> further info...
> 
>> $  powerpc-unknown-linux-nm  libc++.so
>> 
>> 0005e130 t __clang_call_terminate
>>          U __ctype_get_mb_cur_max@@GLIBC_2.0
>>          U __cxa_allocate_exception@@CXXABI_1.3
>>          U __cxa_atexit@@GLIBC_2.1.3
>>          U __cxa_begin_catch@@CXXABI_1.3
>>          U __cxa_end_catch@@CXXABI_1.3
>>          w __cxa_finalize@@GLIBC_2.1.3
>>          U __cxa_free_exception@@CXXABI_1.3
>>          U __cxa_guard_abort@@CXXABI_1.3
>>          U __cxa_guard_acquire@@CXXABI_1.3
>>          U __cxa_guard_release@@CXXABI_1.3
>>          U __cxa_pure_virtual@@CXXABI_1.3
>>          U __cxa_rethrow@@CXXABI_1.3
>>          U __cxa_throw@@CXXABI_1.3
>> 
>> 
> 
> 
> 
>> $  powerpc-unknown-linux-nm libstdc++.so
>> 
>> 0006f174 T __cxa_guard_abort
>> 0006efc8 T __cxa_guard_acquire
>> 0006f20c T __cxa_guard_release
>> 0006fb48 T __cxa_pure_virtual
>> 0006ed90 T __cxa_rethrow
> 
> 
> 
> 
> 
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20140626/81f60ddb/attachment.html>


More information about the cfe-dev mailing list