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

View File

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

View File

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

View File

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