[cfe-dev] clang, -fPIC & R_PPC_REL24
James Gregurich
bayoubengal at mac.com
Thu Jun 26 12:59:54 PDT 2014
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20140626/3690016f/attachment.html>
More information about the cfe-dev
mailing list