[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

r6220 - in glibc-package/trunk/debian: . patches patches/s390



Author: aurel32
Date: 2014-08-14 10:49:17 +0000 (Thu, 14 Aug 2014)
New Revision: 6220

Added:
   glibc-package/trunk/debian/patches/s390/cvs-s390-abi-reversal.diff
Modified:
   glibc-package/trunk/debian/changelog
   glibc-package/trunk/debian/patches/series
Log:
debian/patches/s390/cvs-s390-abi-reversal.diff: new patch backported from
upstream to revert the S/390 jmp_buf/ucontext_t ABI change.

Modified: glibc-package/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog	2014-08-08 15:34:20 UTC (rev 6219)
+++ glibc-package/trunk/debian/changelog	2014-08-14 10:49:17 UTC (rev 6220)
@@ -6,6 +6,8 @@
   [ Aurelien Jarno ]
   * debian/patches/arm64/cvs-includes-cleanup.diff: new patch from upstream to
     clean sys/user.h and sys/procfs.h.  Closes: #755169.
+  * debian/patches/s390/cvs-s390-abi-reversal.diff: new patch backported from
+    upstream to revert the S/390 jmp_buf/ucontext_t ABI change.
 
  -- Adam Conrad <adconrad@0c3.net>  Sat, 12 Jul 2014 20:53:51 -0600
 

Added: glibc-package/trunk/debian/patches/s390/cvs-s390-abi-reversal.diff
===================================================================
--- glibc-package/trunk/debian/patches/s390/cvs-s390-abi-reversal.diff	                        (rev 0)
+++ glibc-package/trunk/debian/patches/s390/cvs-s390-abi-reversal.diff	2014-08-14 10:49:17 UTC (rev 6220)
@@ -0,0 +1,2226 @@
+2014-07-31  Stefan Liebler  <stli@linux.vnet.ibm.com>
+
+	* sysdeps/s390/Makefile: Delete file.
+	* sysdeps/s390/Versions (GLIBC_2.19): Remove __setjmp.
+	* sysdeps/s390/__longjmp.c: Delete file.
+	* sysdeps/s390/bits/setjmp.h (__s390_jmp_buf):
+	Remove fields __flags and __reserved.
+	* sysdeps/s390/longjmp.c: Include setjmp/longjmp.c
+	and add versioning.
+	* sysdeps/s390/rtld-__longjmp.c: Delete file.
+	* sysdeps/s390/rtld-global-offsets.sym: Likewise.
+	* sysdeps/s390/rtld-setjmp.S: Likewise.
+	* sysdeps/s390/s390-32/__longjmp-common.c: Move to ...
+	* sysdeps/s390/s390-32/__longjmp.c: ... here.
+	* sysdeps/s390/s390-32/setjmp-common.S: Move to ...
+	* sysdeps/s390/s390-32/setjmp.S: ... here.
+	Add versioning.
+	(__sigsetjmp): Remove setting __flags field.
+	* sysdeps/s390/s390-64/__longjmp-common.c:Move to ...
+	* sysdeps/s390/s390-64/__longjmp.c: ... here.
+	* sysdeps/s390/s390-64/setjmp-common.S: Move to ...
+	* sysdeps/s390/s390-64/setjmp.S: ... here.
+	Add versioning.
+	(__sigsetjmp): Remove setting __flags field.
+	* sysdeps/s390/setjmp.S: Delete file.
+	* sysdeps/s390/sigjmp.c: Likewise.
+	* sysdeps/s390/v1-longjmp.c: Likewise.
+	* sysdeps/s390/v1-setjmp.h: Likewise.
+	* sysdeps/s390/v1-sigjmp.c: Likewise.
+	* sysdeps/unix/sysv/linux/s390/Makefile (sysdep_routines):
+	Remove v1-longjmp_chk.
+	* sysdeps/unix/sysv/linux/s390/getcontext.S: Delete file.
+	* sysdeps/unix/sysv/linux/s390/longjmp_chk.c:
+	Include debug/longjmp_chk.c and add versioning.
+	* nptl/sysdeps/unix/sysv/linux/s390/pt-longjmp.c:
+	Include nptl/sysdeps/pthread/pt-longjmp.c and add versioning.
+	* sysdeps/unix/sysv/linux/s390/rtld-getcontext.S: Delete file.
+	* sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c:
+	Include __longjmp.c.
+	* sysdeps/unix/sysv/linux/s390/s390-32/getcontext-common.S:
+	Move to ...
+	* sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S: ... here.
+	(__getcontext): Remove setting __flags field.
+	Add versioning.
+	* sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S:
+	Don't restore upper high grps.
+	* sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S:
+	Likewise.
+	(__swapcontext): Remove setting uc_flags field.
+	* sysdeps/unix/sysv/linux/s390/s390-32/ucontext_i.sym:
+	Delete file.
+	* sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c:
+	Include __longjmp.c.
+	* sysdeps/unix/sysv/linux/s390/s390-64/getcontext-common.S:
+	Move to ...
+	* sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S: ... here.
+	(__getcontext): Remove setting __flags field.
+	Add versioning.
+	* sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S:
+	(__swapcontext): Remove setting uc_flags field.
+	* unix/sysv/linux/s390/s390-64/ucontext_i.sym: Delete file.
+	* sysdeps/unix/sysv/linux/s390/sys/ucontext.h (ucontext):
+	Remove fields uc_high_gprs and __reserved.
+	* sysdeps/unix/sysv/linux/s390/ucontext_i.sym:
+	New file with reverted content.
+	* sysdeps/unix/sysv/linux/s390/v1-longjmp_chk.c: Delete file.
+	* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist:
+	Regenerated.
+	* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist:
+	Regenerated.
+
+--- a/sysdeps/s390/Makefile
++++ /dev/null
+@@ -1,9 +0,0 @@
+-ifeq ($(subdir),setjmp)
+-ifeq (yes,$(build-shared))
+-sysdep_routines += v1-longjmp v1-sigjmp
+-endif
+-endif
+-
+-ifeq ($(subdir),csu)
+-gen-as-const-headers += rtld-global-offsets.sym
+-endif
+--- a/sysdeps/s390/Versions
++++ b/sysdeps/s390/Versions
+@@ -1,12 +1,8 @@
+ libc {
+   GLIBC_2.19 {
+-    setjmp; _setjmp; __setjmp; __sigsetjmp;
++    setjmp; _setjmp; __sigsetjmp;
+     longjmp; _longjmp; siglongjmp;
+   }
+-  GLIBC_PRIVATE {
+-    __v1__libc_longjmp; __v1__libc_siglongjmp;
+-    __v2__libc_longjmp; __v2__libc_siglongjmp;
+-  }
+ }
+ 
+ ld {
+--- a/sysdeps/s390/__longjmp.c
++++ /dev/null
+@@ -1,31 +0,0 @@
+-/* Copyright (C) 2013 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
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <libc-symbols.h>
+-#include <shlib-compat.h>
+-
+-#define __longjmp  __v2__longjmp
+-#include "__longjmp-common.c"
+-#undef __longjmp
+-strong_alias (__v2__longjmp, __longjmp)
+-
+-#if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_19)
+-# undef __longjmp
+-# define __V1_JMPBUF
+-# define __longjmp  __v1__longjmp
+-# include "__longjmp-common.c"
+-#endif /* if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_19) */
+--- a/sysdeps/s390/bits/setjmp.h
++++ b/sysdeps/s390/bits/setjmp.h
+@@ -40,10 +40,6 @@
+   /* We save fpu registers 4 and 6.  */
+   long __fpregs[4];
+ # endif
+-#ifndef __V1_JMPBUF
+-  unsigned long __flags;
+-  char __reserved[128];
+-#endif
+ } __jmp_buf[1];
+ 
+ #endif
+--- a/sysdeps/s390/longjmp.c
++++ b/sysdeps/s390/longjmp.c
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2013 Free Software Foundation, Inc.
++/* Copyright (C) 2014 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
+@@ -15,50 +15,28 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.
+ 
+-   Versioned copy of sysdeps/generic/longjmp.c modified for extended
+-   jmpbuf.  */
++   Versioned copy of setjmp/longjmp.c modified for versioning
++   the reverted jmpbuf extension.  */
+ 
+ #include <shlib-compat.h>
+-#include <stddef.h>
+-#include <setjmp.h>
+-#include <signal.h>
+-
+-extern void __v2__longjmp (__jmp_buf __env, int __val)
+-     __attribute__ ((__noreturn__));
+-extern void __v2__libc_longjmp (sigjmp_buf env, int val)
+-     __attribute__ ((__noreturn__));
+-libc_hidden_proto (__v2__libc_longjmp)
+-
+-/* Set the signal mask to the one specified in ENV, and jump
+-   to the position specified in ENV, causing the setjmp
+-   call there to return VAL, or 1 if VAL is 0.  */
+-void
+-__v2__libc_siglongjmp (sigjmp_buf env, int val)
+-{
+-  /* Perform any cleanups needed by the frames being unwound.  */
+-  _longjmp_unwind (env, val);
+-
+-  if (env[0].__mask_was_saved)
+-    /* Restore the saved signal mask.  */
+-    (void) __sigprocmask (SIG_SETMASK, &env[0].__saved_mask,
+-			  (sigset_t *) NULL);
+-
+-  /* Call the machine-dependent function to restore machine state.  */
+-  __v2__longjmp (env[0].__jmpbuf, val ?: 1);
+-}
+-
+-#ifndef __v2__longjmp
+-strong_alias (__v2__libc_siglongjmp, __v2__libc_longjmp)
+-libc_hidden_def (__v2__libc_longjmp)
+-weak_alias (__v2__libc_siglongjmp, __v2_longjmp)
+-weak_alias (__v2__libc_siglongjmp, __v2longjmp)
+-weak_alias (__v2__libc_siglongjmp, __v2siglongjmp)
+-
+-/* These will be used by libpthread only.  */
+-versioned_symbol (libc, __v2__libc_longjmp, __libc_longjmp, GLIBC_PRIVATE);
+-versioned_symbol (libc, __v2__libc_siglongjmp, __libc_siglongjmp, GLIBC_PRIVATE);
+-
+-versioned_symbol (libc, __v2_longjmp, _longjmp, GLIBC_2_19);
+-versioned_symbol (libc, __v2longjmp, longjmp, GLIBC_2_19);
+-versioned_symbol (libc, __v2siglongjmp, siglongjmp, GLIBC_2_19);
+-#endif /* ifndef __v2__longjmp */
++
++#include <setjmp/longjmp.c>
++
++#if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20)
++/* In glibc release 2.19 new versions of longjmp-functions were introduced,
++   but were reverted before 2.20. Thus both versions are the same function.  */
++weak_alias (__libc_siglongjmp, __v1_longjmp)
++weak_alias (__libc_siglongjmp, __v2_longjmp)
++versioned_symbol (libc, __v1_longjmp, _longjmp, GLIBC_2_0);
++compat_symbol (libc, __v2_longjmp, _longjmp, GLIBC_2_19);
++
++weak_alias (__libc_siglongjmp, __v1longjmp)
++weak_alias (__libc_siglongjmp, __v2longjmp)
++versioned_symbol (libc, __v1longjmp, longjmp, GLIBC_2_0);
++compat_symbol (libc, __v2longjmp, longjmp, GLIBC_2_19);
++
++weak_alias (__libc_siglongjmp, __v1siglongjmp)
++weak_alias (__libc_siglongjmp, __v2siglongjmp)
++versioned_symbol (libc, __v1siglongjmp, siglongjmp, GLIBC_2_0);
++compat_symbol (libc, __v2siglongjmp, siglongjmp, GLIBC_2_19);
++#endif /* SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20)  */
+--- a/sysdeps/s390/rtld-__longjmp.c
++++ /dev/null
+@@ -1,19 +0,0 @@
+-/* Copyright (C) 2013 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
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-/* Build a non-versioned object for rtld-*.  */
+-# include "__longjmp-common.c"
+--- a/sysdeps/s390/rtld-global-offsets.sym
++++ /dev/null
+@@ -1,7 +0,0 @@
+-#define SHARED 1
+-
+-#include <ldsodefs.h>
+-
+-#define rtld_global_ro_offsetof(mem) offsetof (struct rtld_global_ro, mem)
+-
+-RTLD_GLOBAL_RO_DL_HWCAP_OFFSET	rtld_global_ro_offsetof (_dl_hwcap)
+--- a/sysdeps/s390/rtld-setjmp.S
++++ /dev/null
+@@ -1,20 +0,0 @@
+-/* Extendible version of setjmp for System z
+-   Copyright (C) 2013 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
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-/* Build a non-versioned object for rtld-*.  */
+-# include "setjmp-common.S"
+--- a/sysdeps/s390/s390-32/__longjmp-common.c
++++ /dev/null
+@@ -1,68 +0,0 @@
+-/* Copyright (C) 2000-2014 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <errno.h>
+-#include <sysdep.h>
+-#include <setjmp.h>
+-#include <bits/setjmp.h>
+-#include <stdlib.h>
+-#include <unistd.h>
+-
+-/* Jump to the position specified by ENV, causing the
+-   setjmp call there to return VAL, or 1 if VAL is 0.  */
+-attribute_hidden void
+-__longjmp (__jmp_buf env, int val)
+-{
+-#ifdef PTR_DEMANGLE
+-  uintptr_t guard = THREAD_GET_POINTER_GUARD ();
+-# ifdef CHECK_SP
+-  CHECK_SP (env, guard);
+-# endif
+-#elif defined CHECK_SP
+-  CHECK_SP (env, 0);
+-#endif
+-  register int r2 __asm ("%r2") = val == 0 ? 1 : val;
+-#ifdef PTR_DEMANGLE
+-  register uintptr_t r3 __asm ("%r3") = guard;
+-  register void *r1 __asm ("%r1") = (void *) env;
+-#endif
+-  /* Restore registers and jump back.  */
+-  asm volatile ("ld   %%f6,48(%1)\n\t"
+-		"ld   %%f4,40(%1)\n\t"
+-#ifdef PTR_DEMANGLE
+-		"lm   %%r6,%%r13,0(%1)\n\t"
+-		"lm   %%r4,%%r5,32(%1)\n\t"
+-		"xr   %%r4,%2\n\t"
+-		"xr   %%r5,%2\n\t"
+-		"lr   %%r15,%%r5\n\t"
+-		"br   %%r4"
+-#else
+-		"lm   %%r6,%%r15,0(%1)\n\t"
+-		"br   %%r14"
+-#endif
+-		: : "r" (r2),
+-#ifdef PTR_DEMANGLE
+-		    "r" (r1), "r" (r3)
+-#else
+-		    "a" (env)
+-#endif
+-		);
+-
+-  /* Avoid `volatile function does return' warnings.  */
+-  for (;;);
+-}
+--- /dev/null
++++ b/sysdeps/s390/s390-32/__longjmp.c
+@@ -0,0 +1,68 @@
++/* Copyright (C) 2000-2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <errno.h>
++#include <sysdep.h>
++#include <setjmp.h>
++#include <bits/setjmp.h>
++#include <stdlib.h>
++#include <unistd.h>
++
++/* Jump to the position specified by ENV, causing the
++   setjmp call there to return VAL, or 1 if VAL is 0.  */
++void
++__longjmp (__jmp_buf env, int val)
++{
++#ifdef PTR_DEMANGLE
++  uintptr_t guard = THREAD_GET_POINTER_GUARD ();
++# ifdef CHECK_SP
++  CHECK_SP (env, guard);
++# endif
++#elif defined CHECK_SP
++  CHECK_SP (env, 0);
++#endif
++  register int r2 __asm ("%r2") = val == 0 ? 1 : val;
++#ifdef PTR_DEMANGLE
++  register uintptr_t r3 __asm ("%r3") = guard;
++  register void *r1 __asm ("%r1") = (void *) env;
++#endif
++  /* Restore registers and jump back.  */
++  asm volatile ("ld   %%f6,48(%1)\n\t"
++		"ld   %%f4,40(%1)\n\t"
++#ifdef PTR_DEMANGLE
++		"lm   %%r6,%%r13,0(%1)\n\t"
++		"lm   %%r4,%%r5,32(%1)\n\t"
++		"xr   %%r4,%2\n\t"
++		"xr   %%r5,%2\n\t"
++		"lr   %%r15,%%r5\n\t"
++		"br   %%r4"
++#else
++		"lm   %%r6,%%r15,0(%1)\n\t"
++		"br   %%r14"
++#endif
++		: : "r" (r2),
++#ifdef PTR_DEMANGLE
++		    "r" (r1), "r" (r3)
++#else
++		    "a" (env)
++#endif
++		);
++
++  /* Avoid `volatile function does return' warnings.  */
++  for (;;);
++}
+--- a/sysdeps/s390/s390-32/setjmp-common.S
++++ /dev/null
+@@ -1,84 +0,0 @@
+-/* setjmp for s390, ELF version.
+-   Copyright (C) 2000-2014 Free Software Foundation, Inc.
+-   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+-   This file is part of the GNU C Library.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <sysdep.h>
+-#define _ASM
+-#define _SETJMP_H
+-#include <bits/setjmp.h>
+-
+-	/* We include the BSD entry points here as well but we make
+-	   them weak.  */
+-ENTRY (setjmp)
+-	.weak C_SYMBOL_NAME (setjmp)
+-	lhi    %r3,1                /* second argument of one */
+-	j      0f                   /* branch relativ to __sigsetjmp */
+-END (setjmp)
+-
+-	/* Binary compatibility entry point.  */
+-ENTRY(_setjmp)
+-	.weak  C_SYMBOL_NAME (_setjmp)
+-	lhi    %r3,0                /* second argument of zero */
+-	j      0f                   /* branch relativ to __sigsetjmp */
+-END (_setjmp)
+-libc_hidden_def (_setjmp)
+-
+-ENTRY(__setjmp)
+-	lhi    %r3,0                /* second argument of zero */
+-	j      0f                   /* branch relativ to __sigsetjmp */
+-END (__setjmp)
+-
+-ENTRY(__sigsetjmp)
+-0:
+-#ifdef PTR_MANGLE
+-	stm    %r6,%r13,0(%r2)      /* store registers in jmp_buf */
+-	lr     %r4,%r14
+-	lr     %r5,%r15
+-	PTR_MANGLE (%r4, %r1)
+-	PTR_MANGLE2 (%r5, %r1)
+-	stm    %r4,%r5,32(%r2)
+-#else
+-	stm    %r6,%r15,0(%r2)      /* store registers in jmp_buf */
+-#endif
+-#ifndef __V1_JMPBUF
+-	lhi    %r4,0
+-	st     %r4,56(%r2)         /* Set __flags to 0.  */
+-#endif
+-	std    %f4,40(%r2)
+-	std    %f6,48(%r2)
+-#if defined NOT_IN_libc && defined IS_IN_rtld
+-	/* In ld.so we never save the signal mask.  */
+-	lhi    %r2,0
+-	br     %r14
+-#elif defined PIC
+-	/* We cannot use the PLT, because it requires that %r12 be set, but
+-	   we can't save and restore our caller's value.  Instead, we do an
+-	   indirect jump through the GOT. */
+-	basr   %r1,0
+-0:      al     %r1,1f-0b(0,%r1) /* get address of global offset table */
+-				/* get address of __sigjmp_save from got */
+-	l      %r1,__sigjmp_save@GOT12(0,%r1)
+-	br     %r1
+-1:      .long  _GLOBAL_OFFSET_TABLE_ - 0b
+-#else
+-	basr   %r1,0
+-0:      l      %r1,1f-0b(0,%r1)   /* load address of __sigjmp_save */
+-	br     %r1                /* tail-call __sigjmp_save */
+-1:      .long  __sigjmp_save
+-#endif
+-END (__sigsetjmp)
+--- /dev/null
++++ b/sysdeps/s390/s390-32/setjmp.S
+@@ -0,0 +1,111 @@
++/* setjmp for s390, ELF version.
++   Copyright (C) 2000-2014 Free Software Foundation, Inc.
++   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++#define _ASM
++#define _SETJMP_H
++#include <bits/setjmp.h>
++#include <shlib-compat.h>
++
++#if !defined IS_IN_rtld
++# if defined SHARED &&  SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20)
++	/* we need a unique name in case of symbol versioning.  */
++#  define __sigsetjmp __v1__sigsetjmp
++# endif /* if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20)  */
++#endif /* !defined IS_IN_rtld  */
++
++	/* We include the BSD entry points here as well but we make
++	   them weak.  */
++ENTRY (setjmp)
++	.weak C_SYMBOL_NAME (setjmp)
++	lhi    %r3,1                /* second argument of one */
++	j      .Linternal_sigsetjmp /* branch relativ to __sigsetjmp */
++END (setjmp)
++
++	/* Binary compatibility entry point.  */
++ENTRY(_setjmp)
++	.weak  C_SYMBOL_NAME (_setjmp)
++	lhi    %r3,0                /* second argument of zero */
++	j      .Linternal_sigsetjmp /* branch relativ to __sigsetjmp */
++END (_setjmp)
++libc_hidden_def (_setjmp)
++
++ENTRY(__setjmp)
++	lhi    %r3,0                /* second argument of zero */
++	j      .Linternal_sigsetjmp /* branch relativ to __sigsetjmp */
++END (__setjmp)
++
++ENTRY(__sigsetjmp)
++.Linternal_sigsetjmp:
++#ifdef PTR_MANGLE
++	stm    %r6,%r13,0(%r2)      /* store registers in jmp_buf */
++	lr     %r4,%r14
++	lr     %r5,%r15
++	PTR_MANGLE (%r4, %r1)
++	PTR_MANGLE2 (%r5, %r1)
++	stm    %r4,%r5,32(%r2)
++#else
++	stm    %r6,%r15,0(%r2)      /* store registers in jmp_buf */
++#endif
++	std    %f4,40(%r2)
++	std    %f6,48(%r2)
++#if defined NOT_IN_libc && defined IS_IN_rtld
++	/* In ld.so we never save the signal mask.  */
++	lhi    %r2,0
++	br     %r14
++#elif defined PIC
++	/* We cannot use the PLT, because it requires that %r12 be set, but
++	   we can't save and restore our caller's value.  Instead, we do an
++	   indirect jump through the GOT. */
++	basr   %r1,0
++.L0:    al     %r1,.L1 - .L0(0,%r1) /* get address of global offset table */
++				    /* get address of __sigjmp_save from got */
++	l      %r1,__sigjmp_save@GOT12(0,%r1)
++	br     %r1
++.L1:    .long  _GLOBAL_OFFSET_TABLE_ - .L0
++#else
++	basr   %r1,0
++.L0:    l      %r1,.L1-.L0(0,%r1)   /* load address of __sigjmp_save */
++	br     %r1                  /* tail-call __sigjmp_save */
++.L1:    .long  __sigjmp_save
++#endif
++END (__sigsetjmp)
++
++#if !defined IS_IN_rtld
++# if defined SHARED &&  SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20)
++/* In glibc release 2.19 new versions of setjmp-functions were introduced,
++   but were reverted before 2.20. Thus both versions are the same function.  */
++
++#  undef __sigsetjmp
++
++weak_alias (setjmp, __v1setjmp);
++weak_alias (setjmp, __v2setjmp);
++versioned_symbol (libc, __v1setjmp, setjmp, GLIBC_2_0);
++compat_symbol (libc, __v2setjmp, setjmp, GLIBC_2_19);
++
++weak_alias (_setjmp, __v1_setjmp);
++weak_alias (_setjmp, __v2_setjmp);
++versioned_symbol (libc, __v1_setjmp, _setjmp, GLIBC_2_0);
++compat_symbol (libc, __v2_setjmp, _setjmp, GLIBC_2_19);
++
++strong_alias (__v1__sigsetjmp, __v2__sigsetjmp);
++versioned_symbol (libc, __v1__sigsetjmp, __sigsetjmp, GLIBC_2_0);
++compat_symbol (libc, __v2__sigsetjmp, __sigsetjmp, GLIBC_2_19);
++# endif /* if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20)  */
++#endif /* if !defined IS_IN_rtld  */
+--- a/sysdeps/s390/s390-64/__longjmp-common.c
++++ /dev/null
+@@ -1,74 +0,0 @@
+-/* Copyright (C) 2001-2014 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <errno.h>
+-#include <sysdep.h>
+-#include <setjmp.h>
+-#include <bits/setjmp.h>
+-#include <stdlib.h>
+-#include <unistd.h>
+-
+-/* Jump to the position specified by ENV, causing the
+-   setjmp call there to return VAL, or 1 if VAL is 0.  */
+-attribute_hidden void
+-__longjmp (__jmp_buf env, int val)
+-{
+-#ifdef PTR_DEMANGLE
+-  uintptr_t guard = THREAD_GET_POINTER_GUARD ();
+-# ifdef CHECK_SP
+-  CHECK_SP (env, guard);
+-# endif
+-#elif defined CHECK_SP
+-  CHECK_SP (env, 0);
+-#endif
+-  register long int r2 __asm ("%r2") = val == 0 ? 1 : val;
+-#ifdef PTR_DEMANGLE
+-  register uintptr_t r3 __asm ("%r3") = guard;
+-  register void *r1 __asm ("%r1") = (void *) env;
+-#endif
+-  /* Restore registers and jump back.  */
+-  asm volatile ("ld    %%f8,80(%1)\n\t"
+-		"ld    %%f9,88(%1)\n\t"
+-		"ld    %%f10,96(%1)\n\t"
+-		"ld    %%f11,104(%1)\n\t"
+-		"ld    %%f12,112(%1)\n\t"
+-		"ld    %%f13,120(%1)\n\t"
+-		"ld    %%f14,128(%1)\n\t"
+-		"ld    %%f15,136(%1)\n\t"
+-#ifdef PTR_DEMANGLE
+-		"lmg  %%r6,%%r13,0(%1)\n\t"
+-		"lmg  %%r4,%%r5,64(%1)\n\t"
+-		"xgr  %%r4,%2\n\t"
+-		"xgr  %%r5,%2\n\t"
+-		"lgr  %%r15,%%r5\n\t"
+-		"br   %%r4"
+-#else
+-		"lmg  %%r6,%%r15,0(%1)\n\t"
+-		"br   %%r14"
+-#endif
+-		: : "r" (r2),
+-#ifdef PTR_DEMANGLE
+-		    "r" (r1), "r" (r3)
+-#else
+-		    "a" (env)
+-#endif
+-		);
+-
+-  /* Avoid `volatile function does return' warnings.  */
+-  for (;;);
+-}
+--- /dev/null
++++ b/sysdeps/s390/s390-64/__longjmp.c
+@@ -0,0 +1,74 @@
++/* Copyright (C) 2001-2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <errno.h>
++#include <sysdep.h>
++#include <setjmp.h>
++#include <bits/setjmp.h>
++#include <stdlib.h>
++#include <unistd.h>
++
++/* Jump to the position specified by ENV, causing the
++   setjmp call there to return VAL, or 1 if VAL is 0.  */
++void
++__longjmp (__jmp_buf env, int val)
++{
++#ifdef PTR_DEMANGLE
++  uintptr_t guard = THREAD_GET_POINTER_GUARD ();
++# ifdef CHECK_SP
++  CHECK_SP (env, guard);
++# endif
++#elif defined CHECK_SP
++  CHECK_SP (env, 0);
++#endif
++  register long int r2 __asm ("%r2") = val == 0 ? 1 : val;
++#ifdef PTR_DEMANGLE
++  register uintptr_t r3 __asm ("%r3") = guard;
++  register void *r1 __asm ("%r1") = (void *) env;
++#endif
++  /* Restore registers and jump back.  */
++  asm volatile ("ld    %%f8,80(%1)\n\t"
++		"ld    %%f9,88(%1)\n\t"
++		"ld    %%f10,96(%1)\n\t"
++		"ld    %%f11,104(%1)\n\t"
++		"ld    %%f12,112(%1)\n\t"
++		"ld    %%f13,120(%1)\n\t"
++		"ld    %%f14,128(%1)\n\t"
++		"ld    %%f15,136(%1)\n\t"
++#ifdef PTR_DEMANGLE
++		"lmg  %%r6,%%r13,0(%1)\n\t"
++		"lmg  %%r4,%%r5,64(%1)\n\t"
++		"xgr  %%r4,%2\n\t"
++		"xgr  %%r5,%2\n\t"
++		"lgr  %%r15,%%r5\n\t"
++		"br   %%r4"
++#else
++		"lmg  %%r6,%%r15,0(%1)\n\t"
++		"br   %%r14"
++#endif
++		: : "r" (r2),
++#ifdef PTR_DEMANGLE
++		    "r" (r1), "r" (r3)
++#else
++		    "a" (env)
++#endif
++		);
++
++  /* Avoid `volatile function does return' warnings.  */
++  for (;;);
++}
+--- a/sysdeps/s390/s390-64/setjmp-common.S
++++ /dev/null
+@@ -1,79 +0,0 @@
+-/* setjmp for 64 bit S/390, ELF version.
+-   Copyright (C) 2001-2014 Free Software Foundation, Inc.
+-   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+-   This file is part of the GNU C Library.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <sysdep.h>
+-#define _ASM
+-#define _SETJMP_H
+-#include <bits/setjmp.h>
+-
+-	/* We include the BSD entry points here as well but we make
+-	   them weak.  */
+-ENTRY (setjmp)
+-	.weak C_SYMBOL_NAME (setjmp)
+-        lghi   %r3,1                /* Second argument of one.  */
+-        j      0f                   /* Branch relativ to __sigsetjmp.  */
+-END (setjmp)
+-
+-	/* Binary compatibility entry point.  */
+-ENTRY(_setjmp)
+-        .weak  C_SYMBOL_NAME (_setjmp)
+-        slgr   %r3,%r3              /* Second argument of zero.  */
+-        j      0f                   /* Branch relativ to __sigsetjmp.  */
+-END (_setjmp)
+-libc_hidden_def (_setjmp)
+-
+-ENTRY(__setjmp)
+-        slgr   %r3,%r3              /* Second argument of zero.  */
+-        j      0f                   /* Branch relativ to __sigsetjmp.  */
+-END (__setjmp)
+-
+-ENTRY(__sigsetjmp)
+-0:
+-#ifdef PTR_MANGLE
+-	stmg   %r6,%r13,0(%r2)      /* Store registers in jmp_buf.  */
+-	lgr    %r4,%r14
+-	lgr    %r5,%r15
+-	PTR_MANGLE (%r4, %r1)
+-	PTR_MANGLE2 (%r5, %r1)
+-	stmg   %r4,%r5,64(%r2)
+-#else
+-        stmg   %r6,%r15,0(%r2)      /* Store registers in jmp_buf.  */
+-#endif
+-#ifndef __V1_JMPBUF
+-	lghi   %r4,0
+-	stg    %r4,144(%r2)         /* Set __flags to 0.  */
+-#endif
+-	std    %f8,80(%r2)
+-	std    %f9,88(%r2)
+-	std    %f10,96(%r2)
+-	std    %f11,104(%r2)
+-	std    %f12,112(%r2)
+-	std    %f13,120(%r2)
+-	std    %f14,128(%r2)
+-	std    %f15,136(%r2)
+-#if defined NOT_IN_libc && defined IS_IN_rtld
+-	/* In ld.so we never save the signal mask.  */
+-	lghi   %r2,0
+-	br     %r14
+-#elif defined PIC
+-        jg     __sigjmp_save@PLT    /* Branch to PLT of __sigsetjmp.  */
+-#else
+-	jg     __sigjmp_save
+-#endif
+-END (__sigsetjmp)
+--- /dev/null
++++ b/sysdeps/s390/s390-64/setjmp.S
+@@ -0,0 +1,106 @@
++/* setjmp for 64 bit S/390, ELF version.
++   Copyright (C) 2001-2014 Free Software Foundation, Inc.
++   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++#define _ASM
++#define _SETJMP_H
++#include <bits/setjmp.h>
++#include <shlib-compat.h>
++
++#if !defined IS_IN_rtld
++# if defined SHARED &&  SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20)
++	/* we need a unique name in case of symbol versioning.  */
++#  define __sigsetjmp __v1__sigsetjmp
++# endif /* if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20)  */
++#endif /* !defined IS_IN_rtld  */
++
++	/* We include the BSD entry points here as well but we make
++	   them weak.  */
++ENTRY (setjmp)
++	.weak C_SYMBOL_NAME (setjmp)
++        lghi   %r3,1                /* Second argument of one.  */
++        j      .Linternal_sigsetjmp /* Branch relativ to __sigsetjmp.  */
++END (setjmp)
++
++	/* Binary compatibility entry point.  */
++ENTRY(_setjmp)
++        .weak  C_SYMBOL_NAME (_setjmp)
++        slgr   %r3,%r3              /* Second argument of zero.  */
++        j      .Linternal_sigsetjmp /* Branch relativ to __sigsetjmp.  */
++END (_setjmp)
++libc_hidden_def (_setjmp)
++
++ENTRY(__setjmp)
++        slgr   %r3,%r3              /* Second argument of zero.  */
++        j      .Linternal_sigsetjmp /* Branch relativ to __sigsetjmp.  */
++END (__setjmp)
++
++ENTRY(__sigsetjmp)
++.Linternal_sigsetjmp:
++#ifdef PTR_MANGLE
++	stmg   %r6,%r13,0(%r2)      /* Store registers in jmp_buf.  */
++	lgr    %r4,%r14
++	lgr    %r5,%r15
++	PTR_MANGLE (%r4, %r1)
++	PTR_MANGLE2 (%r5, %r1)
++	stmg   %r4,%r5,64(%r2)
++#else
++        stmg   %r6,%r15,0(%r2)      /* Store registers in jmp_buf.  */
++#endif
++	std    %f8,80(%r2)
++	std    %f9,88(%r2)
++	std    %f10,96(%r2)
++	std    %f11,104(%r2)
++	std    %f12,112(%r2)
++	std    %f13,120(%r2)
++	std    %f14,128(%r2)
++	std    %f15,136(%r2)
++#if defined NOT_IN_libc && defined IS_IN_rtld
++	/* In ld.so we never save the signal mask.  */
++	lghi   %r2,0
++	br     %r14
++#elif defined PIC
++        jg     __sigjmp_save@PLT    /* Branch to PLT of __sigsetjmp.  */
++#else
++	jg     __sigjmp_save
++#endif
++END (__sigsetjmp)
++
++#if !defined IS_IN_rtld
++# if defined SHARED &&  SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20)
++/* In glibc release 2.19 new versions of setjmp-functions were introduced,
++   but were reverted before 2.20. Thus both versions are the same function.  */
++
++#  undef __sigsetjmp
++
++weak_alias (setjmp, __v1setjmp);
++weak_alias (setjmp, __v2setjmp);
++versioned_symbol (libc, __v1setjmp, setjmp, GLIBC_2_0);
++compat_symbol (libc, __v2setjmp, setjmp, GLIBC_2_19);
++
++weak_alias (_setjmp, __v1_setjmp);
++weak_alias (_setjmp, __v2_setjmp);
++versioned_symbol (libc, __v1_setjmp, _setjmp, GLIBC_2_0);
++compat_symbol (libc, __v2_setjmp, _setjmp, GLIBC_2_19);
++
++strong_alias (__v1__sigsetjmp, __v2__sigsetjmp);
++versioned_symbol (libc, __v1__sigsetjmp, __sigsetjmp, GLIBC_2_0);
++compat_symbol (libc, __v2__sigsetjmp, __sigsetjmp, GLIBC_2_19);
++# endif /* if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20)  */
++#endif /* if !defined IS_IN_rtld  */
+--- a/sysdeps/s390/setjmp.S
++++ /dev/null
+@@ -1,64 +0,0 @@
+-/* Extendible version of setjmp for System z
+-   Copyright (C) 2013 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
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <libc-symbols.h>
+-#include <shlib-compat.h>
+-
+-versioned_symbol (libc, __v2setjmp, setjmp, GLIBC_2_19)
+-versioned_symbol (libc, __v2_setjmp, _setjmp, GLIBC_2_19)
+-versioned_symbol (libc, __v2__setjmp, __setjmp, GLIBC_2_19)
+-versioned_symbol (libc, __v2__sigsetjmp, __sigsetjmp, GLIBC_2_19)
+-#define setjmp __v2setjmp
+-#define _setjmp __v2_setjmp
+-#define __setjmp __v2__setjmp
+-#define __sigsetjmp __v2__sigsetjmp
+-#define __sigjmp_save __v2__sigjmp_save
+-
+-#include "setjmp-common.S"
+-
+-#undef setjmp
+-#undef _setjmp
+-#undef __setjmp
+-#undef __sigsetjmp
+-#undef __sigjmp_save
+-libc_hidden_ver (__v2setjmp, setjmp)
+-libc_hidden_ver (__v2_setjmp, _setjmp)
+-libc_hidden_ver (__v2__setjmp, __setjmp)
+-libc_hidden_ver (__v2__sigsetjmp, __sigsetjmp)
+-
+-#if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_19)
+-compat_symbol (libc, __v1setjmp, setjmp, GLIBC_2_0)
+-compat_symbol (libc, __v1_setjmp, _setjmp, GLIBC_2_0)
+-compat_symbol (libc, __v1__setjmp, __setjmp, GLIBC_2_0)
+-compat_symbol (libc, __v1__sigsetjmp, __sigsetjmp, GLIBC_2_0)
+-# define setjmp __v1setjmp
+-# define _setjmp __v1_setjmp
+-# define __setjmp __v1__setjmp
+-# define __sigsetjmp __v1__sigsetjmp
+-# define __sigjmp_save __v1__sigjmp_save
+-# define __V1_JMPBUF
+-
+-# include "setjmp-common.S"
+-
+-# undef setjmp
+-# undef _setjmp
+-# undef __setjmp
+-# undef __sigsetjmp
+-# undef __sigjmp_save
+-
+-#endif /* if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_19) */
+--- a/sysdeps/s390/sigjmp.c
++++ /dev/null
+@@ -1,34 +0,0 @@
+-/* Copyright (C) 1992-2013 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
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <stddef.h>
+-#include <setjmp.h>
+-#include <signal.h>
+-
+-/* This function is called by the `sigsetjmp' macro
+-   before doing a `__setjmp' on ENV[0].__jmpbuf.
+-   Always return zero.  */
+-
+-int
+-__v2__sigjmp_save (sigjmp_buf env, int savemask)
+-{
+-  env[0].__mask_was_saved = (savemask &&
+-			     __sigprocmask (SIG_BLOCK, (sigset_t *) NULL,
+-					    &env[0].__saved_mask) == 0);
+-
+-  return 0;
+-}
+--- a/sysdeps/s390/v1-longjmp.c
++++ /dev/null
+@@ -1,57 +0,0 @@
+-/* Copyright (C) 2013 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
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.
+-
+-   Versioned copy of sysdeps/generic/longjmp.c modified for extended
+-   jmpbuf.  */
+-
+-#include <shlib-compat.h>
+-#include <stddef.h>
+-#include <signal.h>
+-#include "v1-setjmp.h"
+-
+-#if !defined NOT_INT_libc && defined SHARED
+-# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_19)
+-
+-void
+-__v1__libc_siglongjmp (__v1__sigjmp_buf env, int val)
+-{
+-  /* Perform any cleanups needed by the frames being unwound.  */
+-  _longjmp_unwind (env, val);
+-
+-  if (env[0].__mask_was_saved)
+-    /* Restore the saved signal mask.  */
+-    (void) __sigprocmask (SIG_SETMASK, &env[0].__saved_mask,
+-			  (sigset_t *) NULL);
+-
+-  /* Call the machine-dependent function to restore machine state.  */
+-  __v1__longjmp (env[0].__jmpbuf, val ?: 1);
+-}
+-
+-#  ifndef __v1__longjmp
+-strong_alias (__v1__libc_siglongjmp, __v1__libc_longjmp)
+-libc_hidden_def (__v1__libc_longjmp)
+-weak_alias (__v1__libc_siglongjmp, __v1_longjmp)
+-weak_alias (__v1__libc_siglongjmp, __v1longjmp)
+-weak_alias (__v1__libc_siglongjmp, __v1siglongjmp)
+-
+-compat_symbol (libc, __v1_longjmp, _longjmp, GLIBC_2_0);
+-compat_symbol (libc, __v1longjmp, longjmp, GLIBC_2_0);
+-compat_symbol (libc, __v1siglongjmp, siglongjmp, GLIBC_2_0);
+-
+-#  endif /* ifndef __v1__longjmp */
+-# endif /* SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_19) */
+-#endif /* if !defined NOT_INT_libc && defined SHARED */
+--- a/sysdeps/s390/v1-setjmp.h
++++ /dev/null
+@@ -1,111 +0,0 @@
+-/* Copyright (C) 1991-2013 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
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-/*
+- *	ISO C99 Standard: 7.13 Nonlocal jumps	<setjmp.h>
+- */
+-
+-#ifndef	_V1_SETJMP_H
+-#define	_V1_SETJMP_H	1
+-
+-#include <features.h>
+-
+-__BEGIN_DECLS
+-
+-#define __V1_JMPBUF
+-#define _SETJMP_H
+-#include <bits/setjmp.h>		/* Get `__jmp_buf'.  */
+-
+-#ifndef _ASM
+-
+-#include <bits/sigset.h>		/* Get `__sigset_t'.  */
+-
+-
+-/* Calling environment, plus possibly a saved signal mask.  */
+-typedef struct __v1__jmp_buf_tag
+-  {
+-    /* NOTE: The machine-dependent definitions of `__sigsetjmp'
+-       assume that a `jmp_buf' begins with a `__jmp_buf' and that
+-       `__mask_was_saved' follows it.  Do not move these members
+-       or add others before it.  */
+-    __jmp_buf __jmpbuf;		/* Calling environment.  */
+-    int __mask_was_saved;	/* Saved the signal mask?  */
+-    __sigset_t __saved_mask;	/* Saved signal mask.  */
+-  } __v1__jmp_buf[1];
+-
+-
+-/* Store the calling environment in ENV, also saving the signal mask.
+-   Return 0.  */
+-extern int __v1setjmp (__v1__jmp_buf __env);
+-
+-/* Store the calling environment in ENV, also saving the
+-   signal mask if SAVEMASK is nonzero.  Return 0.
+-   This is the internal name for `sigsetjmp'.  */
+-extern int __v1__sigsetjmp (struct __v1__jmp_buf_tag __env[1],
+-			       int __savemask);
+-
+-/* Store the calling environment in ENV, not saving the signal mask.
+-   Return 0.  */
+-extern int __v1_setjmp (struct __v1__jmp_buf_tag __env[1]);
+-
+-/* Jump to the environment saved in ENV, making the
+-   `setjmp' call there return VAL, or 1 if VAL is 0.  */
+-extern void __v1longjmp (struct __v1__jmp_buf_tag __env[1], int __val)
+-     __attribute__ ((__noreturn__));
+-
+-/* Same.  Usually `_longjmp' is used with `_setjmp', which does not save
+-   the signal mask.  But it is how ENV was saved that determines whether
+-   `longjmp' restores the mask; `_longjmp' is just an alias.  */
+-extern void __v1_longjmp (struct __v1__jmp_buf_tag __env[1], int __val)
+-     __attribute__ ((__noreturn__));
+-
+-/* Use the same type for `jmp_buf' and `sigjmp_buf'.
+-   The `__mask_was_saved' flag determines whether
+-   or not `longjmp' will restore the signal mask.  */
+-typedef struct __v1__jmp_buf_tag __v1__sigjmp_buf[1];
+-
+-/* Jump to the environment saved in ENV, making the
+-   sigsetjmp call there return VAL, or 1 if VAL is 0.
+-   Restore the signal mask if that sigsetjmp call saved it.
+-   This is just an alias `longjmp'.  */
+-extern void __v1siglongjmp (__v1__sigjmp_buf __env, int __val)
+-     __attribute__ ((__noreturn__));
+-
+-/* Internal machine-dependent function to restore context sans signal mask.  */
+-extern void __v1__longjmp (__jmp_buf __env, int __val)
+-     __attribute__ ((__noreturn__));
+-
+-/* Internal function to possibly save the current mask of blocked signals
+-   in ENV, and always set the flag saying whether or not it was saved.
+-   This is used by the machine-dependent definition of `__sigsetjmp'.
+-   Always returns zero, for convenience.  */
+-extern int __v1__sigjmp_save (__v1__jmp_buf __env, int __savemask);
+-
+-extern void _longjmp_unwind (__v1__jmp_buf env, int val);
+-
+-extern void __v1__libc_siglongjmp (__v1__sigjmp_buf env, int val)
+-          __attribute__ ((noreturn));
+-
+-extern void __v1__libc_longjmp (__v1__sigjmp_buf env, int val)
+-     __attribute__ ((noreturn));
+-
+-libc_hidden_proto (__v1__libc_longjmp)
+-libc_hidden_proto (__v1_setjmp)
+-libc_hidden_proto (__v1__sigsetjmp)
+-#endif /* !_ASM */
+-
+-#endif /* ifndef _V1_SETJMP_H */
+--- a/sysdeps/s390/v1-sigjmp.c
++++ /dev/null
+@@ -1,44 +0,0 @@
+-/* Copyright (C) 1992-2013 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
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.
+-
+-   Copied from setjmp/sigjmp.c for extending jmp_buf.  */
+-
+-#include <bits/wordsize.h>
+-#include <shlib-compat.h>
+-
+-#if !defined NOT_IN_libc && defined SHARED
+-# if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_19)
+-#  include <stddef.h>
+-#  include <v1-setjmp.h>
+-#  include <signal.h>
+-
+-/* This function is called by the `sigsetjmp' macro
+-   before doing a `__setjmp' on ENV[0].__jmpbuf.
+-   Always return zero.  */
+-
+-int
+-__v1__sigjmp_save (__v1__sigjmp_buf env, int savemask)
+-{
+-  env[0].__mask_was_saved = (savemask &&
+-			     __sigprocmask (SIG_BLOCK, (sigset_t *) NULL,
+-					    &env[0].__saved_mask) == 0);
+-
+-  return 0;
+-}
+-
+-# endif /* SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_19) */
+-#endif /* !NOT_IN_libc && SHARED  */
+--- a/sysdeps/unix/sysv/linux/s390/Makefile
++++ b/sysdeps/unix/sysv/linux/s390/Makefile
+@@ -16,9 +16,3 @@
+ ifeq ($(subdir),elf)
+ sysdep_routines += dl-vdso
+ endif
+-
+-ifeq ($(subdir),debug)
+-ifeq (yes,$(build-shared))
+-sysdep_routines += v1-longjmp_chk
+-endif
+-endif
+--- a/sysdeps/unix/sysv/linux/s390/getcontext.S
++++ /dev/null
+@@ -1,38 +0,0 @@
+-/* Extendible version of getcontext for System z
+-   Copyright (C) 2013 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
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <libc-symbols.h>
+-#include <shlib-compat.h>
+-
+-versioned_symbol (libc, __v2getcontext, getcontext, GLIBC_2_19)
+-#define __getcontext __v2getcontext
+-
+-#include "getcontext-common.S"
+-
+-#undef __getcontext
+-
+-libc_hidden_ver (__v2getcontext, getcontext)
+-
+-#if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_19)
+-# define __V1_UCONTEXT
+-compat_symbol (libc, __v1getcontext, getcontext, GLIBC_2_1)
+-# define __getcontext __v1getcontext
+-# include "getcontext-common.S"
+-# undef __getcontext
+-
+-#endif
+--- a/sysdeps/unix/sysv/linux/s390/longjmp_chk.c
++++ b/sysdeps/unix/sysv/linux/s390/longjmp_chk.c
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2013 Free Software Foundation, Inc.
++/* Copyright (C) 2014 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
+@@ -15,30 +15,34 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.
+ 
+-   This is a copy of debug/longjmp_chk.c extended for symbol
+-   versioning.  */
++   Versioned copy of debug/longjmp_chk.c modified for versioning
++   the reverted jmpbuf extension.  */
+ 
+ #include <shlib-compat.h>
+-#include <setjmp.h>
+ 
+-/* This place is the only user of these functions.  */
+-extern void ____v2__longjmp_chk (__jmp_buf __env, int __val)
++#if !defined NOT_IN_libc && defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20)
++/* this is a copy from debug/longjmp_chk.c because we need an unique name
++   for __longjmp_chk, but it is already named via a define
++   for __libc_siglongjmp in debug/longjmp_chk.c.  */
++# include <setjmp.h>
++
++// XXX Should move to include/setjmp.h
++extern void ____longjmp_chk (__jmp_buf __env, int __val)
+      __attribute__ ((__noreturn__));
+ 
+-#if defined NOT_IN_libc
++# define __longjmp ____longjmp_chk
++# define __libc_siglongjmp __v1__longjmp_chk
+ 
+-# define __v2__longjmp ____longjmp_chk
+-# define __v2__libc_siglongjmp __longjmp_chk
++# include <setjmp/longjmp.c>
+ 
+-# include <longjmp.c>
++/* In glibc release 2.19 a new versions of __longjmp_chk was introduced,
++   but was reverted before 2.20. Thus both versions are the same function.  */
++strong_alias (__v1__longjmp_chk, __v2__longjmp_chk);
++versioned_symbol (libc, __v1__longjmp_chk, __longjmp_chk, GLIBC_2_11);
++compat_symbol (libc, __v2__longjmp_chk, __longjmp_chk, GLIBC_2_19);
+ 
+ #else
+ 
+-# define __v2__longjmp ____v2__longjmp_chk
+-# define __v2__libc_siglongjmp __v2__libc_siglongjmp_chk
+-
+-# include <longjmp.c>
+-
+-versioned_symbol (libc, __v2__libc_siglongjmp_chk, __longjmp_chk, GLIBC_2_19);
++# include <debug/longjmp_chk.c>
+ 
+ #endif
+--- a/nptl/sysdeps/unix/sysv/linux/s390/pt-longjmp.c
++++ b/nptl/sysdeps/unix/sysv/linux/s390/pt-longjmp.c
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2013 Free Software Foundation, Inc.
++/* Copyright (C) 2014 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
+@@ -15,49 +15,30 @@
+    License along with the GNU C Library; if not, see
+    <http://www.gnu.org/licenses/>.
+ 
+-   This is a copy of pthread/pt-longjmp.c made for extending the
+-   jmpbuf structure on System z.  */
++   Versioned copy of nptl/pt-longjmp.c modified for versioning
++   the reverted jmpbuf extension.  */
+ 
+-#include <setjmp.h>
+-#include <stdlib.h>
+-#include <bits/wordsize.h>
+-#include "pthreadP.h"
+ #include  <shlib-compat.h>
+-#if defined SHARED && SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_19)
+ 
+-/* The __v1 version prototypes are declared in v1-setjmp.h which
+-   cannot be included together with setjmp.h.  So we put the
+-   prototypes here manually.  */
+-extern void __v1__libc_siglongjmp (sigjmp_buf env, int val)
+-     __attribute__ ((noreturn));
+-extern void __v1__libc_longjmp (sigjmp_buf env, int val)
+-     __attribute__ ((noreturn));
+-
+-void __v1_siglongjmp (sigjmp_buf env, int val)
+-{
+-  __v1__libc_siglongjmp (env, val);
+-}
+-
+-void __v1_longjmp (jmp_buf env, int val)
+-{
+-  __v1__libc_longjmp (env, val);
+-}
+-
+-compat_symbol (libpthread, __v1_longjmp, longjmp, GLIBC_2_0);
+-compat_symbol (libpthread, __v1_siglongjmp, siglongjmp, GLIBC_2_0);
+-#endif /* defined SHARED && SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_19))  */
+-
+-void
+-__v2_longjmp (jmp_buf env, int val)
+-{
+-  __libc_longjmp (env, val);
+-}
+-
+-void
+-__v2_siglongjmp (jmp_buf env, int val)
+-{
+-  __libc_siglongjmp (env, val);
+-}
+-
+-versioned_symbol (libpthread, __v2_longjmp, longjmp, GLIBC_2_19);
+-versioned_symbol (libpthread, __v2_siglongjmp, siglongjmp, GLIBC_2_19);
++#if defined SHARED && SHLIB_COMPAT (libpthread, GLIBC_2_19, GLIBC_2_20)
++	/* we need a unique name in case of symbol versioning.  */
++# define longjmp __v1longjmp
++#endif /* defined SHARED && SHLIB_COMPAT (libpthread, GLIBC_2_19, GLIBC_2_20))  */
++
++#include <nptl/sysdeps/pthread/pt-longjmp.c>
++
++#if defined SHARED && SHLIB_COMPAT (libpthread, GLIBC_2_19, GLIBC_2_20)
++/* In glibc release 2.19 new versions of longjmp-functions were introduced,
++   but were reverted before 2.20. Thus both versions are the same function.  */
++
++# undef longjmp
++
++strong_alias (__v1longjmp, __v2longjmp)
++versioned_symbol (libpthread, __v1longjmp, longjmp, GLIBC_2_0);
++compat_symbol (libpthread, __v2longjmp, longjmp, GLIBC_2_19);
++
++weak_alias (siglongjmp, __v1siglongjmp)
++weak_alias (siglongjmp, __v2siglongjmp)
++versioned_symbol (libpthread, __v1siglongjmp, siglongjmp, GLIBC_2_0);
++compat_symbol (libpthread, __v2siglongjmp, siglongjmp, GLIBC_2_19);
++#endif /* defined SHARED && SHLIB_COMPAT (libpthread, GLIBC_2_19, GLIBC_2_20))  */
+--- a/sysdeps/unix/sysv/linux/s390/rtld-getcontext.S
++++ /dev/null
+@@ -1,19 +0,0 @@
+-/* Copyright (C) 2013 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
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-/* Build a non-versioned object for rtld-*.  */
+-#include "getcontext-common.S"
+--- a/sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c
++++ b/sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c
+@@ -26,8 +26,8 @@
+ #include <stdint.h>
+ #include <signal.h>
+ #include <sys/syscall.h>
+-#include <libc-symbols.h>
+-#include <shlib-compat.h>
++
++#define __longjmp ____longjmp_chk
+ 
+ #define CHECK_SP(env, guard) \
+   do									\
+@@ -51,22 +51,4 @@
+ 	}								\
+     } while (0)
+ 
+-
+-#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"
+-
+-# 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 */
++#include "__longjmp.c"
+--- a/sysdeps/unix/sysv/linux/s390/s390-32/getcontext-common.S
++++ /dev/null
+@@ -1,112 +0,0 @@
+-/* Copyright (C) 2001-2014 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <sysdep.h>
+-#include <features.h>
+-
+-#include "rtld-global-offsets.h"
+-#include "ucontext_i.h"
+-
+-/*  __getcontext (const ucontext_t *ucp)
+-
+-  Saves the machine context in UCP such that when it is activated,
+-  it appears as if __getcontext() returned again.
+-
+-  This implementation is intended to be used for *synchronous* context
+-  switches only.  Therefore, it does not have to save anything
+-  other than the PRESERVED state.  */
+-
+-ENTRY(__getcontext)
+-	lr      %r1,%r2
+-
+-	/* rt_sigprocmask (SIG_BLOCK, NULL, &sc->sc_mask, sigsetsize).  */
+-	la      %r2,SIG_BLOCK
+-	slr	%r3,%r3
+-	la      %r4,SC_MASK(%r1)
+-	lhi	%r5,_NSIG8
+-	svc	SYS_ify(rt_sigprocmask)
+-
+-	/* Store fpu context.  */
+-	stfpc   SC_FPC(%r1)
+-	std     %f0,SC_FPRS(%r1)
+-	std     %f1,SC_FPRS+8(%r1)
+-	std     %f2,SC_FPRS+16(%r1)
+-	std     %f3,SC_FPRS+24(%r1)
+-	std     %f4,SC_FPRS+32(%r1)
+-	std     %f5,SC_FPRS+40(%r1)
+-	std     %f6,SC_FPRS+48(%r1)
+-	std     %f7,SC_FPRS+56(%r1)
+-	std     %f8,SC_FPRS+64(%r1)
+-	std     %f9,SC_FPRS+72(%r1)
+-	std     %f10,SC_FPRS+80(%r1)
+-	std     %f11,SC_FPRS+88(%r1)
+-	std     %f12,SC_FPRS+96(%r1)
+-	std     %f13,SC_FPRS+104(%r1)
+-	std     %f14,SC_FPRS+112(%r1)
+-	std     %f15,SC_FPRS+120(%r1)
+-
+-	lhi	%r2,0
+-#ifndef __V1_UCONTEXT
+-	bras	%r3,0f
+-# ifdef IS_IN_rtld
+-  /* Within ld.so we can do slightly better by addressing dl_hwap
+-     relative to GOT start.  */
+-1:	.long	_GLOBAL_OFFSET_TABLE_ - 1b
+-	.long	C_SYMBOL_NAME(_rtld_global_ro)@GOTOFF
+-0:	l	%r4,0(%r3)
+-	la	%r4,0(%r3,%r4)
+-	l	%r5,4(%r3)
+-	/* _dl_hwcap is 64 bit and we need the lower 32.  */
+-	l	%r3,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET+4(%r4,%r5)
+-# elif PIC
+-1:	.long	_GLOBAL_OFFSET_TABLE_ - 1b
+-	.long	C_SYMBOL_NAME(_rtld_global_ro)@GOT
+-0:	l	%r4,0(%r3)
+-	la	%r4,0(%r3,%r4)  /* GOT pointer -> r4 */
+-	l	%r5,4(%r3)      /* GOT offset -> r5 */
+-	l	%r5,0(%r4,%r5)  /* GOT slot -> r5 */
+-	l	%r3,RTLD_GLOBAL_RO_DL_HWCAP_OFFSET+4(%r5)
+-# else
+-	.long	C_SYMBOL_NAME(_dl_hwcap)
+-0:	l	%r3,0(%r3)
+-	l	%r3,0(%r3)
+-# endif
+-	tml	%r3,512 /* HWCAP_S390_HIGH_GPRS */
+-	jz	2f
+-	/* highgprs implies zarch so stmh/oill is ok here.  */
+-	.machine "z900"
+-	.machinemode "zarch_nohighgprs"
+-	stmh	%r0,%r15,SC_HIGHGPRS(%r1)
+-	oill	%r2,1 /* UCONTEXT_UC_FLAGS_HIGH_GPRS */
+-#endif
+-2:	st	%r2,SC_FLGS(%r1)
+-
+-	/* Set __getcontext return value to 0.  */
+-	slr     %r2,%r2
+-
+-	/* Store access registers.  */
+-	stam    %a0,%a15,SC_ACRS(%r1)
+-
+-	/* Store general purpose registers.  */
+-	stm     %r0,%r15,SC_GPRS(%r1)
+-
+-	/* Return.  */
+-	br	%r14
+-END(__getcontext)
+-
+-weak_alias (__getcontext, getcontext)
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S
+@@ -0,0 +1,86 @@
++/* Copyright (C) 2001-2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++#include <features.h>
++
++#include "ucontext_i.h"
++
++#include <shlib-compat.h>
++
++/*  __getcontext (const ucontext_t *ucp)
++
++  Saves the machine context in UCP such that when it is activated,
++  it appears as if __getcontext() returned again.
++
++  This implementation is intended to be used for *synchronous* context
++  switches only.  Therefore, it does not have to save anything
++  other than the PRESERVED state.  */
++
++ENTRY(__getcontext)
++	lr      %r1,%r2
++
++	/* rt_sigprocmask (SIG_BLOCK, NULL, &sc->sc_mask, sigsetsize).  */
++	la      %r2,SIG_BLOCK
++	slr	%r3,%r3
++	la	%r4,SC_MASK(%r1)
++	lhi	%r5,_NSIG8
++	svc	SYS_ify(rt_sigprocmask)
++
++	/* Store fpu context.  */
++	stfpc   SC_FPC(%r1)
++	std     %f0,SC_FPRS(%r1)
++	std     %f1,SC_FPRS+8(%r1)
++	std     %f2,SC_FPRS+16(%r1)
++	std     %f3,SC_FPRS+24(%r1)
++	std     %f4,SC_FPRS+32(%r1)
++	std     %f5,SC_FPRS+40(%r1)
++	std     %f6,SC_FPRS+48(%r1)
++	std     %f7,SC_FPRS+56(%r1)
++	std     %f8,SC_FPRS+64(%r1)
++	std     %f9,SC_FPRS+72(%r1)
++	std     %f10,SC_FPRS+80(%r1)
++	std     %f11,SC_FPRS+88(%r1)
++	std     %f12,SC_FPRS+96(%r1)
++	std     %f13,SC_FPRS+104(%r1)
++	std     %f14,SC_FPRS+112(%r1)
++	std     %f15,SC_FPRS+120(%r1)
++
++	/* Set __getcontext return value to 0.  */
++	slr     %r2,%r2
++
++	/* Store access registers.  */
++	stam    %a0,%a15,SC_ACRS(%r1)
++
++	/* Store general purpose registers.  */
++	stm     %r0,%r15,SC_GPRS(%r1)
++
++	/* Return.  */
++	br	%r14
++END(__getcontext)
++
++weak_alias (__getcontext, getcontext)
++
++#if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20)
++/* In glibc release 2.19 a new version of getcontext was introduced,
++   but was reverted before 2.20. Thus both versions are the same function.  */
++weak_alias (__getcontext, __v1__getcontext)
++weak_alias (__getcontext, __v2__getcontext)
++versioned_symbol (libc, __v1__getcontext, getcontext, GLIBC_2_1)
++compat_symbol (libc, __v2__getcontext, getcontext, GLIBC_2_19)
++#endif
+--- a/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist
++++ b/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist
+@@ -1777,7 +1777,6 @@
+ GLIBC_2.19
+  GLIBC_2.19 A
+  __longjmp_chk F
+- __setjmp F
+  __sigsetjmp F
+  _longjmp F
+  _setjmp F
+--- a/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S
++++ b/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S
+@@ -62,16 +62,8 @@
+ 	/* Don't touch %a0, used for thread purposes.  */
+ 	lam	%a1,%a15,SC_ACRS+4(%r1)
+ 
+-	/* Restore the upper halfs if available.  */
+-	l	%r2,SC_FLGS(%r1)
+-	tml	%r2,1   /* UCONTEXT_UC_FLAGS_HIGH_GPRS */
+-	jz	0f
+-	.machine	"z900"
+-	.machinemode	"zarch_nohighgprs"
+-	lmh	%r0,%r15,SC_HIGHGPRS(%r1)
+-
+ 	/* Load general purpose registers.  */
+-0:	lm	%r0,%r15,SC_GPRS(%r1)
++	lm	%r0,%r15,SC_GPRS(%r1)
+ 
+ 	/* Return.  */
+ 	br	%r14
+--- a/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S
++++ b/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S
+@@ -65,31 +65,19 @@
+ 	std     %f14,SC_FPRS+112(%r1)
+ 	std     %f15,SC_FPRS+120(%r1)
+ 
+-	/* Store access registers.  */
+-	stam    %a0,%a15,SC_ACRS(%r1)
+-
+ 	/* Set __swapcontext return value to 0.  */
+ 	slr     %r2,%r2
+ 
++	/* Store access registers.  */
++	stam    %a0,%a15,SC_ACRS(%r1)
++
+ 	/* Store general purpose registers.  */
+ 	stm     %r0,%r15,SC_GPRS(%r1)
+ 
+-	/* Copy uc_flags into the new ucontext_t.  */
++	/* sigprocmask (SIG_SETMASK, &sc->sc_mask, NULL).  */
++	la      %r2,SIG_BLOCK
+ 	lr	%r5,%r0
+-	l	%r2,SC_FLGS(%r5)
+-	st	%r2,SC_FLGS(%r1)
+-
+-	/* Save/restore the upper halfs if necessary.  */
+-	tml	%r2,1   /* UCONTEXT_UC_FLAGS_HIGH_GPRS */
+-	jz	0f
+-	.machine	"z900"
+-	.machinemode	"zarch_nohighgprs"
+-	stmh	%r0,%r15,SC_HIGHGPRS(%r1)
+-	lmh	%r0,%r15,SC_HIGHGPRS(%r5)
+-
+-	/* rt_sigprocmask (SIG_SETMASK, &sc->sc_mask, NULL, sigsetsize).  */
+-0:	la      %r2,SIG_BLOCK
+-	la      %r3,SC_MASK(%r5)
++	la	%r3,SC_MASK(%r5)
+ 	slr	%r4,%r4
+ 	lhi	%r5,_NSIG8
+ 	svc	SYS_ify(rt_sigprocmask)
+--- a/sysdeps/unix/sysv/linux/s390/s390-32/ucontext_i.sym
++++ /dev/null
+@@ -1,26 +0,0 @@
+-#include <stddef.h>
+-#include <signal.h>
+-#include <sys/ucontext.h>
+-
+---
+-
+-SIG_BLOCK
+-SIG_UNBLOCK
+-SIG_SETMASK
+-
+-_NSIG8          (_NSIG / 8)
+-
+-#define ucontext(member)	offsetof (ucontext_t, member)
+-#define mcontext(member)	ucontext (uc_mcontext.member)
+-
+-SC_FLGS		ucontext (uc_flags)
+-SC_LINK		ucontext (uc_link)
+-SC_STCK		ucontext (uc_stack.ss_sp)
+-SC_STSZ		ucontext (uc_stack.ss_size)
+-SC_PSW		mcontext (psw)
+-SC_GPRS		mcontext (gregs)
+-SC_ACRS		mcontext (aregs)
+-SC_FPC		mcontext (fpregs.fpc)
+-SC_FPRS		mcontext (fpregs.fprs)
+-SC_MASK		ucontext (uc_sigmask)
+-SC_HIGHGPRS	ucontext (uc_high_gprs)
+--- 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>
+-#include <libc-symbols.h>
+-#include <shlib-compat.h>
++
++#define __longjmp ____longjmp_chk
+ 
+ #define CHECK_SP(env, guard) \
+   do									\
+@@ -51,23 +51,4 @@
+ 	}								\
+     } while (0)
+ 
+-
+-#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 */
++#include "__longjmp.c"
+--- a/sysdeps/unix/sysv/linux/s390/s390-64/getcontext-common.S
++++ /dev/null
+@@ -1,79 +0,0 @@
+-/* Copyright (C) 2001-2014 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.  */
+-
+-#include <sysdep.h>
+-#include <features.h>
+-
+-#include "ucontext_i.h"
+-
+-/*  __getcontext (const ucontext_t *ucp)
+-
+-  Saves the machine context in UCP such that when it is activated,
+-  it appears as if __getcontext() returned again.
+-
+-  This implementation is intended to be used for *synchronous* context
+-  switches only.  Therefore, it does not have to save anything
+-  other than the PRESERVED state.  */
+-
+-ENTRY(__getcontext)
+-	lgr     %r1,%r2
+-
+-	/* rt_sigprocmask (SIG_BLOCK, NULL, &sc->sc_mask, sigsetsize).  */
+-	la      %r2,SIG_BLOCK
+-	slgr	%r3,%r3
+-	la	%r4,SC_MASK(%r1)
+-	lghi	%r5,_NSIG8
+-	svc	SYS_ify(rt_sigprocmask)
+-
+-	/* Store fpu context.  */
+-	stfpc   SC_FPC(%r1)
+-	std     %f0,SC_FPRS(%r1)
+-	std     %f1,SC_FPRS+8(%r1)
+-	std     %f2,SC_FPRS+16(%r1)
+-	std     %f3,SC_FPRS+24(%r1)
+-	std     %f4,SC_FPRS+32(%r1)
+-	std     %f5,SC_FPRS+40(%r1)
+-	std     %f6,SC_FPRS+48(%r1)
+-	std     %f7,SC_FPRS+56(%r1)
+-	std     %f8,SC_FPRS+64(%r1)
+-	std     %f9,SC_FPRS+72(%r1)
+-	std     %f10,SC_FPRS+80(%r1)
+-	std     %f11,SC_FPRS+88(%r1)
+-	std     %f12,SC_FPRS+96(%r1)
+-	std     %f13,SC_FPRS+104(%r1)
+-	std     %f14,SC_FPRS+112(%r1)
+-	std     %f15,SC_FPRS+120(%r1)
+-
+-	/* Set __getcontext return value to 0.  */
+-	slgr    %r2,%r2
+-
+-	/* Store the version number into the uc_flags field.  So far
+-	   we do not make use of the reserved bytes so we store a zero.  */
+-	stg	%r2,SC_FLGS(%r1)
+-
+-	/* Store access registers.  */
+-	stam    %a0,%a15,SC_ACRS(%r1)
+-
+-	/* Store general purpose registers.  */
+-	stmg    %r0,%r15,SC_GPRS(%r1)
+-
+-	/* Return.  */
+-	br	%r14
+-END(__getcontext)
+-
+-weak_alias (__getcontext, getcontext)
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S
+@@ -0,0 +1,86 @@
++/* Copyright (C) 2001-2014 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++   Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <sysdep.h>
++#include <features.h>
++
++#include "ucontext_i.h"
++
++#include <shlib-compat.h>
++
++/*  __getcontext (const ucontext_t *ucp)
++
++  Saves the machine context in UCP such that when it is activated,
++  it appears as if __getcontext() returned again.
++
++  This implementation is intended to be used for *synchronous* context
++  switches only.  Therefore, it does not have to save anything
++  other than the PRESERVED state.  */
++
++ENTRY(__getcontext)
++	lgr     %r1,%r2
++
++	/* rt_sigprocmask (SIG_BLOCK, NULL, &sc->sc_mask, sigsetsize).  */
++	la      %r2,SIG_BLOCK
++	slgr	%r3,%r3
++	la	%r4,SC_MASK(%r1)
++	lghi	%r5,_NSIG8
++	svc	SYS_ify(rt_sigprocmask)
++
++	/* Store fpu context.  */
++	stfpc   SC_FPC(%r1)
++	std     %f0,SC_FPRS(%r1)
++	std     %f1,SC_FPRS+8(%r1)
++	std     %f2,SC_FPRS+16(%r1)
++	std     %f3,SC_FPRS+24(%r1)
++	std     %f4,SC_FPRS+32(%r1)
++	std     %f5,SC_FPRS+40(%r1)
++	std     %f6,SC_FPRS+48(%r1)
++	std     %f7,SC_FPRS+56(%r1)
++	std     %f8,SC_FPRS+64(%r1)
++	std     %f9,SC_FPRS+72(%r1)
++	std     %f10,SC_FPRS+80(%r1)
++	std     %f11,SC_FPRS+88(%r1)
++	std     %f12,SC_FPRS+96(%r1)
++	std     %f13,SC_FPRS+104(%r1)
++	std     %f14,SC_FPRS+112(%r1)
++	std     %f15,SC_FPRS+120(%r1)
++
++	/* Set __getcontext return value to 0.  */
++	slgr    %r2,%r2
++
++	/* Store access registers.  */
++	stam    %a0,%a15,SC_ACRS(%r1)
++
++	/* Store general purpose registers.  */
++	stmg    %r0,%r15,SC_GPRS(%r1)
++
++	/* Return.  */
++	br	%r14
++END(__getcontext)
++
++weak_alias (__getcontext, getcontext)
++
++#if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_19, GLIBC_2_20)
++/* In glibc release 2.19 a new version of getcontext was introduced,
++   but was reverted before 2.20. Thus both versions are the same function.  */
++weak_alias (__getcontext, __v1__getcontext)
++weak_alias (__getcontext, __v2__getcontext)
++versioned_symbol (libc, __v1__getcontext, getcontext, GLIBC_2_1)
++compat_symbol (libc, __v2__getcontext, getcontext, GLIBC_2_19)
++#endif
+--- a/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist
++++ b/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist
+@@ -98,7 +98,6 @@
+ GLIBC_2.19
+  GLIBC_2.19 A
+  __longjmp_chk F
+- __setjmp F
+  __sigsetjmp F
+  _longjmp F
+  _setjmp F
+--- a/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S
++++ b/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S
+@@ -65,25 +65,21 @@
+ 	std     %f14,SC_FPRS+112(%r1)
+ 	std     %f15,SC_FPRS+120(%r1)
+ 
++	/* Set __swapcontext return value to 0.  */
++	slgr     %r2,%r2
++
+ 	/* Store access registers.  */
+ 	stam    %a0,%a15,SC_ACRS(%r1)
+ 
+-	/* Set __swapcontext return value to 0.  */
+-	slgr	%r2,%r2
+-
+ 	/* Store general purpose registers.  */
+ 	stmg    %r0,%r15,SC_GPRS(%r1)
+ 
+-	/* Copy uc_flags into the new ucontext_t.  */
+-	lgr	%r5,%r0
+-	lg	%r2,SC_FLGS(%r5)
+-	stg	%r2,SC_FLGS(%r1)
+-
+ 	/* rt_sigprocmask (SIG_SETMASK, &sc->sc_mask, NULL, sigsetsize).  */
+ 	la      %r2,SIG_BLOCK
++	lgr	%r5,%r0
+ 	la	%r3,SC_MASK(%r5)
+-	slgr	%r4,%r4
+ 	lghi	%r5,_NSIG8
++	slgr	%r4,%r4
+ 	svc	SYS_ify(rt_sigprocmask)
+ 
+ 	/* Load fpu context.  */
+--- a/sysdeps/unix/sysv/linux/s390/s390-64/ucontext_i.sym
++++ /dev/null
+@@ -1,25 +0,0 @@
+-#include <stddef.h>
+-#include <signal.h>
+-#include <sys/ucontext.h>
+-
+---
+-
+-SIG_BLOCK
+-SIG_UNBLOCK
+-SIG_SETMASK
+-
+-_NSIG8          (_NSIG / 8)
+-
+-#define ucontext(member)	offsetof (ucontext_t, member)
+-#define mcontext(member)	ucontext (uc_mcontext.member)
+-
+-SC_FLGS		ucontext (uc_flags)
+-SC_LINK		ucontext (uc_link)
+-SC_STCK		ucontext (uc_stack.ss_sp)
+-SC_STSZ		ucontext (uc_stack.ss_size)
+-SC_PSW		mcontext (psw)
+-SC_GPRS		mcontext (gregs)
+-SC_ACRS		mcontext (aregs)
+-SC_FPC		mcontext (fpregs.fpc)
+-SC_FPRS		mcontext (fpregs.fprs)
+-SC_MASK		ucontext (uc_sigmask)
+--- a/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
++++ b/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
+@@ -64,15 +64,6 @@
+     fpreg_t fprs[16];
+   } fpregset_t;
+ 
+-/* Bit is set if the uc_high_gprs field contains the upper halfs of
+-   the 64 bit general purpose registers.  Since the uc_high_gprs field
+-   is only available in the 32 bit version of ucontext_t it will never
+-   be set for 64 bit.  */
+-#define UCONTEXT_UC_FLAGS_HIGH_GPRS (1UL << 0)
+-
+-/* A new uc_flags constant will be defined when actually making use of
+-   the reserved space: UCONTEXT_UCFLAGS_RESERVED (1UL << 1).  */
+-
+ /* Context to describe whole processor state.  */
+ typedef struct
+   {
+@@ -90,10 +81,6 @@
+     stack_t uc_stack;
+     mcontext_t uc_mcontext;
+     __sigset_t uc_sigmask;
+-#ifndef __s390x__
+-    unsigned long uc_high_gprs[16];
+-#endif
+-    char __reserved[512];
+   };
+ 
+ 
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/s390/ucontext_i.sym
+@@ -0,0 +1,25 @@
++#include <stddef.h>
++#include <signal.h>
++#include <sys/ucontext.h>
++
++--
++
++SIG_BLOCK
++SIG_UNBLOCK
++SIG_SETMASK
++
++_NSIG8          (_NSIG / 8)
++
++#define ucontext(member)	offsetof (ucontext_t, member)
++#define mcontext(member)	ucontext (uc_mcontext.member)
++
++SC_FLGS		ucontext (uc_flags)
++SC_LINK		ucontext (uc_link)
++SC_STCK		ucontext (uc_stack.ss_sp)
++SC_STSZ		ucontext (uc_stack.ss_size)
++SC_PSW		mcontext (psw)
++SC_GPRS		mcontext (gregs)
++SC_ACRS		mcontext (aregs)
++SC_FPC		mcontext (fpregs.fpc)
++SC_FPRS		mcontext (fpregs.fprs)
++SC_MASK		ucontext (uc_sigmask)
+--- a/sysdeps/unix/sysv/linux/s390/v1-longjmp_chk.c
++++ /dev/null
+@@ -1,35 +0,0 @@
+-/* Copyright (C) 2013 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
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <http://www.gnu.org/licenses/>.
+-
+-   This went into a separate source file since we would otherwise be
+-   needed to include two different versions of setjmp.h into the same
+-   file.  */
+-
+-#include <shlib-compat.h>
+-
+-#if !defined NOT_IN_libc && defined SHARED
+-# if SHLIB_COMPAT (libc, GLIBC_2_11, GLIBC_2_19)
+-
+-#  define __v1__longjmp ____v1__longjmp_chk
+-#  define __v1__libc_siglongjmp __v1__libc_siglongjmp_chk
+-
+-#  include <v1-longjmp.c>
+-
+-compat_symbol (libc, __v1__libc_siglongjmp_chk, __longjmp_chk, GLIBC_2_11);
+-
+-# endif
+-#endif

Modified: glibc-package/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series	2014-08-08 15:34:20 UTC (rev 6219)
+++ glibc-package/trunk/debian/patches/series	2014-08-14 10:49:17 UTC (rev 6220)
@@ -183,6 +183,7 @@
 powerpc/local-powerpc8xx-dcbz.diff
 
 s390/submitted-nexttowardf.diff
+s390/cvs-s390-abi-reversal.diff
 
 sh4/local-fpscr_values.diff
 


Reply to: