[GLIBC][AARCH64]Rewrite elf_machine_load_address using _DYNAMIC symbol
Adhemerval Zanella
adhemerval.zanella@linaro.org
Mon Jan 1 00:00:00 GMT 2018
On 25/01/2018 19:11, Aurelien Jarno wrote:
> Hi,
>
> On 2017-10-18 11:32, Renlin Li wrote:
>> Hi Szabolcs,
>>
>> Here is the C version one which should be portable in all cases.
>> aarch64 native glibc regression test checked Okay.
>>
>> Regards,
>> Renlin
>>
>> ChangeLog:
>>
>> 2017-10-18 Renlin Li <renlin.li@arm.com>
>>
>> * sysdeps/aarch64/dl-machine.h (elf_machine_load_address): Use
>> _DYNAMIC symbol to calculate load address.
>>
>
> I do not know the exact reason of this patch, but my guess is that its
> goal is to fix building with recent binutils version. Indeed with a
> recent snapshot of the binutils 2.30 branch, glibc versions withtout
> this patch fail to build on aarch64 during the linking of ld.so:
>
> ...
>
> | aarch64-linux-gnu-gcc-7 -no-pie -fno-PIE -nostdlib -nostartfiles -shared -o /home/aurel32/glibc-2.26/build-tree/arm64-libc/elf/ld.so.new \
> | -Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=both -Wl,-z,defs \
> | /home/aurel32/glibc-2.26/build-tree/arm64-libc/elf/librtld.os -Wl,--version-script=/home/aurel32/glibc-2.26/build-tree/arm64-libc/ld.map \
> | -Wl,-soname=ld-linux-aarch64.so.1 \
> | -Wl,-defsym=_begin=0
> | /usr/bin/ld: /home/aurel32/glibc-2.26/build-tree/arm64-libc/elf/librtld.os: relocation R_AARCH64_ABS32 against `a local symbol' can not be used when making a shared object
> | /usr/bin/ld: BFD (GNU Binutils for Debian) 2.29.90.20180122 assertion fail ../../bfd/elfnn-aarch64.c:4386
> | /usr/bin/ld: BFD (GNU Binutils for Debian) 2.29.90.20180122 assertion fail ../../bfd/elfnn-aarch64.c:4386
> | /home/aurel32/glibc-2.26/build-tree/arm64-libc/elf/librtld.os: In function `process_envvars':
> | /home/aurel32/glibc-2.26/elf/rtld.c:2499:(.text+0x108c): relocation truncated to fit: R_AARCH64_LD64_GOT_LO12_NC against symbol `audit_list_string' defined in COMMON section in /home/aurel32/glibc-2.26/build-tree/arm64-libc/elf/librtld.os
> | /usr/bin/ld: BFD (GNU Binutils for Debian) 2.29.90.20180122 assertion fail ../../bfd/elfnn-aarch64.c:4386
> | /usr/bin/ld: BFD (GNU Binutils for Debian) 2.29.90.20180122 assertion fail ../../bfd/elfnn-aarch64.c:4386
>
> ...
>
> Given that binutils 2.30 should be released in the next few days, I
> believe we should fix that in at least the 2.26 stable branch. Do you
> mind if I backport this patch to this stable branch?
>
Matthias Klose already pointed out this same issues when he tried to
bootstrap Ubuntu last week. Please backport is to 2.26.
More information about the Libc-stable
mailing list