| .section .tdata,"awT",@progbits |
| .align 2 |
| .global foo, bar |
| .hidden bar |
| foo: .long 25 |
| bar: .long 27 |
| baz: .long 29 |
| .text |
| .align 1 |
| .global fn |
| .type fn, @function |
| fn: |
| mov.l r12,@-r15 |
| mov.l r14,@-r15 |
| sts.l pr,@-r15 |
| mova .L3,r0 |
| mov.l .L3,r12 |
| add r0,r12 |
| mov r15,r14 |
| |
| ! Dynamic TLS model, foo not known to be in the current object |
| mov.l 1f,r4 |
| mova 2f,r0 |
| mov.l 2f,r1 |
| add r0,r1 |
| jsr @r1 |
| add r12,r4 |
| bra 3f |
| nop |
| .align 2 |
| 1: .long foo@TLSGD |
| 2: .long __tls_get_addr@PLT |
| 3: |
| |
| ! Dynamic TLS model, bar and baz known to be in the current object |
| mov.l 1f,r4 |
| mova 2f,r0 |
| mov.l 2f,r1 |
| add r0,r1 |
| jsr @r1 |
| add r12,r4 |
| bra 3f |
| nop |
| .align 2 |
| 1: .long bar@TLSLDM |
| 2: .long __tls_get_addr@PLT |
| 3: |
| ! Just show that there can be arbitrary instructions here |
| mov #1,r2 |
| |
| mov.l .L4,r1 |
| add r1,r0 |
| ! r0 now contains &bar |
| |
| ! Again, arbitrary instructions |
| mov.l r2,@r0 |
| |
| mov.l .L5,r1 |
| add r1,r0 |
| ! r0 now contains &baz |
| |
| mov r14,r15 |
| lds.l @r15+,pr |
| mov.l @r15+,r14 |
| rts |
| mov.l @r15+,r12 |
| |
| .align 2 |
| .L3: .long _GLOBAL_OFFSET_TABLE_ |
| .L4: .long bar@DTPOFF |
| .L5: .long baz@DTPOFF |