blob: bd63fd47b0fa400763127af8711f418734318e08 [file] [log] [blame]
.section ".tdata", "awT", @progbits
.globl foo
foo: .long 25
.text
.globl fn
.type fn,@function
fn:
pushl %ebp
movl %esp, %ebp
pushl %ebx
pushl %eax
call 1f
1: popl %ebx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
/* foo can be anywhere in the startup TLS */
movl %gs:0, %eax
/* Arbitrary instructions in between. */
addl $0, %esi
subl foo@GOTTPOFF(%ebx), %eax
/* %eax now contains &foo */
/* Now the GNU sequence. */
movl foo@GOTNTPOFF(%ebx), %eax
/* Arbitrary instructions in between. */
addl $0, %esi
movl %gs:(%eax), %eax
/* %eax now contains foo */
movl %gs:0, %ecx
addl foo@GOTNTPOFF(%ebx), %ecx
movl -4(%ebp), %ebx
leave
ret