summaryrefslogtreecommitdiff
path: root/sysdeps/x86_64
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/x86_64')
-rw-r--r--sysdeps/x86_64/__longjmp.S5
-rw-r--r--sysdeps/x86_64/bsd-setjmp.S1
-rw-r--r--sysdeps/x86_64/fpu/printf_fphex.c4
-rw-r--r--sysdeps/x86_64/setjmp.S15
4 files changed, 19 insertions, 6 deletions
diff --git a/sysdeps/x86_64/__longjmp.S b/sysdeps/x86_64/__longjmp.S
index 9ed480c540..becfb4f79d 100644
--- a/sysdeps/x86_64/__longjmp.S
+++ b/sysdeps/x86_64/__longjmp.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2004, 2005 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
@@ -50,5 +50,8 @@ ENTRY(__longjmp)
mov %esi, %eax
movq (JB_PC*8)(%rdi),%rdx
movq (JB_RSP*8)(%rdi),%rsp
+#ifdef PTR_DEMANGLE
+ PTR_DEMANGLE (%rdx)
+#endif
jmpq *%rdx
END (BP_SYM (__longjmp))
diff --git a/sysdeps/x86_64/bsd-setjmp.S b/sysdeps/x86_64/bsd-setjmp.S
index fdf4833dc6..216c503ccb 100644
--- a/sysdeps/x86_64/bsd-setjmp.S
+++ b/sysdeps/x86_64/bsd-setjmp.S
@@ -33,6 +33,7 @@ ENTRY (BP_SYM (setjmp))
/* Set up arguments, we only need to set the 2nd arg. */
movl $1, %esi
#ifdef PIC
+ jmp HIDDEN_JUMPTARGET (__sigsetjmp)
#else
jmp BP_SYM (__sigsetjmp)
#endif
diff --git a/sysdeps/x86_64/fpu/printf_fphex.c b/sysdeps/x86_64/fpu/printf_fphex.c
index d6ca102a88..b701b20b87 100644
--- a/sysdeps/x86_64/fpu/printf_fphex.c
+++ b/sysdeps/x86_64/fpu/printf_fphex.c
@@ -1,5 +1,5 @@
/* Print floating point number in hexadecimal notation according to ISO C99.
- Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1997,1998,1999,2000,2001,2005 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
@@ -89,4 +89,4 @@ do { \
} \
} while (0)
-#include <sysdeps/generic/printf_fphex.c>
+#include <stdio-common/printf_fphex.c>
diff --git a/sysdeps/x86_64/setjmp.S b/sysdeps/x86_64/setjmp.S
index 811ab1d913..8af5502042 100644
--- a/sysdeps/x86_64/setjmp.S
+++ b/sysdeps/x86_64/setjmp.S
@@ -1,5 +1,5 @@
/* setjmp for x86-64.
- Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2003, 2005 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
@@ -34,13 +34,22 @@ ENTRY (__sigsetjmp)
leaq 8(%rsp), %rdx /* Save SP as it will be after we return. */
movq %rdx, (JB_RSP*8)(%rdi)
movq (%rsp), %rax /* Save PC we are returning to now. */
+#ifdef PTR_MANGLE
+ PTR_MANGLE (%rax)
+#endif
movq %rax, (JB_PC*8)(%rdi)
+#if defined NOT_IN_libc && defined IS_IN_rtld
+ /* In ld.so we never save the signal mask. */
+ xorl %eax, %eax
+ retq
+#else
/* Make a tail call to __sigjmp_save; it takes the same args. */
-#ifdef PIC
+# ifdef PIC
jmp C_SYMBOL_NAME (BP_SYM (__sigjmp_save))@PLT
-#else
+# else
jmp BP_SYM (__sigjmp_save)
+# endif
#endif
END (BP_SYM (__sigsetjmp))
hidden_def (__sigsetjmp)