https://sourceware.org/bugzilla/show_bug.cgi?id=19169
Bug ID: 19169 Summary: Gold emits incorrect R_AARCH64_ABS64 Product: binutils Version: 2.24 Status: NEW Severity: normal Priority: P2 Component: gold Assignee: ccoutant at gmail dot com Reporter: eugeni.stepanov at gmail dot com CC: ian at airs dot com Target Milestone: --- The following code, when placed in a non-symbolically linked shared library, fails on Android/AArch64 when linked with gold. int A[10] = {1, 0}; int *B = A; extern "C" void f() { int *C = A; assert(B == C); } Let's reduce it to: int A[10] = {1, 0}; int *B = A; $ objdump -t 1.o 0000000000000000 g O .data 0000000000000028 A 0000000000000000 g O .data.rel 0000000000000008 B $ objdump -r 1.o RELOCATION RECORDS FOR [.data.rel]: OFFSET TYPE VALUE 0000000000000000 R_AARCH64_ABS64 A $ objdump -s -j .data.rel 1.o Contents of section .data.rel: 0000 00000000 00000000 ........ Link with gold. $ objdump -T gold.so 0000000000002018 g DO .data 0000000000000028 A 0000000000002040 g DO .data 0000000000000008 B $ objdump -R gold.so DYNAMIC RELOCATION RECORDS OFFSET TYPE VALUE 0000000000001e28 R_AARCH64_RELATIVE *ABS*+0x00000000000003e0 0000000000002040 R_AARCH64_ABS64 A $ objdump -s -j .data gold.so Contents of section .data: 2010 00000000 00000000 01000000 00000000 ................ 2020 00000000 00000000 00000000 00000000 ................ 2030 00000000 00000000 00000000 00000000 ................ 2040 18200000 00000000 . ...... The addend at 0x2040 is not zero. This makes B point to A + 0x182. The addend should be zero. To reproduce: grab android-ndk-r10e from google ./build/tools/make-standalone-toolchain.sh --toolchain aarch64-linux-android-clang3.6 --platform=android-21 --install-dir=standalone-clang-aarch64 cd standalone-clang-aarch64 cat >1.cc int A[10] = {1, 0}; int *B = A; ^D ./bin/clang++ 1.cc -shared -fPIC -o 1.so -fuse-ld=gold objdump -s -j .data 1.so -- You are receiving this mail because: You are on the CC list for the bug. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils