https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125511

            Bug ID: 125511
           Summary: [ppc] get tls symbol failed using -fno-plt
           Product: gcc
           Version: 14.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: zhenhangwang at huawei dot com
  Target Milestone: ---

I find setting tls symbol failed by using -fno-plt 

libtest.c:
```
__thread int xx;

void write_tls(void)
{
        xx = 1;
}
```
powerpc-linux-gnu-gcc -O2 -fno-plt -fpic -shared libtest.c
-Wl,-soname=libtest.so -o libtest.so

test.c:
```
extern void write_tls(void);
int main(void)
{
        write_tls();
        return 0;
}
```
powerpc-linux-gnu-gcc -O2 -fno-plt test.c -L. -ltest && ./a.out 

And gdb it, the r3 is 0x1001 is invalid, leads to core dump

```
(gdb) disassemble 
(gdb) disassemble 
Dump of assembler code for function write_tls:
   0xb7fad510 <+0>:     stwu    r1,-16(r1)
   0xb7fad514 <+4>:     mflr    r0
   0xb7fad518 <+8>:     bcl     20,4*cr7+so,0xb7fad51c <write_tls+12>
   0xb7fad51c <+12>:    stw     r30,8(r1)
   0xb7fad520 <+16>:    mflr    r30
   0xb7fad524 <+20>:    addis   r30,r30,1
   0xb7fad528 <+24>:    stw     r0,20(r1)
   0xb7fad52c <+28>:    addi    r30,r30,2776
   0xb7fad530 <+32>:    addi    r3,r30,-12
   0xb7fad534 <+36>:    addis   r11,r30,0
   0xb7fad538 <+40>:    lwz     r11,20(r11)
   0xb7fad53c <+44>:    mtctr   r11
   0xb7fad540 <+48>:    bctrl
   0xb7fad544 <+52>:    lwz     r0,20(r1)
   0xb7fad548 <+56>:    li      r9,1
=> 0xb7fad54c <+60>:    stw     r9,0(r3)
   0xb7fad550 <+64>:    lwz     r30,8(r1)
   0xb7fad554 <+68>:    mtlr    r0
   0xb7fad558 <+72>:    addi    r1,r1,16
   0xb7fad55c <+76>:    blr
End of assembler dump.
(gdb) info reg
r0             0x400480            4195456
r1             0xbffffa50          3221224016
r2             0xb8003240          3087020608
r3             0x1001              4097
r4             0xb7ffc948          3086993736
r5             0xbffffcfc          3221224700
r6             0xbffffd5c          3221224796
r7             0xb7fa2f6c          3086626668
r8             0x1                 1
r9             0x1                 1
r10            0xbffffa80          3221224064
r11            0xbffffa50          3221224016
r12            0xb7fad544          3086669124
r13            0x410ff4            4263924
r14            0x0                 0
r15            0x0                 0
r16            0x0                 0
r17            0x0                 0
r18            0x0                 0
r19            0x0                 0
r20            0x0                 0
r21            0x0                 0

```

Reply via email to