[gold patch] PR 22969: Add support for R_AARCH64_TLSLE_LDST8_TPREL_LO12, etc.

Renlin Li renlin.li@foss.arm.com
Wed Mar 28 15:18:00 GMT 2018


Hi Cary,

I applied your patch and compared the results of test cases in my ld linker patches.
The results are identical.

Renlin

On 28/03/18 10:58, Peter Smith wrote:
> Hello Cary,
> 
> The patch looks correct to me, I'm not a binutils maintainer so I
> don't know what is needed for approval, I think Renlin Li is looking
> into bfd so he might be another good person to check this out.
> 
> I've checked it against the test case which can be assembled with
> clang --target=aarch64-linux-gnu tls.s -c
> 
>          .text
>          .globl _start
>          .type _start, %function
> _start:  mrs x8, TPIDR_EL0
> 
>          add x8, x8, :tprel_hi12:var0
>          ldr x0, [x8, :tprel_lo12_nc:var0]
> 
>          add x8, x8, :tprel_hi12:var1
>          ldr w0, [x8, :tprel_lo12_nc:var1]
> 
>          add x8, x8, :tprel_hi12:var2
>          ldrh w0, [x8, :tprel_lo12_nc:var2]
> 
>          add x8, x8, :tprel_hi12:var3
>          ldrb w0, [x8, :tprel_lo12_nc:var3]
> 
>          .globl var0
>          .globl var1
>          .globl var2
>          .globl var3
>          .type   var0,@object
> .type var1,@object
> .type var2,@object
> .type var3,@object
> 
> .section .tbss,"awT",@nobits
> .p2align 2
>          .space 1024 * 3
> var0:
> .quad 0
> .size var1, 8
>          .space 1024 * 3
> var1:
> .word 0
> .size var1, 4
>          .space 1024 * 3
> var2:
> .hword 0
> .size var2, 2
>          .space 1024 * 3
> var3:
> .byte 0
> .size var3, 1
> 
> 
> 
> On 28 March 2018 at 02:54, Cary Coutant <ccoutant@gmail.com> wrote:
>>> Can you please look over this patch and give it a test? Let me know if
>>> it's OK to check in.
>>>
>>> 2018-03-27  Cary Coutant  <ccoutant@gmail.com>
>>>
>>> gold/
>>>          PR gold/22969
>>>          * aarch64-reloc.def: Add TLSLE_LDST* relocations.
>>>          * aarch64.cc (Target_aarch64::optimize_tls_reloc): Likewise.
>>>          (Target_aarch64::Scan::local): Likewise.
>>>          (Target_aarch64::Scan::global): Likewise.
>>>          (Target_aarch64::Relocate::relocate): Likewise.
>>>          (Target_aarch64::Relocate::relocate_tls): Likewise.
>>
>> Oops, one more piece to the patch:
>>
>> elfcpp/
>>          PR gold/22969
>>          * aarch64.h: Fix spelling of R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC.
>>
>> diff --git a/elfcpp/aarch64.h b/elfcpp/aarch64.h
>> index 935a4d70f4..eb1ce6ae79 100644
>> --- a/elfcpp/aarch64.h
>> +++ b/elfcpp/aarch64.h
>> @@ -146,7 +146,7 @@ enum
>>     R_AARCH64_TLSLE_LDST8_TPREL_LO12 = 552,      // TPREL(S+A)
>>     R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC = 553,   // TPREL(S+A)
>>     R_AARCH64_TLSLE_LDST16_TPREL_LO12 = 554,     // TPREL(S+A)
>> -  R_AARCH64_TLSLE_LSDT16_TPREL_LO12_NC = 555,  // TPREL(S+A)
>> +  R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC = 555,  // TPREL(S+A)
>>     R_AARCH64_TLSLE_LDST32_TPREL_LO12 = 556,     // TPREL(S+A)
>>     R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC = 557,  // TPREL(S+A)
>>     R_AARCH64_TLSLE_LDST64_TPREL_LO12 = 558,     // TPREL(S+A)
>>
>> -cary



More information about the Binutils mailing list