about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/i386
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1995-10-19 02:20:22 +0000
committerRoland McGrath <roland@gnu.org>1995-10-19 02:20:22 +0000
commit1d234146c04ec6a6bad50e6d1bf74cf6ff189e7a (patch)
tree2312fa6c66d401746ee00f956dc5f5534252461b /sysdeps/unix/sysv/linux/i386
parent580c1888bec85d6ec20b8c9d3b893b5397a71325 (diff)
downloadglibc-1d234146c04ec6a6bad50e6d1bf74cf6ff189e7a.tar.gz
glibc-1d234146c04ec6a6bad50e6d1bf74cf6ff189e7a.tar.xz
glibc-1d234146c04ec6a6bad50e6d1bf74cf6ff189e7a.zip
* sysdeps/unix/sysv/linux/i386/sysdep.h (PSEUDO): Use
	SYSCALL_PIC_SETUP before jumping to syscall_error.
	* sysdeps/unix/i386/sysdep.h (SYSCALL_PIC_SETUP): New macro.
	(PSEUDO): Use it before jumping to syscall_error.
	* sysdeps/unix/i386/sysdep.S [! PIC]: Don't find GOT address;
	expect it in %ebx on entry.  Pop old %ebx value off stack after
	using it. 
Diffstat (limited to 'sysdeps/unix/sysv/linux/i386')
-rw-r--r--sysdeps/unix/sysv/linux/i386/sysdep.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h
index a40ca86e40..ccb484664f 100644
--- a/sysdeps/unix/sysv/linux/i386/sysdep.h
+++ b/sysdeps/unix/sysv/linux/i386/sysdep.h
@@ -42,12 +42,14 @@ Cambridge, MA 02139, USA.  */
 #undef	PSEUDO
 #define	PSEUDO(name, syscall_name, args)				      \
   .text;								      \
+ lose: SYSCALL_PIC_SETUP						      \
+    jmp JUMPTARGET (syscall_error)					      \
   .globl syscall_error;							      \
   ENTRY (name)								      \
     movl $SYS_ify (syscall_name), %eax;					      \
     DO_CALL (args);							      \
     testl %eax, %eax;							      \
-    jl JUMPTARGET (syscall_error)
+    jl lose
 
 /* We define our own ENTRY macro because the alignment should be 16 for ELF.  */
 #undef ENTRY