about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndreas Jaeger <aj@suse.de>2000-06-04 16:35:32 +0000
committerAndreas Jaeger <aj@suse.de>2000-06-04 16:35:32 +0000
commit5752c39f27b3e0b5ab5abf316ae662c4b57f0640 (patch)
tree99b6f1d400dc26899073b05d35da6ba363eca06b
parent8c475d5bdfcaf08090c275e84cfa938e30c7a850 (diff)
downloadglibc-5752c39f27b3e0b5ab5abf316ae662c4b57f0640.tar.gz
glibc-5752c39f27b3e0b5ab5abf316ae662c4b57f0640.tar.xz
glibc-5752c39f27b3e0b5ab5abf316ae662c4b57f0640.zip
* sysdeps/i386/elf/setjmp.S: Work around change is recent
        binutils.  gas now emits a jump through the PLT instead of a
        relative jump if the jump target is an exported symbol.
-rw-r--r--sysdeps/i386/elf/setjmp.S8
1 files changed, 6 insertions, 2 deletions
diff --git a/sysdeps/i386/elf/setjmp.S b/sysdeps/i386/elf/setjmp.S
index bc4890c215..40710be1ef 100644
--- a/sysdeps/i386/elf/setjmp.S
+++ b/sysdeps/i386/elf/setjmp.S
@@ -1,5 +1,5 @@
 /* setjmp for i386, ELF version.
-   Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -31,7 +31,10 @@ ENTRY (setjmp)
 	pushl $1		/* Push second argument of zero.  */
 	pushl %ecx		/* Push back first argument.  */
 	pushl %eax		/* Push back return PC.  */
-	jmp __sigsetjmp
+	/* Note that we have to use a non-exported symbol in the next
+	   jump since otherwise gas will emit it as a jump through the
+	   PLT which is what we cannot use here.  */
+	jmp .Linternal_sigsetjmp
 END (setjmp)
 
 	/* Binary compatibility entry point.  */
@@ -45,6 +48,7 @@ ENTRY (__setjmp)
 	pushl %eax		/* Push back return address.  */
 
 ENTRY (__sigsetjmp)
+.Linternal_sigsetjmp = __sigsetjmp
 	movl 4(%esp), %eax	/* User's jmp_buf in %eax.  */
      	/* Save registers.  */
 	movl %ebx, (JB_BX*4)(%eax)