[12/16][binutils][AARCH64]Add relocation support for large memory model. [BFD]Create GOT section for TLSLE_MOVW_TPREL_G(1, 1_NC, 2).

Jiong Wang jiong.wang@foss.arm.com
Fri Dec 4 09:38:00 GMT 2015



On 04/12/15 09:25, Christophe Lyon wrote:
> On 3 December 2015 at 16:19, Jiong Wang <jiong.wang@foss.arm.com> wrote:
>>
>> On 03/12/15 14:57, Jiong Wang wrote:
>>>
>>>
>>> On 03/12/15 14:50, Renlin Li wrote:
>>>>
>>>>
>>>> On 03/12/15 14:23, Jiong Wang wrote:
>>>>>
>>>>>
>>>>> On 08/09/15 19:00, Renlin Li wrote:
>>>>>> Hi all,
>>>>>>
>>>>>> This patch fixes a bug, got section is not generated for
>>>>>> TLSLE_MOVW_TPREL_G1,TLSLE_MOVW_TPREL_G1_NC, TLSLE_MOVW_TPREL_G2 previously.
>>>>>>
>>>>>> LD regression test Okay. Okay to commit?
>>>>>>
>>>>>> Regards,
>>>>>> Renlin
>>>>>>
>>>>>> bfd/ChangeLog:
>>>>>>
>>>>>> 2015-09-08  Renlin Li <renlin.li@arm.com>
>>>>>>
>>>>>>      * elfnn-aarch64.c (elfNN_aarch64_check_relocs): Create GOT section
>>>>>>          for TLSLE_MOVW_TPREL_G(1, 1_NC, 2) relocation.
>>>>>
>>>>> This looks wrong to me, and will cause inconsistent inside AArch64
>>>>> backend.
>>>>>
>>>>> All TLS Local Executable relocation types don't need any GOT entry, we
>>>>> shouldn't listed them here.
>>>>
>>>> Yes, you are right. I am wrong there.
>>>>
>>>>> Looks like this patch was trying to fix the following two testcase
>>>>> failures:
>>>>>
>>>>> Running
>>>>> /work/GNU-TOOLCHAIN/binutils-gdb/ld/testsuite/ld-aarch64/aarch64-elf.exp ...
>>>>> FAIL: ld-aarch64/tls-relax-large-gd-le
>>>>> FAIL: ld-aarch64/tls-relax-large-desc-le
>>>>>
>>>>> The correct fix is to add "-shared" to the test option, then the symbol
>>>>> _GLOBAL_OFFSET_TABLE_ will be defined, always.
>>>>
>>>> -shared could make the test cases pass, but is it required? The test case
>>>> itself should be legal even without "-shared".
>>>
>>> For that two particular testcases, the most important thing is to make
>>> sure the tls relaxations are tested, either "-shared" or not doesn't matter.
>>
>> Oh, for these GD->LE testcases, shouldn't be shared, otherwise the
>> relaxation will not happen.
>>
>>
> I guess I'm missing something obvious: these 2 testcases PASS for me
> (target aarch64-linux-gnu).
> In which configuration do you see them failing?

I mean they will fail after we revert this patch.

This patch was trying to fix the failing in an incorrect way.

>
>>> As you have referenced _GLOBAL_OFFSET_TABLE_, you need to specify -shared,
>>> or you can just remove the reference, they are not related what's tested.
>>>
>>>> Regards,
>>>> Renlin Li
>>>>
>>>>



More information about the Binutils mailing list