summaryrefslogtreecommitdiffstats
path: root/lib/libc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc')
-rw-r--r--lib/libc/i386/SYS.h12
-rw-r--r--lib/libc/i386/Symbol.map1
-rw-r--r--lib/libc/i386/gen/rfork_thread.S3
-rw-r--r--lib/libc/i386/sys/Ovfork.S3
-rw-r--r--lib/libc/i386/sys/brk.S9
-rw-r--r--lib/libc/i386/sys/cerror.S5
-rw-r--r--lib/libc/i386/sys/exect.S3
-rw-r--r--lib/libc/i386/sys/getcontext.S5
-rw-r--r--lib/libc/i386/sys/ptrace.S5
-rw-r--r--lib/libc/i386/sys/sbrk.S9
-rw-r--r--lib/libc/i386/sys/syscall.S5
11 files changed, 19 insertions, 41 deletions
diff --git a/lib/libc/i386/SYS.h b/lib/libc/i386/SYS.h
index a4a147a..355b117 100644
--- a/lib/libc/i386/SYS.h
+++ b/lib/libc/i386/SYS.h
@@ -36,21 +36,21 @@
#include <sys/syscall.h>
#include <machine/asm.h>
-#define SYSCALL(x) 2: PIC_PROLOGUE; jmp PIC_PLT(HIDENAME(cerror)); \
- ENTRY(__CONCAT(__sys_,x)); \
+#define SYSCALL(x) ENTRY(__CONCAT(__sys_,x)); \
.weak CNAME(x); \
.set CNAME(x),CNAME(__CONCAT(__sys_,x)); \
.weak CNAME(__CONCAT(_,x)); \
.set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)); \
- mov __CONCAT($SYS_,x),%eax; KERNCALL; jb 2b
+ mov __CONCAT($SYS_,x),%eax; KERNCALL; \
+ jb HIDENAME(cerror)
#define RSYSCALL(x) SYSCALL(x); ret; END(__CONCAT(__sys_,x))
-#define PSEUDO(x) 2: PIC_PROLOGUE; jmp PIC_PLT(HIDENAME(cerror)); \
- ENTRY(__CONCAT(__sys_,x)); \
+#define PSEUDO(x) ENTRY(__CONCAT(__sys_,x)); \
.weak CNAME(__CONCAT(_,x)); \
.set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)); \
- mov __CONCAT($SYS_,x),%eax; KERNCALL; jb 2b; ret; \
+ mov __CONCAT($SYS_,x),%eax; KERNCALL; \
+ jb HIDENAME(cerror); ret; \
END(__CONCAT(__sys_,x))
/* gas messes up offset -- although we don't currently need it, do for BCS */
diff --git a/lib/libc/i386/Symbol.map b/lib/libc/i386/Symbol.map
index 8a01802..78be4c4 100644
--- a/lib/libc/i386/Symbol.map
+++ b/lib/libc/i386/Symbol.map
@@ -63,7 +63,6 @@ FBSDprivate_1.0 {
__sys_vfork;
_vfork;
_end;
- .cerror;
_brk;
.curbrk;
.minbrk;
diff --git a/lib/libc/i386/gen/rfork_thread.S b/lib/libc/i386/gen/rfork_thread.S
index 3333d84..1f8181d 100644
--- a/lib/libc/i386/gen/rfork_thread.S
+++ b/lib/libc/i386/gen/rfork_thread.S
@@ -113,8 +113,7 @@ ENTRY(rfork_thread)
popl %esi
movl %ebp, %esp
popl %ebp
- PIC_PROLOGUE
- jmp PIC_PLT(HIDENAME(cerror))
+ jmp HIDENAME(cerror)
END(rfork_thread)
.section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/i386/sys/Ovfork.S b/lib/libc/i386/sys/Ovfork.S
index e3cc45d..3ef7169 100644
--- a/lib/libc/i386/sys/Ovfork.S
+++ b/lib/libc/i386/sys/Ovfork.S
@@ -50,8 +50,7 @@ ENTRY(__sys_vfork)
jmp *%ecx
1:
pushl %ecx
- PIC_PROLOGUE
- jmp PIC_PLT(HIDENAME(cerror))
+ jmp HIDENAME(cerror)
END(__sys_vfork)
.section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/i386/sys/brk.S b/lib/libc/i386/sys/brk.S
index 968e437..8a465d2 100644
--- a/lib/libc/i386/sys/brk.S
+++ b/lib/libc/i386/sys/brk.S
@@ -58,14 +58,11 @@ ENTRY(brk)
ok:
mov $SYS_break,%eax
KERNCALL
- jb err
+ jb HIDENAME(cerror)
movl 4(%esp),%eax
movl %eax,(%edx)
movl $0,%eax
ret
-err:
- PIC_PROLOGUE
- jmp PIC_PLT(HIDENAME(cerror))
#else
@@ -77,13 +74,11 @@ err:
ok:
mov $SYS_break,%eax
KERNCALL
- jb err
+ jb HIDENAME(cerror)
movl 4(%esp),%eax
movl %eax,HIDENAME(curbrk)
movl $0,%eax
ret
-err:
- jmp HIDENAME(cerror)
#endif
END(brk)
diff --git a/lib/libc/i386/sys/cerror.S b/lib/libc/i386/sys/cerror.S
index 129cc1b..ad3a033 100644
--- a/lib/libc/i386/sys/cerror.S
+++ b/lib/libc/i386/sys/cerror.S
@@ -48,13 +48,14 @@ __FBSDID("$FreeBSD$");
.globl CNAME(__error)
.type CNAME(__error),@function
HIDENAME(cerror):
- pushl %eax
#ifdef PIC
- /* The caller must execute the PIC prologue before jumping to cerror. */
+ PIC_PROLOGUE
+ pushl %eax
call PIC_PLT(CNAME(__error))
popl %ecx
PIC_EPILOGUE
#else
+ pushl %eax
call CNAME(__error)
popl %ecx
#endif
diff --git a/lib/libc/i386/sys/exect.S b/lib/libc/i386/sys/exect.S
index 3ae87b8..1378b4b 100644
--- a/lib/libc/i386/sys/exect.S
+++ b/lib/libc/i386/sys/exect.S
@@ -47,8 +47,7 @@ ENTRY(exect)
pushl %edx
popf
KERNCALL
- PIC_PROLOGUE
- jmp PIC_PLT(HIDENAME(cerror)) /* exect(file, argv, env); */
+ jmp HIDENAME(cerror) /* exect(file, argv, env); */
END(exect)
.section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/i386/sys/getcontext.S b/lib/libc/i386/sys/getcontext.S
index c24dbdc..7114689 100644
--- a/lib/libc/i386/sys/getcontext.S
+++ b/lib/libc/i386/sys/getcontext.S
@@ -42,12 +42,9 @@ ENTRY(__sys_getcontext)
movl (%esp),%ecx /* save getcontext return address */
mov $SYS_getcontext,%eax
KERNCALL
- jb 1f
+ jb HIDENAME(cerror)
addl $4,%esp /* remove stale (setcontext) return address */
jmp *%ecx /* restore return address */
-1:
- PIC_PROLOGUE
- jmp PIC_PLT(HIDENAME(cerror))
END(__sys_getcontext)
.section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/i386/sys/ptrace.S b/lib/libc/i386/sys/ptrace.S
index 6e5e885..e4bdf7c 100644
--- a/lib/libc/i386/sys/ptrace.S
+++ b/lib/libc/i386/sys/ptrace.S
@@ -50,11 +50,8 @@ ENTRY(ptrace)
#endif
mov $SYS_ptrace,%eax
KERNCALL
- jb err
+ jb HIDENAME(cerror)
ret
-err:
- PIC_PROLOGUE
- jmp PIC_PLT(HIDENAME(cerror))
END(ptrace)
.section .note.GNU-stack,"",%progbits
diff --git a/lib/libc/i386/sys/sbrk.S b/lib/libc/i386/sys/sbrk.S
index 337087a..99fc220 100644
--- a/lib/libc/i386/sys/sbrk.S
+++ b/lib/libc/i386/sys/sbrk.S
@@ -59,7 +59,7 @@ ENTRY(sbrk)
addl %eax,4(%esp)
mov $SYS_break,%eax
KERNCALL
- jb err
+ jb HIDENAME(cerror)
PIC_PROLOGUE
movl PIC_GOT(HIDENAME(curbrk)),%edx
movl (%edx),%eax
@@ -67,9 +67,6 @@ ENTRY(sbrk)
PIC_EPILOGUE
back:
ret
-err:
- PIC_PROLOGUE
- jmp PIC_PLT(HIDENAME(cerror))
#else /* !PIC */
@@ -80,13 +77,11 @@ err:
addl %eax,4(%esp)
mov $SYS_break,%eax
KERNCALL
- jb err
+ jb HIDENAME(cerror)
movl HIDENAME(curbrk),%eax
addl %ecx,HIDENAME(curbrk)
back:
ret
-err:
- jmp HIDENAME(cerror)
#endif /* PIC */
END(sbrk)
diff --git a/lib/libc/i386/sys/syscall.S b/lib/libc/i386/sys/syscall.S
index e5d6e23..8a08631 100644
--- a/lib/libc/i386/sys/syscall.S
+++ b/lib/libc/i386/sys/syscall.S
@@ -45,11 +45,8 @@ ENTRY(syscall)
KERNCALL
push %ecx /* need to push a word to keep stack frame intact
upon return; the word must be the return address. */
- jb 1f
+ jb HIDENAME(cerror)
ret
-1:
- PIC_PROLOGUE
- jmp PIC_PLT(HIDENAME(cerror))
END(syscall)
.section .note.GNU-stack,"",%progbits
OpenPOWER on IntegriCloud