[ARM] Fix ld.so crash when built using Binutils 2.29

Jiong Wang jiong.wang@foss.arm.com
Wed Jul 12 16:33:00 GMT 2017



On 12/07/17 17:23, Ramana Radhakrishnan wrote:
> On Wed, Jul 12, 2017 at 5:13 PM, Jiong Wang <jiong.wang@foss.arm.com> wrote:
>> Hi,
>>
>>    There is bug report that ld.so in GLIBC 2.24 built by Binutils 2.29 will
>> crash
>> on arm-linux-gnueabihf.  This is confirmed, and the details is at:
>>
>>     https://sourceware.org/bugzilla/show_bug.cgi?id=21725.
>>
>>    And I could also reproduce this crash using GLIBC master.
>>
>>    As analyzed in the PR, the old code was with the assumption that assembler
>> won't set bit0 of thumb function address if it comes from PC-relative
>> instructions and the calculation can be finished during assembling.  This
>> assumption however does not hold after PR gas/21458.
>>
>>    I think ARM backend in GLIBC should be fix to be more portable so it could
>> work with various combinations of GLIBC and Binutils.
>>
>>    OK for master and backport to all release branches?
> Has a combination of a binutils that did not have the fix for 21458 +
> glibc with this patch been tested ?

It has been tested.

PR gas/21458 will set lsb of the address, so now the lsb may or may not be set and this
depends on whether you are using old or new Binutils.  Always strip "pcrel_addr" makes
its lsb status synced with "got_addr".

>
> Ramana
>>
>> 2017-07-12  Jiong Wang  <jiong.wang@arm.com>
>>
>>          * sysdeps/arm/dl-machine.h (elf_machine_load_address):  Also strip
>> bit 0
>>          of pcrel_address under Thumb mode.
>>



More information about the Libc-alpha mailing list