PIC generation when -DPIC flag is on.
This commit is contained in:
parent
308358ebde
commit
d9a465e8af
@ -34,17 +34,26 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "SYS.h"
|
||||
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
.text
|
||||
/*.asciz "from: @(#)fixunsdfsi.s 5.1 12/17/90"*/
|
||||
.asciz "$Id: fixunsdfsi.s,v 1.3 1993/08/26 02:13:27 mycroft Exp $"
|
||||
.asciz "$Id: fixunsdfsi.s,v 1.4 1993/09/28 21:04:38 pk Exp $"
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
.globl ___fixunsdfsi
|
||||
___fixunsdfsi:
|
||||
fldl 4(%esp) /* argument double to accum stack */
|
||||
frndint /* create integer */
|
||||
fcoml fbiggestsigned /* bigger than biggest signed? */
|
||||
#ifdef PIC
|
||||
PIC_PROLOGUE
|
||||
leal PIC_GOTOFF(fbiggestsigned),%eax
|
||||
PIC_EPILOGUE
|
||||
fcoml (%eax)
|
||||
#else
|
||||
fcoml PIC_GOTOFF(fbiggestsigned) /* bigger than biggest signed? */
|
||||
#endif
|
||||
fstsw %ax
|
||||
sahf
|
||||
jnb 1f
|
||||
@ -53,10 +62,19 @@ ___fixunsdfsi:
|
||||
movl 4(%esp),%eax
|
||||
ret
|
||||
|
||||
1: fsubl fbiggestsigned /* reduce for proper conversion */
|
||||
1:
|
||||
#ifdef PIC
|
||||
PIC_PROLOGUE
|
||||
leal PIC_GOTOFF(fbiggestsigned),%eax
|
||||
PIC_EPILOGUE
|
||||
fsubl (%eax)
|
||||
#else
|
||||
fsubl PIC_GOTOFF(fbiggestsigned) /* reduce for proper conversion */
|
||||
#endif
|
||||
fistpl 4(%esp) /* convert */
|
||||
movl 4(%esp),%eax
|
||||
orl $0x80000000,%eax /* restore bias */
|
||||
PIC_EPILOGUE
|
||||
ret
|
||||
|
||||
fbiggestsigned: .double 0r2147483648.0
|
||||
|
@ -37,7 +37,7 @@
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
.text
|
||||
/*.asciz "from: @(#)setjmp.s 5.1 (Berkeley) 4/23/90"*/
|
||||
.asciz "$Id: setjmp.s,v 1.3 1993/08/26 02:13:28 mycroft Exp $"
|
||||
.asciz "$Id: setjmp.s,v 1.4 1993/09/28 21:04:39 pk Exp $"
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
/*
|
||||
@ -51,10 +51,11 @@
|
||||
*/
|
||||
|
||||
#include "DEFS.h"
|
||||
#include "SYS.h"
|
||||
|
||||
ENTRY(setjmp)
|
||||
pushl $0
|
||||
call _sigblock
|
||||
call PIC_PLT(_sigblock)
|
||||
popl %edx
|
||||
movl 4(%esp),%ecx
|
||||
movl 0(%esp),%edx
|
||||
@ -71,7 +72,7 @@ ENTRY(setjmp)
|
||||
ENTRY(longjmp)
|
||||
movl 4(%esp),%edx
|
||||
pushl 24(%edx)
|
||||
call _sigsetmask
|
||||
call PIC_PLT(_sigsetmask)
|
||||
popl %eax
|
||||
movl 4(%esp),%edx
|
||||
movl 8(%esp),%eax
|
||||
|
@ -37,7 +37,7 @@
|
||||
#if defined(SYSLIBC_SCCS) && !defined(lint)
|
||||
.text
|
||||
/*.asciz "from: @(#)Ovfork.s 5.1 (Berkeley) 4/23/90"*/
|
||||
.asciz "$Id: Ovfork.s,v 1.4 1993/08/26 02:14:11 mycroft Exp $"
|
||||
.asciz "$Id: Ovfork.s,v 1.5 1993/09/28 21:04:52 pk Exp $"
|
||||
#endif /* SYSLIBC_SCCS and not lint */
|
||||
|
||||
#include "SYS.h"
|
||||
@ -61,7 +61,14 @@ vforkok:
|
||||
jmp parent
|
||||
.globl _errno
|
||||
verror:
|
||||
#ifdef PIC
|
||||
PIC_PROLOGUE
|
||||
movl PIC_GOT(_errno), %edx
|
||||
movl %eax,(%edx)
|
||||
PIC_EPILOGUE
|
||||
#else
|
||||
movl %eax,_errno
|
||||
#endif
|
||||
movl $-1,%eax
|
||||
jmp %ecx
|
||||
child:
|
||||
|
@ -37,7 +37,7 @@
|
||||
#if defined(SYSLIBC_SCCS) && !defined(lint)
|
||||
.text
|
||||
/*.asciz "from: @(#)brk.s 5.2 (Berkeley) 12/17/90"*/
|
||||
.asciz "$Id: brk.s,v 1.3 1993/08/26 02:14:12 mycroft Exp $"
|
||||
.asciz "$Id: brk.s,v 1.4 1993/09/28 21:04:53 pk Exp $"
|
||||
#endif /* SYSLIBC_SCCS and not lint */
|
||||
|
||||
#include "SYS.h"
|
||||
@ -50,6 +50,29 @@ ENTRY(_brk)
|
||||
jmp ok
|
||||
|
||||
ENTRY(brk)
|
||||
#ifdef PIC
|
||||
movl 4(%esp),%eax
|
||||
PIC_PROLOGUE
|
||||
movl %edx,PIC_GOT(curbrk) # set up GOT addressing
|
||||
movl %ecx,PIC_GOT(minbrk) #
|
||||
cmpl %eax,(%ecx)
|
||||
PIC_EPILOGUE
|
||||
jl ok
|
||||
movl (%ecx),%eax
|
||||
movl %eax,4(%esp)
|
||||
ok:
|
||||
lea SYS_brk,%eax
|
||||
LCALL(7,0)
|
||||
jb err
|
||||
movl 4(%esp),%eax
|
||||
movl %eax,(%edx)
|
||||
movl $0,%eax
|
||||
ret
|
||||
err:
|
||||
jmp PIC_PLT(cerror)
|
||||
|
||||
#else
|
||||
|
||||
movl 4(%esp),%eax
|
||||
cmpl %eax,minbrk
|
||||
jl ok
|
||||
@ -65,3 +88,4 @@ ok:
|
||||
ret
|
||||
err:
|
||||
jmp cerror
|
||||
#endif
|
||||
|
@ -37,13 +37,20 @@
|
||||
#if defined(SYSLIBC_SCCS) && !defined(lint)
|
||||
.text
|
||||
/*.asciz "from: @(#)cerror.s 5.1 (Berkeley) 4/23/90"*/
|
||||
.asciz "$Id: cerror.s,v 1.3 1993/08/26 02:14:12 mycroft Exp $"
|
||||
.asciz "$Id: cerror.s,v 1.4 1993/09/28 21:04:54 pk Exp $"
|
||||
#endif /* SYSLIBC_SCCS and not lint */
|
||||
|
||||
#include "SYS.h"
|
||||
|
||||
.globl _errno
|
||||
cerror:
|
||||
#ifdef PIC
|
||||
PIC_PROLOGUE
|
||||
movl PIC_GOT(_errno),%ecx
|
||||
movl %eax,(%ecx)
|
||||
PIC_EPILOGUE
|
||||
#else
|
||||
movl %eax,_errno
|
||||
#endif
|
||||
movl $-1,%eax
|
||||
ret
|
||||
|
@ -37,14 +37,21 @@
|
||||
#if defined(SYSLIBC_SCCS) && !defined(lint)
|
||||
.text
|
||||
/*.asciz "from: @(#)ptrace.s 5.1 (Berkeley) 4/23/90"*/
|
||||
.asciz "$Id: ptrace.s,v 1.3 1993/08/26 02:14:16 mycroft Exp $"
|
||||
.asciz "$Id: ptrace.s,v 1.4 1993/09/28 21:04:55 pk Exp $"
|
||||
#endif /* SYSLIBC_SCCS and not lint */
|
||||
|
||||
#include "SYS.h"
|
||||
|
||||
ENTRY(ptrace)
|
||||
xorl %eax,%eax
|
||||
#ifdef PIC
|
||||
PIC_PROLOGUE
|
||||
movl PIC_GOT(_errno),%edx
|
||||
movl %eax,(%edx)
|
||||
PIC_EPILOGUE
|
||||
#else
|
||||
movl %eax,_errno
|
||||
#endif
|
||||
lea SYS_ptrace,%eax
|
||||
LCALL(7,0)
|
||||
jb err
|
||||
|
@ -37,7 +37,7 @@
|
||||
#if defined(SYSLIBC_SCCS) && !defined(lint)
|
||||
.text
|
||||
/*.asciz "from: @(#)sbrk.s 5.1 (Berkeley) 4/23/90"*/
|
||||
.asciz "$Id: sbrk.s,v 1.3 1993/08/26 02:14:18 mycroft Exp $"
|
||||
.asciz "$Id: sbrk.s,v 1.4 1993/09/28 21:04:56 pk Exp $"
|
||||
#endif /* SYSLIBC_SCCS and not lint */
|
||||
|
||||
#include "SYS.h"
|
||||
@ -54,6 +54,27 @@ curbrk: .long _end
|
||||
.text
|
||||
|
||||
ENTRY(sbrk)
|
||||
#ifdef PIC
|
||||
movl 4(%esp),%ecx
|
||||
PIC_PROLOGUE
|
||||
movl PIC_GOT(curbrk),%edx
|
||||
movl (%edx),%eax
|
||||
PIC_EPILOGUE
|
||||
addl %eax,4(%esp)
|
||||
lea SYS_brk,%eax
|
||||
LCALL(7,0)
|
||||
jb err
|
||||
PIC_PROLOGUE
|
||||
movl PIC_GOT(curbrk),%edx
|
||||
movl (%edx),%eax
|
||||
addl %ecx,(%edx)
|
||||
PIC_EPILOGUE
|
||||
ret
|
||||
err:
|
||||
jmp PIC_PLT(cerror)
|
||||
|
||||
#else
|
||||
|
||||
movl 4(%esp),%ecx
|
||||
movl curbrk,%eax
|
||||
addl %eax,4(%esp)
|
||||
@ -65,3 +86,4 @@ ENTRY(sbrk)
|
||||
ret
|
||||
err:
|
||||
jmp cerror
|
||||
#endif
|
||||
|
@ -37,7 +37,7 @@
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
.text
|
||||
/*.asciz "from: @(#)setlogin.s 5.2 (Berkeley) 4/12/91"*/
|
||||
.asciz "$Id: setlogin.s,v 1.3 1993/08/26 02:14:19 mycroft Exp $"
|
||||
.asciz "$Id: setlogin.s,v 1.4 1993/09/28 21:04:57 pk Exp $"
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "SYS.h"
|
||||
@ -45,5 +45,14 @@
|
||||
.globl __logname_valid /* in getlogin() */
|
||||
|
||||
SYSCALL(setlogin)
|
||||
#ifdef PIC
|
||||
PIC_PROLOGUE
|
||||
pushl %eax
|
||||
movl PIC_GOT(__logname_valid),%eax
|
||||
movl $0,(%eax)
|
||||
popl %eax
|
||||
PIC_EPILOGUE
|
||||
#else
|
||||
movl $0,__logname_valid
|
||||
#endif
|
||||
ret /* setlogin(name) */
|
||||
|
Loading…
Reference in New Issue
Block a user