blob: 3a8b794195dd283aff014664401422924f896e4a [file] [log] [blame]
.section ".tdata", "awT", @progbits
.globl baz
.hidden baz
.globl var
.hidden var2
bar: .long 27
baz: .long 29
var: .long 31
var2: .long 33
.text
.globl fn
.type fn,@function
fn:
/* Main binary, no PIC. */
1: movl 1b, %edx
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %edx
/* foo can be anywhere in startup TLS. */
movl %gs:0, %eax
subl foo@GOTTPOFF(%edx), %eax
/* %eax now contains &foo. */
/* bar only in the main program. */
movl %gs:0, %eax
subl $bar@TPOFF, %eax
/* %eax now contains &bar. */
/* baz only in the main program. */
movl %gs:0, %ecx
/* Arbitrary instructions in between. */
nop
subl $baz@TPOFF, %ecx
/* %ecx now contains &baz. */
/* var and var2 only in the main program. */
movl %gs:0, %ecx
/* Arbitrary instructions in between. */
nop
nop
leal var@NTPOFF(%ecx), %eax
/* Arbitrary instructions in between. */
nop
leal var2@NTPOFF(%ecx), %edx
/* foo can be anywhere in startup TLS. */
movl foo@INDNTPOFF, %eax
movl %gs:(%eax), %eax
/* %eax now contains foo. */
movl %gs:0, %eax
addl foo@INDNTPOFF, %eax
/* %eax now contains &foo. */
ret