aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--sysdeps/i386/elf/setjmp.S8
-rw-r--r--wcsmbs/wcsmbsload.c2
3 files changed, 13 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 966b305..c581f79 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2000-06-01 Ulrich Drepper <drepper@redhat.com>
+
+ * 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.
+
2000-05-31 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/powerpc/aix/aix-termios.h: Define AIX_CBAUD.
diff --git a/sysdeps/i386/elf/setjmp.S b/sysdeps/i386/elf/setjmp.S
index bc4890c..40710be 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)
diff --git a/wcsmbs/wcsmbsload.c b/wcsmbs/wcsmbsload.c
index 4267852..55d19ff 100644
--- a/wcsmbs/wcsmbsload.c
+++ b/wcsmbs/wcsmbsload.c
@@ -144,7 +144,7 @@ __wcsmbs_load_conv (const struct locale_data *new_category)
/* Acquire the lock. */
__libc_lock_lock (lock);
- /* We should repest the test since while we waited some other thread
+ /* We should repeat the test since while we waited some other thread
might have run this function. */
if (__wcsmbs_last_locale != new_category)
{