* Fix PIC code for BSD x86_64 syscall and x86_64 freebsd startup assembler files

git-svn-id: trunk@19181 -
This commit is contained in:
pierre 2011-09-22 21:16:42 +00:00
parent f8279d9070
commit b9009d8c02
4 changed files with 41 additions and 11 deletions

View File

@ -34,7 +34,11 @@ asm
{$ifdef FPC_PIC} {$ifdef FPC_PIC}
movq fpc_threadvar_relocate_proc@GOTPCREL(%rip),%rax movq fpc_threadvar_relocate_proc@GOTPCREL(%rip),%rax
movq (%rax),%rax movq (%rax),%rax
{$ifndef FPC_STATICRIPFIXED}
movq Errno@GOTPCREL(%rip),%r11 movq Errno@GOTPCREL(%rip),%r11
{$else}
leaq Errno(%rip),%r11
{$endif}
{$else FPC_PIC} {$else FPC_PIC}
movq fpc_threadvar_relocate_proc,%rax movq fpc_threadvar_relocate_proc,%rax
leaq Errno,%r11 leaq Errno,%r11
@ -65,7 +69,11 @@ asm
{$ifdef FPC_PIC} {$ifdef FPC_PIC}
movq fpc_threadvar_relocate_proc@GOTPCREL(%rip),%rax movq fpc_threadvar_relocate_proc@GOTPCREL(%rip),%rax
movq (%rax),%rax movq (%rax),%rax
{$ifndef FPC_STATICRIPFIXED}
movq Errno@GOTPCREL(%rip),%r11 movq Errno@GOTPCREL(%rip),%r11
{$else}
leaq Errno(%rip),%r11
{$endif}
{$else FPC_PIC} {$else FPC_PIC}
movq fpc_threadvar_relocate_proc,%rax movq fpc_threadvar_relocate_proc,%rax
leaq Errno,%r11 leaq Errno,%r11
@ -97,7 +105,11 @@ asm
{$ifdef FPC_PIC} {$ifdef FPC_PIC}
movq fpc_threadvar_relocate_proc@GOTPCREL(%rip),%rax movq fpc_threadvar_relocate_proc@GOTPCREL(%rip),%rax
movq (%rax),%rax movq (%rax),%rax
{$ifndef FPC_STATICRIPFIXED}
movq Errno@GOTPCREL(%rip),%r11 movq Errno@GOTPCREL(%rip),%r11
{$else}
leaq Errno(%rip),%r11
{$endif}
{$else FPC_PIC} {$else FPC_PIC}
movq fpc_threadvar_relocate_proc,%rax movq fpc_threadvar_relocate_proc,%rax
leaq Errno,%r11 leaq Errno,%r11
@ -130,7 +142,11 @@ asm
{$ifdef FPC_PIC} {$ifdef FPC_PIC}
movq fpc_threadvar_relocate_proc@GOTPCREL(%rip),%rax movq fpc_threadvar_relocate_proc@GOTPCREL(%rip),%rax
movq (%rax),%rax movq (%rax),%rax
{$ifndef FPC_STATICRIPFIXED}
movq Errno@GOTPCREL(%rip),%r11 movq Errno@GOTPCREL(%rip),%r11
{$else}
leaq Errno(%rip),%r11
{$endif}
{$else FPC_PIC} {$else FPC_PIC}
movq fpc_threadvar_relocate_proc,%rax movq fpc_threadvar_relocate_proc,%rax
leaq Errno,%r11 leaq Errno,%r11
@ -164,7 +180,11 @@ asm
{$ifdef FPC_PIC} {$ifdef FPC_PIC}
movq fpc_threadvar_relocate_proc@GOTPCREL(%rip),%rax movq fpc_threadvar_relocate_proc@GOTPCREL(%rip),%rax
movq (%rax),%rax movq (%rax),%rax
{$ifndef FPC_STATICRIPFIXED}
movq Errno@GOTPCREL(%rip),%r11 movq Errno@GOTPCREL(%rip),%r11
{$else}
leaq Errno(%rip),%r11
{$endif}
{$else FPC_PIC} {$else FPC_PIC}
movq fpc_threadvar_relocate_proc,%rax movq fpc_threadvar_relocate_proc,%rax
leaq Errno,%r11 leaq Errno,%r11
@ -199,7 +219,11 @@ asm
{$ifdef FPC_PIC} {$ifdef FPC_PIC}
movq fpc_threadvar_relocate_proc@GOTPCREL(%rip),%rax movq fpc_threadvar_relocate_proc@GOTPCREL(%rip),%rax
movq (%rax),%rax movq (%rax),%rax
{$ifndef FPC_STATICRIPFIXED}
movq Errno@GOTPCREL(%rip),%r11 movq Errno@GOTPCREL(%rip),%r11
{$else}
leaq Errno(%rip),%r11
{$endif}
{$else FPC_PIC} {$else FPC_PIC}
movq fpc_threadvar_relocate_proc,%rax movq fpc_threadvar_relocate_proc,%rax
leaq Errno,%r11 leaq Errno,%r11
@ -235,7 +259,11 @@ asm
{$ifdef FPC_PIC} {$ifdef FPC_PIC}
movq fpc_threadvar_relocate_proc@GOTPCREL(%rip),%rax movq fpc_threadvar_relocate_proc@GOTPCREL(%rip),%rax
movq (%rax),%rax movq (%rax),%rax
{$ifndef FPC_STATICRIPFIXED}
movq Errno@GOTPCREL(%rip),%r11 movq Errno@GOTPCREL(%rip),%r11
{$else}
leaq Errno(%rip),%r11
{$endif}
{$else FPC_PIC} {$else FPC_PIC}
movq fpc_threadvar_relocate_proc,%rax movq fpc_threadvar_relocate_proc,%rax
leaq Errno,%r11 leaq Errno,%r11
@ -275,7 +303,11 @@ asm
{$ifdef FPC_PIC} {$ifdef FPC_PIC}
movq fpc_threadvar_relocate_proc@GOTPCREL(%rip),%rax movq fpc_threadvar_relocate_proc@GOTPCREL(%rip),%rax
movq (%rax),%rax movq (%rax),%rax
{$ifndef FPC_STATICRIPFIXED}
movq Errno@GOTPCREL(%rip),%r11 movq Errno@GOTPCREL(%rip),%r11
{$else}
leaq Errno(%rip),%r11
{$endif}
{$else FPC_PIC} {$else FPC_PIC}
movq fpc_threadvar_relocate_proc,%rax movq fpc_threadvar_relocate_proc,%rax
leaq Errno,%r11 leaq Errno,%r11

