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

Christophe Lyon christophe.lyon@linaro.org
Fri Dec 4 09:25:00 GMT 2015


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?

>>
>> 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