100 lines
1.8 KiB
ArmAsm
100 lines
1.8 KiB
ArmAsm
.text
|
|
.globl fc1
|
|
.type fc1,@function
|
|
fc1:
|
|
pushl %ebp
|
|
movl %esp, %ebp
|
|
pushl %ebx
|
|
pushl %eax
|
|
call 1f
|
|
1: popl %ebx
|
|
addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
|
|
nop;nop;nop;nop
|
|
|
|
/* @gottpoff IE against global var */
|
|
movl %gs:0, %ecx
|
|
nop;nop
|
|
subl sG3@gottpoff(%ebx), %ecx
|
|
nop;nop;nop;nop
|
|
|
|
/* @gotntpoff IE against global var */
|
|
movl %gs:0, %ecx
|
|
nop;nop
|
|
addl sG4@gotntpoff(%ebx), %ecx
|
|
nop;nop;nop;nop
|
|
|
|
/* GD */
|
|
leal sG1@tlsgd(,%ebx,1), %eax
|
|
call ___tls_get_addr@plt
|
|
nop;nop;nop;nop
|
|
|
|
/* GD */
|
|
leal sG1@tlsdesc(%ebx), %eax
|
|
call *sG1@tlscall(%eax)
|
|
nop;nop;nop;nop
|
|
|
|
/* GD */
|
|
leal sG2@tlsdesc(%ebx), %eax
|
|
call *sG2@tlscall(%eax)
|
|
nop;nop;nop;nop
|
|
|
|
/* GD */
|
|
leal sG2@tlsgd(,%ebx,1), %eax
|
|
call ___tls_get_addr@plt
|
|
nop;nop;nop;nop
|
|
|
|
/* GD -> IE tpoff */
|
|
leal sG3@tlsgd(,%ebx,1), %eax
|
|
call ___tls_get_addr@plt
|
|
nop;nop;nop;nop
|
|
|
|
/* GD -> IE tpoff */
|
|
leal sG3@tlsdesc(%ebx), %eax
|
|
call *sG3@tlscall(%eax)
|
|
nop;nop;nop;nop
|
|
|
|
/* GD -> IE ntpoff */
|
|
leal sG4@tlsdesc(%ebx), %eax
|
|
call *sG4@tlscall(%eax)
|
|
nop;nop;nop;nop
|
|
|
|
/* GD -> IE ntpoff */
|
|
leal sG4@tlsgd(,%ebx,1), %eax
|
|
call ___tls_get_addr@plt
|
|
nop;nop;nop;nop
|
|
|
|
/* GD -> IE ntpoff */
|
|
leal sG5@tlsgd(,%ebx,1), %eax
|
|
call ___tls_get_addr@plt
|
|
nop;nop;nop;nop
|
|
|
|
/* GD -> IE ntpoff */
|
|
leal sG5@tlsdesc(%ebx), %eax
|
|
call *sG5@tlscall(%eax)
|
|
nop;nop;nop;nop
|
|
|
|
/* GD -> IE tpoff */
|
|
leal sG6@tlsdesc(%ebx), %eax
|
|
call *sG6@tlscall(%eax)
|
|
nop;nop;nop;nop
|
|
|
|
/* GD -> IE tpoff */
|
|
leal sG6@tlsgd(,%ebx,1), %eax
|
|
call ___tls_get_addr@plt
|
|
nop;nop;nop;nop
|
|
|
|
/* @gotntpoff IE against global var */
|
|
movl %gs:0, %ecx
|
|
nop;nop
|
|
addl sG5@gotntpoff(%ebx), %ecx
|
|
nop;nop;nop;nop
|
|
|
|
/* @gottpoff IE against global var */
|
|
movl %gs:0, %ecx
|
|
nop;nop
|
|
subl sG6@gottpoff(%ebx), %ecx
|
|
nop;nop;nop;nop
|
|
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
ret
|