View File

@ -39,11 +39,11 @@ _start:
movq -40(%rbp), %rax movq -40(%rbp), %rax
movq (%rax), %rax movq (%rax), %rax
movl %eax, -28(%rbp) movl %eax, -28(%rbp)
movl %eax, operatingsystem_parameter_argc movl %eax, operatingsystem_parameter_argc(%rip)
movq -40(%rbp), %rax movq -40(%rbp), %rax
addq $8, %rax addq $8, %rax
movq %rax, -24(%rbp) movq %rax, -24(%rbp)
movq %rax, operatingsystem_parameter_argv movq %rax, operatingsystem_parameter_argv(%rip)
movq -40(%rbp), %rdx movq -40(%rbp), %rdx
addq $16, %rdx addq $16, %rdx
movl -28(%rbp), %eax movl -28(%rbp), %eax
@ -52,7 +52,7 @@ _start:
leaq (%rdx,%rax), %rax leaq (%rdx,%rax), %rax
movq %rax, -16(%rbp) movq %rax, -16(%rbp)
movq -16(%rbp), %rax movq -16(%rbp), %rax
movq %rax, operatingsystem_parameter_envp movq %rax, operatingsystem_parameter_envp(%rip)
movq %rax, environ(%rip) movq %rax, environ(%rip)
cmpl $0, -28(%rbp) cmpl $0, -28(%rbp)
jle .L2 jle .L2

View File

@ -39,21 +39,20 @@ _start:
movq -8(%rbp), %rax movq -8(%rbp), %rax
movl (%rax), %eax movl (%rax), %eax
movl %eax, -20(%rbp) movl %eax, -20(%rbp)
movl %eax, operatingsystem_parameter_argc movl %eax, operatingsystem_parameter_argc(%rip)
movq -8(%rbp), %rax movq -8(%rbp), %rax
addq $8, %rax addq $8, %rax
movq %rax, -32(%rbp) movq %rax, -32(%rbp)
movq %rax, operatingsystem_parameter_argv movq %rax, operatingsystem_parameter_argv(%rip)
movl -20(%rbp), %eax movl -20(%rbp), %eax
cltq cltq
salq $3, %rax salq $3, %rax
addq -8(%rbp), %rax addq -8(%rbp), %rax
addq $16, %rax addq $16, %rax
movq %rax, -40(%rbp) movq %rax, -40(%rbp)
movq %rax, operatingsystem_parameter_envp movq %rax, operatingsystem_parameter_envp(%rip)
movq -40(%rbp), %rax movq -40(%rbp), %rax
movq %rax, environ(%rip) movq %rax, environ(%rip)
movq %rax,environ
cmpl $0, -20(%rbp) cmpl $0, -20(%rbp)
jle .L5 jle .L5
movq -32(%rbp), %rax movq -32(%rbp), %rax

View File

@ -39,21 +39,20 @@ _start:
movq -8(%rbp), %rax movq -8(%rbp), %rax
movl (%rax), %eax movl (%rax), %eax
movl %eax, -20(%rbp) movl %eax, -20(%rbp)
movl %eax, operatingsystem_parameter_argc movl %eax, operatingsystem_parameter_argc(%rip)
movq -8(%rbp), %rax movq -8(%rbp), %rax
addq $8, %rax addq $8, %rax
movq %rax, -32(%rbp) movq %rax, -32(%rbp)
movq %rax, operatingsystem_parameter_argv movq %rax, operatingsystem_parameter_argv(%rip)
movl -20(%rbp), %eax movl -20(%rbp), %eax
cltq cltq
salq $3, %rax salq $3, %rax
addq -8(%rbp), %rax addq -8(%rbp), %rax
addq $16, %rax addq $16, %rax
movq %rax, -40(%rbp) movq %rax, -40(%rbp)
movq %rax, operatingsystem_parameter_envp movq %rax, operatingsystem_parameter_envp(%rip)
movq -40(%rbp), %rax movq -40(%rbp), %rax
movq %rax, environ(%rip) movq %rax, environ(%rip)
movq %rax,environ
cmpl $0, -20(%rbp) cmpl $0, -20(%rbp)
jle .L5 jle .L5
movq -32(%rbp), %rax movq -32(%rbp), %rax