about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/s390/s390-64
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>2014-01-07 09:36:31 +0100
committerAndreas Krebbel <krebbel@linux.vnet.ibm.com>2014-01-07 09:36:31 +0100
commit93a45ff1ca6d459618bb0cf93580c4b2809a4b61 (patch)
tree01ba50a65134ba45d974f63156617392dabfd430 /sysdeps/unix/sysv/linux/s390/s390-64
parentd5780febe69c2fe42d857e2feed54e9f4ba9ab87 (diff)
downloadglibc-93a45ff1ca6d459618bb0cf93580c4b2809a4b61.tar.gz
glibc-93a45ff1ca6d459618bb0cf93580c4b2809a4b61.tar.xz
glibc-93a45ff1ca6d459618bb0cf93580c4b2809a4b61.zip
S/390: Make jmp_buf extendible.
Diffstat (limited to 'sysdeps/unix/sysv/linux/s390/s390-64')
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c25
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist10
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/nptl/libpthread.abilist4
3 files changed, 36 insertions, 3 deletions
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c b/sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c
index a3b1375a0d..bc27b08728 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c
@@ -26,8 +26,8 @@
 #include <stdint.h>
 #include <signal.h>
 #include <sys/syscall.h>
-
-#define __longjmp ____longjmp_chk
+#include <libc-symbols.h>
+#include <shlib-compat.h>
 
 #define CHECK_SP(env, guard) \
   do									\
@@ -51,4 +51,23 @@
 	}								\
     } while (0)
 
-#include "__longjmp.c"
+
+#if defined NOT_IN_libc
+/* Build a non-versioned object for rtld-*.  */
+# define __longjmp ____longjmp_chk
+# include "__longjmp-common.c"
+
+#else /* !NOT_IN_libc */
+# define __longjmp  ____v2__longjmp_chk
+# include "__longjmp-common.c"
+# undef __longjmp
+
+# if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_11, GLIBC_2_19)
+#  undef __longjmp
+#  define __V1_JMPBUF
+#  define __longjmp  ____v1__longjmp_chk
+#  include "__longjmp-common.c"
+#  undef __longjmp
+
+# endif
+#endif /* !NOT_IN_libc */
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist
index 265f66d905..05b5286058 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist
@@ -95,6 +95,16 @@ GLIBC_2.17
 GLIBC_2.18
  GLIBC_2.18 A
  __cxa_thread_atexit_impl F
+GLIBC_2.19
+ GLIBC_2.19 A
+ __longjmp_chk F
+ __setjmp F
+ __sigsetjmp F
+ _longjmp F
+ _setjmp F
+ longjmp F
+ setjmp F
+ siglongjmp F
 GLIBC_2.2
  GLIBC_2.2 A
  _Exit F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libpthread.abilist
index 6613c09b06..51a8a7ff60 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libpthread.abilist
@@ -12,6 +12,10 @@ GLIBC_2.18
  GLIBC_2.18 A
  pthread_getattr_default_np F
  pthread_setattr_default_np F
+GLIBC_2.19
+ GLIBC_2.19 A
+ longjmp F
+ siglongjmp F
 GLIBC_2.2
  GLIBC_2.2 A
  _IO_flockfile F