forked from pool/glibc
Accepting request 242722 from home:Andreas_Schwab:Factory
- ibm93x-redundant-shift-si.patch: Avoid redundant shift character in iconv output at block boundary (bnc#886416, BZ #17197) - s390-revert-abi-change.patch: revert back to pre-2.19 layout of jmp_buf and ucontext_t on s390 (bnc#887228) OBS-URL: https://build.opensuse.org/request/show/242722 OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=376
This commit is contained in:
parent
cb23041758
commit
d9bb8764aa
@ -1,3 +1,15 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Jul 28 10:18:46 UTC 2014 - schwab@suse.de
|
||||
|
||||
- ibm93x-redundant-shift-si.patch: Avoid redundant shift character in
|
||||
iconv output at block boundary (bnc#886416, BZ #17197)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jul 24 15:35:50 UTC 2014 - schwab@suse.de
|
||||
|
||||
- s390-revert-abi-change.patch: revert back to pre-2.19 layout of jmp_buf
|
||||
and ucontext_t on s390 (bnc#887228)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jul 22 08:37:38 UTC 2014 - schwab@suse.de
|
||||
|
||||
|
@ -205,6 +205,8 @@ Patch15: glibc-2.3.90-langpackdir.diff
|
||||
Patch18: glibc-cpusetsize.diff
|
||||
# PATCH-FEATURE-SLE Use nscd user for nscd
|
||||
Patch19: nscd-server-user.patch
|
||||
# PATCH-FIX-OPENSUSE Revert "S/390: Make jmp_buf extendible" and "S/390: Make ucontext_t extendible" (bnc#887228)
|
||||
Patch20: s390-revert-abi-change.patch
|
||||
|
||||
### Locale related patches
|
||||
# PATCH-FIX-OPENSUSE Add additional locales
|
||||
@ -282,6 +284,8 @@ Patch2003: abort-no-flush.patch
|
||||
Patch2004: pthread-mutex-trylock-elision.patch
|
||||
# PATCH-FIX-UPSTREAM Speedup memset on x86-64 for large block sizes (BZ #16830)
|
||||
Patch2005: glibc-memset-nontemporal.diff
|
||||
# PATCH-FIX-UPSTREAM Avoid redundant shift character in iconv output at block boundary (BZ #17197)
|
||||
Patch2006: ibm93x-redundant-shift-si.patch
|
||||
|
||||
# Non-glibc patches
|
||||
# PATCH-FIX-OPENSUSE Remove debianisms from manpages
|
||||
@ -471,6 +475,7 @@ rm nscd/s-stamp
|
||||
%patch15 -p1
|
||||
%patch18 -p1
|
||||
%patch19 -p1
|
||||
%patch20 -p1
|
||||
|
||||
%patch100 -p1
|
||||
%patch102 -p1
|
||||
@ -506,6 +511,7 @@ rm nscd/s-stamp
|
||||
%patch2003 -p1
|
||||
%patch2004 -p1
|
||||
%patch2005 -p1
|
||||
%patch2006 -p1
|
||||
|
||||
%patch3000
|
||||
|
||||
|
@ -1,3 +1,15 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Jul 28 10:18:46 UTC 2014 - schwab@suse.de
|
||||
|
||||
- ibm93x-redundant-shift-si.patch: Avoid redundant shift character in
|
||||
iconv output at block boundary (bnc#886416, BZ #17197)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jul 24 15:35:50 UTC 2014 - schwab@suse.de
|
||||
|
||||
- s390-revert-abi-change.patch: revert back to pre-2.19 layout of jmp_buf
|
||||
and ucontext_t on s390 (bnc#887228)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jul 22 08:37:38 UTC 2014 - schwab@suse.de
|
||||
|
||||
|
@ -204,6 +204,8 @@ Patch15: glibc-2.3.90-langpackdir.diff
|
||||
Patch18: glibc-cpusetsize.diff
|
||||
# PATCH-FEATURE-SLE Use nscd user for nscd
|
||||
Patch19: nscd-server-user.patch
|
||||
# PATCH-FIX-OPENSUSE Revert "S/390: Make jmp_buf extendible" and "S/390: Make ucontext_t extendible" (bnc#887228)
|
||||
Patch20: s390-revert-abi-change.patch
|
||||
|
||||
### Locale related patches
|
||||
# PATCH-FIX-OPENSUSE Add additional locales
|
||||
@ -281,6 +283,8 @@ Patch2003: abort-no-flush.patch
|
||||
Patch2004: pthread-mutex-trylock-elision.patch
|
||||
# PATCH-FIX-UPSTREAM Speedup memset on x86-64 for large block sizes (BZ #16830)
|
||||
Patch2005: glibc-memset-nontemporal.diff
|
||||
# PATCH-FIX-UPSTREAM Avoid redundant shift character in iconv output at block boundary (BZ #17197)
|
||||
Patch2006: ibm93x-redundant-shift-si.patch
|
||||
|
||||
# Non-glibc patches
|
||||
# PATCH-FIX-OPENSUSE Remove debianisms from manpages
|
||||
@ -471,6 +475,7 @@ rm nscd/s-stamp
|
||||
%patch15 -p1
|
||||
%patch18 -p1
|
||||
%patch19 -p1
|
||||
%patch20 -p1
|
||||
|
||||
%patch100 -p1
|
||||
%patch102 -p1
|
||||
@ -506,6 +511,7 @@ rm nscd/s-stamp
|
||||
%patch2003 -p1
|
||||
%patch2004 -p1
|
||||
%patch2005 -p1
|
||||
%patch2006 -p1
|
||||
|
||||
%patch3000
|
||||
|
||||
|
@ -1,3 +1,15 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Jul 28 10:18:46 UTC 2014 - schwab@suse.de
|
||||
|
||||
- ibm93x-redundant-shift-si.patch: Avoid redundant shift character in
|
||||
iconv output at block boundary (bnc#886416, BZ #17197)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jul 24 15:35:50 UTC 2014 - schwab@suse.de
|
||||
|
||||
- s390-revert-abi-change.patch: revert back to pre-2.19 layout of jmp_buf
|
||||
and ucontext_t on s390 (bnc#887228)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jul 22 08:37:38 UTC 2014 - schwab@suse.de
|
||||
|
||||
|
@ -205,6 +205,8 @@ Patch15: glibc-2.3.90-langpackdir.diff
|
||||
Patch18: glibc-cpusetsize.diff
|
||||
# PATCH-FEATURE-SLE Use nscd user for nscd
|
||||
Patch19: nscd-server-user.patch
|
||||
# PATCH-FIX-OPENSUSE Revert "S/390: Make jmp_buf extendible" and "S/390: Make ucontext_t extendible" (bnc#887228)
|
||||
Patch20: s390-revert-abi-change.patch
|
||||
|
||||
### Locale related patches
|
||||
# PATCH-FIX-OPENSUSE Add additional locales
|
||||
@ -282,6 +284,8 @@ Patch2003: abort-no-flush.patch
|
||||
Patch2004: pthread-mutex-trylock-elision.patch
|
||||
# PATCH-FIX-UPSTREAM Speedup memset on x86-64 for large block sizes (BZ #16830)
|
||||
Patch2005: glibc-memset-nontemporal.diff
|
||||
# PATCH-FIX-UPSTREAM Avoid redundant shift character in iconv output at block boundary (BZ #17197)
|
||||
Patch2006: ibm93x-redundant-shift-si.patch
|
||||
|
||||
# Non-glibc patches
|
||||
# PATCH-FIX-OPENSUSE Remove debianisms from manpages
|
||||
@ -471,6 +475,7 @@ rm nscd/s-stamp
|
||||
%patch15 -p1
|
||||
%patch18 -p1
|
||||
%patch19 -p1
|
||||
%patch20 -p1
|
||||
|
||||
%patch100 -p1
|
||||
%patch102 -p1
|
||||
@ -506,6 +511,7 @@ rm nscd/s-stamp
|
||||
%patch2003 -p1
|
||||
%patch2004 -p1
|
||||
%patch2005 -p1
|
||||
%patch2006 -p1
|
||||
|
||||
%patch3000
|
||||
|
||||
|
201
ibm93x-redundant-shift-si.patch
Normal file
201
ibm93x-redundant-shift-si.patch
Normal file
@ -0,0 +1,201 @@
|
||||
Avoid redundant shift character in iconv output at block boundary (bug #17197)
|
||||
|
||||
[BZ #17197]
|
||||
* iconvdata/ibm930.c (BODY for TO_LOOP): Record current DBCS state
|
||||
immediately after emitting SI.
|
||||
* iconvdata/ibm933.c (BODY for TO_LOOP): Likewise.
|
||||
* iconvdata/ibm935.c (BODY for TO_LOOP): Likewise.
|
||||
* iconvdata/ibm937.c (BODY for TO_LOOP): Likewise.
|
||||
* iconvdata/ibm939.c (BODY for TO_LOOP): Likewise.
|
||||
* iconvdata/bug-iconv10.c: New file.
|
||||
* iconvdata/Makefile (tests): Add bug-iconv10.
|
||||
($(objpfx)bug-iconv10.out): New rule.
|
||||
|
||||
Index: glibc-2.19/iconvdata/Makefile
|
||||
===================================================================
|
||||
--- glibc-2.19.orig/iconvdata/Makefile
|
||||
+++ glibc-2.19/iconvdata/Makefile
|
||||
@@ -67,7 +67,8 @@ include ../Makeconfig
|
||||
|
||||
ifeq (yes,$(build-shared))
|
||||
tests = bug-iconv1 bug-iconv2 tst-loading tst-e2big tst-iconv4 bug-iconv4 \
|
||||
- tst-iconv6 bug-iconv5 bug-iconv6 tst-iconv7 bug-iconv8 bug-iconv9
|
||||
+ tst-iconv6 bug-iconv5 bug-iconv6 tst-iconv7 bug-iconv8 bug-iconv9 \
|
||||
+ bug-iconv10
|
||||
ifeq ($(have-thread-library),yes)
|
||||
tests += bug-iconv3
|
||||
endif
|
||||
@@ -295,6 +296,8 @@ $(objpfx)tst-iconv4.out: $(objpfx)gconv-
|
||||
$(addprefix $(objpfx),$(modules.so))
|
||||
$(objpfx)tst-iconv7.out: $(objpfx)gconv-modules \
|
||||
$(addprefix $(objpfx),$(modules.so))
|
||||
+$(objpfx)bug-iconv10.out: $(objpfx)gconv-modules \
|
||||
+ $(addprefix $(objpfx),$(modules.so))
|
||||
|
||||
$(objpfx)iconv-test.out: run-iconv-test.sh $(objpfx)gconv-modules \
|
||||
$(addprefix $(objpfx),$(modules.so)) \
|
||||
Index: glibc-2.19/iconvdata/bug-iconv10.c
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ glibc-2.19/iconvdata/bug-iconv10.c
|
||||
@@ -0,0 +1,60 @@
|
||||
+/* bug 17197: check for redundant shift character at block boundary. */
|
||||
+#include <iconv.h>
|
||||
+#include <locale.h>
|
||||
+#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
+#include <errno.h>
|
||||
+
|
||||
+static int
|
||||
+do_test (void)
|
||||
+{
|
||||
+ iconv_t cd = iconv_open ("IBM930", "UTF-8");
|
||||
+ if (cd == (iconv_t) -1)
|
||||
+ {
|
||||
+ puts ("iconv_open failed");
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ char instr1[] = "\xc2\xa6.";
|
||||
+ const char expstr1[4] = "\016Bj\017";
|
||||
+ const char expstr2[] = "K";
|
||||
+ char outstr[4];
|
||||
+ size_t inlen = sizeof (instr1);
|
||||
+ size_t outlen = sizeof (outstr);
|
||||
+ char *inptr = instr1;
|
||||
+ char *outptr = outstr;
|
||||
+ size_t r = iconv (cd, &inptr, &inlen, &outptr, &outlen);
|
||||
+ if (r != -1
|
||||
+ || errno != E2BIG
|
||||
+ || inlen != sizeof (instr1) - 2
|
||||
+ || inptr != instr1 + 2
|
||||
+ || outlen != 0
|
||||
+ || memcmp (outstr, expstr1, sizeof (expstr1)) != 0)
|
||||
+ {
|
||||
+ puts ("wrong first conversion");
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ outlen = sizeof (outstr);
|
||||
+ outptr = outstr;
|
||||
+ r = iconv (cd, &inptr, &inlen, &outptr, &outlen);
|
||||
+ if (r != 0
|
||||
+ || inlen != 0
|
||||
+ || outlen != sizeof (outstr) - sizeof (expstr2)
|
||||
+ || memcmp (outstr, expstr2, sizeof (expstr2)) != 0)
|
||||
+ {
|
||||
+ puts ("wrong second conversion");
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ if (iconv_close (cd) != 0)
|
||||
+ {
|
||||
+ puts ("iconv_close failed");
|
||||
+ return 1;
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+#define TEST_FUNCTION do_test ()
|
||||
+#include "../test-skeleton.c"
|
||||
Index: glibc-2.19/iconvdata/ibm930.c
|
||||
===================================================================
|
||||
--- glibc-2.19.orig/iconvdata/ibm930.c
|
||||
+++ glibc-2.19/iconvdata/ibm930.c
|
||||
@@ -255,6 +255,7 @@ enum
|
||||
break; \
|
||||
} \
|
||||
*outptr++ = SI; \
|
||||
+ curcs = sb; \
|
||||
} \
|
||||
\
|
||||
if (__builtin_expect (outptr + 1 > outend, 0)) \
|
||||
@@ -268,7 +269,6 @@ enum
|
||||
*outptr++ = 0x5b; \
|
||||
else \
|
||||
*outptr++ = cp[0]; \
|
||||
- curcs = sb; \
|
||||
} \
|
||||
\
|
||||
/* Now that we wrote the output increment the input pointer. */ \
|
||||
Index: glibc-2.19/iconvdata/ibm933.c
|
||||
===================================================================
|
||||
--- glibc-2.19.orig/iconvdata/ibm933.c
|
||||
+++ glibc-2.19/iconvdata/ibm933.c
|
||||
@@ -254,6 +254,7 @@ enum
|
||||
break; \
|
||||
} \
|
||||
*outptr++ = SI; \
|
||||
+ curcs = sb; \
|
||||
} \
|
||||
\
|
||||
if (__builtin_expect (outptr + 1 > outend, 0)) \
|
||||
@@ -262,7 +263,6 @@ enum
|
||||
break; \
|
||||
} \
|
||||
*outptr++ = cp[0]; \
|
||||
- curcs = sb; \
|
||||
} \
|
||||
\
|
||||
/* Now that we wrote the output increment the input pointer. */ \
|
||||
Index: glibc-2.19/iconvdata/ibm935.c
|
||||
===================================================================
|
||||
--- glibc-2.19.orig/iconvdata/ibm935.c
|
||||
+++ glibc-2.19/iconvdata/ibm935.c
|
||||
@@ -254,6 +254,7 @@ enum
|
||||
break; \
|
||||
} \
|
||||
*outptr++ = SI; \
|
||||
+ curcs = sb; \
|
||||
} \
|
||||
\
|
||||
if (__builtin_expect (outptr + 1 > outend, 0)) \
|
||||
@@ -262,7 +263,6 @@ enum
|
||||
break; \
|
||||
} \
|
||||
*outptr++ = cp[0]; \
|
||||
- curcs = sb; \
|
||||
} \
|
||||
\
|
||||
/* Now that we wrote the output increment the input pointer. */ \
|
||||
Index: glibc-2.19/iconvdata/ibm937.c
|
||||
===================================================================
|
||||
--- glibc-2.19.orig/iconvdata/ibm937.c
|
||||
+++ glibc-2.19/iconvdata/ibm937.c
|
||||
@@ -254,6 +254,7 @@ enum
|
||||
break; \
|
||||
} \
|
||||
*outptr++ = SI; \
|
||||
+ curcs = sb; \
|
||||
} \
|
||||
\
|
||||
if (__builtin_expect (outptr + 1 > outend, 0)) \
|
||||
@@ -262,7 +263,6 @@ enum
|
||||
break; \
|
||||
} \
|
||||
*outptr++ = cp[0]; \
|
||||
- curcs = sb; \
|
||||
} \
|
||||
\
|
||||
/* Now that we wrote the output increment the input pointer. */ \
|
||||
Index: glibc-2.19/iconvdata/ibm939.c
|
||||
===================================================================
|
||||
--- glibc-2.19.orig/iconvdata/ibm939.c
|
||||
+++ glibc-2.19/iconvdata/ibm939.c
|
||||
@@ -254,6 +254,7 @@ enum
|
||||
break; \
|
||||
} \
|
||||
*outptr++ = SI; \
|
||||
+ curcs = sb; \
|
||||
} \
|
||||
\
|
||||
if (__builtin_expect (outptr + 1 > outend, 0)) \
|
||||
@@ -267,7 +268,6 @@ enum
|
||||
*outptr++ = 0xb2; \
|
||||
else \
|
||||
*outptr++ = cp[0]; \
|
||||
- curcs = sb; \
|
||||
} \
|
||||
\
|
||||
/* Now that we wrote the output increment the input pointer. */ \
|
897
s390-revert-abi-change.patch
Normal file
897
s390-revert-abi-change.patch
Normal file
@ -0,0 +1,897 @@
|
||||
From a779f6e6d899cd601afc19ce19415659bbf646c9 Mon Sep 17 00:00:00 2001
|
||||
From: Andreas Schwab <schwab@suse.de>
|
||||
Date: Thu, 24 Jul 2014 11:30:20 +0200
|
||||
Subject: [PATCH] Revert "S/390: Make jmp_buf extendible" and "S/390: Make
|
||||
ucontext_t extendible"
|
||||
|
||||
---
|
||||
nptl/sysdeps/unix/sysv/linux/s390/pt-longjmp.c | 30 ++----
|
||||
sysdeps/s390/Makefile | 9 --
|
||||
sysdeps/s390/Versions | 4 -
|
||||
sysdeps/s390/__longjmp.c | 10 --
|
||||
sysdeps/s390/bits/setjmp.h | 4 -
|
||||
sysdeps/s390/longjmp.c | 38 +++----
|
||||
sysdeps/s390/s390-32/__longjmp-common.c | 2 +-
|
||||
sysdeps/s390/s390-32/setjmp-common.S | 4 -
|
||||
sysdeps/s390/s390-64/__longjmp-common.c | 2 +-
|
||||
sysdeps/s390/s390-64/setjmp-common.S | 4 -
|
||||
sysdeps/s390/setjmp.S | 20 +---
|
||||
sysdeps/s390/sigjmp.c | 2 +-
|
||||
sysdeps/s390/v1-longjmp.c | 57 -----------
|
||||
sysdeps/s390/v1-setjmp.h | 111 ---------------------
|
||||
sysdeps/s390/v1-sigjmp.c | 44 --------
|
||||
sysdeps/unix/sysv/linux/s390/Makefile | 6 --
|
||||
sysdeps/unix/sysv/linux/s390/getcontext.S | 6 +-
|
||||
sysdeps/unix/sysv/linux/s390/longjmp_chk.c | 19 ++--
|
||||
.../unix/sysv/linux/s390/s390-32/____longjmp_chk.c | 16 ---
|
||||
.../sysv/linux/s390/s390-32/getcontext-common.S | 37 -------
|
||||
sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S | 10 +-
|
||||
sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S | 13 +--
|
||||
.../unix/sysv/linux/s390/s390-32/ucontext_i.sym | 1 -
|
||||
.../unix/sysv/linux/s390/s390-64/____longjmp_chk.c | 17 ----
|
||||
.../sysv/linux/s390/s390-64/getcontext-common.S | 4 -
|
||||
sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S | 3 -
|
||||
sysdeps/unix/sysv/linux/s390/sys/ucontext.h | 13 ---
|
||||
sysdeps/unix/sysv/linux/s390/v1-longjmp_chk.c | 35 -------
|
||||
28 files changed, 46 insertions(+), 475 deletions(-)
|
||||
delete mode 100644 sysdeps/s390/Makefile
|
||||
delete mode 100644 sysdeps/s390/v1-longjmp.c
|
||||
delete mode 100644 sysdeps/s390/v1-setjmp.h
|
||||
delete mode 100644 sysdeps/s390/v1-sigjmp.c
|
||||
delete mode 100644 sysdeps/unix/sysv/linux/s390/v1-longjmp_chk.c
|
||||
|
||||
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/pt-longjmp.c b/nptl/sysdeps/unix/sysv/linux/s390/pt-longjmp.c
|
||||
index 801432c..6622752 100644
|
||||
--- a/nptl/sysdeps/unix/sysv/linux/s390/pt-longjmp.c
|
||||
+++ b/nptl/sysdeps/unix/sysv/linux/s390/pt-longjmp.c
|
||||
@@ -23,29 +23,6 @@
|
||||
#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)
|
||||
@@ -61,3 +38,10 @@ __v2_siglongjmp (jmp_buf env, int 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_0, GLIBC_2_19)
|
||||
+strong_alias (__v2_longjmp, __v1_longjmp);
|
||||
+strong_alias (__v2_siglongjmp, __v1_siglongjmp);
|
||||
+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)) */
|
||||
diff --git a/sysdeps/s390/Makefile b/sysdeps/s390/Makefile
|
||||
deleted file mode 100644
|
||||
index 42978dc..0000000
|
||||
--- 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
|
||||
diff --git a/sysdeps/s390/Versions b/sysdeps/s390/Versions
|
||||
index 156abc7..e3cdaa4 100644
|
||||
--- a/sysdeps/s390/Versions
|
||||
+++ b/sysdeps/s390/Versions
|
||||
@@ -3,10 +3,6 @@ libc {
|
||||
setjmp; _setjmp; __setjmp; __sigsetjmp;
|
||||
longjmp; _longjmp; siglongjmp;
|
||||
}
|
||||
- GLIBC_PRIVATE {
|
||||
- __v1__libc_longjmp; __v1__libc_siglongjmp;
|
||||
- __v2__libc_longjmp; __v2__libc_siglongjmp;
|
||||
- }
|
||||
}
|
||||
|
||||
ld {
|
||||
diff --git a/sysdeps/s390/__longjmp.c b/sysdeps/s390/__longjmp.c
|
||||
index e4acd31..fd14abb 100644
|
||||
--- a/sysdeps/s390/__longjmp.c
|
||||
+++ b/sysdeps/s390/__longjmp.c
|
||||
@@ -18,14 +18,4 @@
|
||||
#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) */
|
||||
diff --git a/sysdeps/s390/bits/setjmp.h b/sysdeps/s390/bits/setjmp.h
|
||||
index 25eaf10..0071a9d 100644
|
||||
--- a/sysdeps/s390/bits/setjmp.h
|
||||
+++ b/sysdeps/s390/bits/setjmp.h
|
||||
@@ -40,10 +40,6 @@ typedef struct __s390_jmp_buf
|
||||
/* 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
|
||||
diff --git a/sysdeps/s390/longjmp.c b/sysdeps/s390/longjmp.c
|
||||
index c758d14..dda9ae6 100644
|
||||
--- a/sysdeps/s390/longjmp.c
|
||||
+++ b/sysdeps/s390/longjmp.c
|
||||
@@ -23,17 +23,11 @@
|
||||
#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)
|
||||
+__libc_siglongjmp (sigjmp_buf env, int val)
|
||||
{
|
||||
/* Perform any cleanups needed by the frames being unwound. */
|
||||
_longjmp_unwind (env, val);
|
||||
@@ -44,21 +38,27 @@ __v2__libc_siglongjmp (sigjmp_buf env, int val)
|
||||
(sigset_t *) NULL);
|
||||
|
||||
/* Call the machine-dependent function to restore machine state. */
|
||||
- __v2__longjmp (env[0].__jmpbuf, val ?: 1);
|
||||
+ __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);
|
||||
+#ifndef __longjmp
|
||||
+strong_alias (__libc_siglongjmp, __libc_longjmp)
|
||||
+libc_hidden_def (__libc_longjmp)
|
||||
+weak_alias (__libc_siglongjmp, __v2_longjmp)
|
||||
+weak_alias (__libc_siglongjmp, __v2longjmp)
|
||||
+weak_alias (__libc_siglongjmp, __v2siglongjmp)
|
||||
|
||||
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 */
|
||||
+
|
||||
+# if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_19)
|
||||
+weak_alias (__libc_siglongjmp, __v1_longjmp)
|
||||
+weak_alias (__libc_siglongjmp, __v1longjmp)
|
||||
+weak_alias (__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 /* SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_19) */
|
||||
+#endif /* ifndef __longjmp */
|
||||
diff --git a/sysdeps/s390/s390-32/__longjmp-common.c b/sysdeps/s390/s390-32/__longjmp-common.c
|
||||
index f78ef65..5d46e21 100644
|
||||
--- a/sysdeps/s390/s390-32/__longjmp-common.c
|
||||
+++ b/sysdeps/s390/s390-32/__longjmp-common.c
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
/* Jump to the position specified by ENV, causing the
|
||||
setjmp call there to return VAL, or 1 if VAL is 0. */
|
||||
-attribute_hidden void
|
||||
+void
|
||||
__longjmp (__jmp_buf env, int val)
|
||||
{
|
||||
#ifdef PTR_DEMANGLE
|
||||
diff --git a/sysdeps/s390/s390-32/setjmp-common.S b/sysdeps/s390/s390-32/setjmp-common.S
|
||||
index d7bb720..cee8181 100644
|
||||
--- a/sysdeps/s390/s390-32/setjmp-common.S
|
||||
+++ b/sysdeps/s390/s390-32/setjmp-common.S
|
||||
@@ -55,10 +55,6 @@ ENTRY(__sigsetjmp)
|
||||
#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
|
||||
diff --git a/sysdeps/s390/s390-64/__longjmp-common.c b/sysdeps/s390/s390-64/__longjmp-common.c
|
||||
index 46cabb6..168ebf5 100644
|
||||
--- a/sysdeps/s390/s390-64/__longjmp-common.c
|
||||
+++ b/sysdeps/s390/s390-64/__longjmp-common.c
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
/* Jump to the position specified by ENV, causing the
|
||||
setjmp call there to return VAL, or 1 if VAL is 0. */
|
||||
-attribute_hidden void
|
||||
+void
|
||||
__longjmp (__jmp_buf env, int val)
|
||||
{
|
||||
#ifdef PTR_DEMANGLE
|
||||
diff --git a/sysdeps/s390/s390-64/setjmp-common.S b/sysdeps/s390/s390-64/setjmp-common.S
|
||||
index 9cdcae4..7b9dc42 100644
|
||||
--- a/sysdeps/s390/s390-64/setjmp-common.S
|
||||
+++ b/sysdeps/s390/s390-64/setjmp-common.S
|
||||
@@ -55,10 +55,6 @@ ENTRY(__sigsetjmp)
|
||||
#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)
|
||||
diff --git a/sysdeps/s390/setjmp.S b/sysdeps/s390/setjmp.S
|
||||
index 2ec621a..3e50e89 100644
|
||||
--- a/sysdeps/s390/setjmp.S
|
||||
+++ b/sysdeps/s390/setjmp.S
|
||||
@@ -27,7 +27,6 @@ versioned_symbol (libc, __v2__sigsetjmp, __sigsetjmp, GLIBC_2_19)
|
||||
#define _setjmp __v2_setjmp
|
||||
#define __setjmp __v2__setjmp
|
||||
#define __sigsetjmp __v2__sigsetjmp
|
||||
-#define __sigjmp_save __v2__sigjmp_save
|
||||
|
||||
#include "setjmp-common.S"
|
||||
|
||||
@@ -35,7 +34,6 @@ versioned_symbol (libc, __v2__sigsetjmp, __sigsetjmp, GLIBC_2_19)
|
||||
#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)
|
||||
@@ -46,19 +44,9 @@ 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
|
||||
+strong_alias (__v2setjmp, __v1setjmp)
|
||||
+strong_alias (__v2_setjmp, __v1_setjmp)
|
||||
+strong_alias (__v2__setjmp, __v1__setjmp)
|
||||
+strong_alias (__v2__sigsetjmp, __v1__sigsetjmp)
|
||||
|
||||
#endif /* if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_19) */
|
||||
diff --git a/sysdeps/s390/sigjmp.c b/sysdeps/s390/sigjmp.c
|
||||
index f7b5a6f..73dd356 100644
|
||||
--- a/sysdeps/s390/sigjmp.c
|
||||
+++ b/sysdeps/s390/sigjmp.c
|
||||
@@ -24,7 +24,7 @@
|
||||
Always return zero. */
|
||||
|
||||
int
|
||||
-__v2__sigjmp_save (sigjmp_buf env, int savemask)
|
||||
+__sigjmp_save (sigjmp_buf env, int savemask)
|
||||
{
|
||||
env[0].__mask_was_saved = (savemask &&
|
||||
__sigprocmask (SIG_BLOCK, (sigset_t *) NULL,
|
||||
diff --git a/sysdeps/s390/v1-longjmp.c b/sysdeps/s390/v1-longjmp.c
|
||||
deleted file mode 100644
|
||||
index 82252c9..0000000
|
||||
--- 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 */
|
||||
diff --git a/sysdeps/s390/v1-setjmp.h b/sysdeps/s390/v1-setjmp.h
|
||||
deleted file mode 100644
|
||||
index a4a6b76..0000000
|
||||
--- 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 */
|
||||
diff --git a/sysdeps/s390/v1-sigjmp.c b/sysdeps/s390/v1-sigjmp.c
|
||||
deleted file mode 100644
|
||||
index b624d16..0000000
|
||||
--- 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 */
|
||||
diff --git a/sysdeps/unix/sysv/linux/s390/Makefile b/sysdeps/unix/sysv/linux/s390/Makefile
|
||||
index f91179d..45b1922 100644
|
||||
--- a/sysdeps/unix/sysv/linux/s390/Makefile
|
||||
+++ b/sysdeps/unix/sysv/linux/s390/Makefile
|
||||
@@ -16,9 +16,3 @@ endif
|
||||
ifeq ($(subdir),elf)
|
||||
sysdep_routines += dl-vdso
|
||||
endif
|
||||
-
|
||||
-ifeq ($(subdir),debug)
|
||||
-ifeq (yes,$(build-shared))
|
||||
-sysdep_routines += v1-longjmp_chk
|
||||
-endif
|
||||
-endif
|
||||
diff --git a/sysdeps/unix/sysv/linux/s390/getcontext.S b/sysdeps/unix/sysv/linux/s390/getcontext.S
|
||||
index 5edbf95..4b2c2c6 100644
|
||||
--- a/sysdeps/unix/sysv/linux/s390/getcontext.S
|
||||
+++ b/sysdeps/unix/sysv/linux/s390/getcontext.S
|
||||
@@ -29,10 +29,6 @@ versioned_symbol (libc, __v2getcontext, getcontext, GLIBC_2_19)
|
||||
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
|
||||
-
|
||||
+strong_alias (__v2getcontext, __v1getcontext)
|
||||
#endif
|
||||
diff --git a/sysdeps/unix/sysv/linux/s390/longjmp_chk.c b/sysdeps/unix/sysv/linux/s390/longjmp_chk.c
|
||||
index 10f542d..84c28b7 100644
|
||||
--- a/sysdeps/unix/sysv/linux/s390/longjmp_chk.c
|
||||
+++ b/sysdeps/unix/sysv/linux/s390/longjmp_chk.c
|
||||
@@ -21,24 +21,25 @@
|
||||
#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)
|
||||
- __attribute__ ((__noreturn__));
|
||||
-
|
||||
#if defined NOT_IN_libc
|
||||
|
||||
-# define __v2__longjmp ____longjmp_chk
|
||||
-# define __v2__libc_siglongjmp __longjmp_chk
|
||||
+# define __longjmp ____longjmp_chk
|
||||
+# define __libc_siglongjmp __longjmp_chk
|
||||
|
||||
# include <longjmp.c>
|
||||
|
||||
#else
|
||||
|
||||
-# define __v2__longjmp ____v2__longjmp_chk
|
||||
-# define __v2__libc_siglongjmp __v2__libc_siglongjmp_chk
|
||||
+# define __longjmp ____longjmp_chk
|
||||
+# define __libc_siglongjmp __libc_siglongjmp_chk
|
||||
|
||||
# include <longjmp.c>
|
||||
|
||||
-versioned_symbol (libc, __v2__libc_siglongjmp_chk, __longjmp_chk, GLIBC_2_19);
|
||||
+versioned_symbol (libc, __libc_siglongjmp_chk, __longjmp_chk, GLIBC_2_19);
|
||||
+
|
||||
+# if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_11, GLIBC_2_19)
|
||||
+strong_alias (__libc_siglongjmp_chk, __v1__libc_siglongjmp_chk);
|
||||
+compat_symbol (libc, __v1__libc_siglongjmp_chk, __longjmp_chk, GLIBC_2_11);
|
||||
+# endif
|
||||
|
||||
#endif
|
||||
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c b/sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c
|
||||
index a1b7a6a..3cf4e35 100644
|
||||
--- a/sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c
|
||||
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/____longjmp_chk.c
|
||||
@@ -52,21 +52,5 @@
|
||||
} 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 */
|
||||
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/getcontext-common.S b/sysdeps/unix/sysv/linux/s390/s390-32/getcontext-common.S
|
||||
index 4992030..42fc376 100644
|
||||
--- a/sysdeps/unix/sysv/linux/s390/s390-32/getcontext-common.S
|
||||
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/getcontext-common.S
|
||||
@@ -19,7 +19,6 @@
|
||||
#include <sysdep.h>
|
||||
#include <features.h>
|
||||
|
||||
-#include "rtld-global-offsets.h"
|
||||
#include "ucontext_i.h"
|
||||
|
||||
/* __getcontext (const ucontext_t *ucp)
|
||||
@@ -60,42 +59,6 @@ ENTRY(__getcontext)
|
||||
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
|
||||
|
||||
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S b/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S
|
||||
index fbe8b77..42839e2 100644
|
||||
--- a/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S
|
||||
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S
|
||||
@@ -62,16 +62,8 @@ ENTRY(__setcontext)
|
||||
/* 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
|
||||
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S b/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S
|
||||
index 41ede4b..5c1d7ac 100644
|
||||
--- a/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S
|
||||
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S
|
||||
@@ -74,21 +74,10 @@ ENTRY(__swapcontext)
|
||||
/* Store general purpose registers. */
|
||||
stm %r0,%r15,SC_GPRS(%r1)
|
||||
|
||||
- /* Copy uc_flags into the new ucontext_t. */
|
||||
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 %r2,SIG_BLOCK
|
||||
la %r3,SC_MASK(%r5)
|
||||
slr %r4,%r4
|
||||
lhi %r5,_NSIG8
|
||||
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/ucontext_i.sym b/sysdeps/unix/sysv/linux/s390/s390-32/ucontext_i.sym
|
||||
index 705c7ab..6cc9f19 100644
|
||||
--- a/sysdeps/unix/sysv/linux/s390/s390-32/ucontext_i.sym
|
||||
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/ucontext_i.sym
|
||||
@@ -23,4 +23,3 @@ 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)
|
||||
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 bc27b08..a8c2b8d 100644
|
||||
--- a/sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c
|
||||
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c
|
||||
@@ -52,22 +52,5 @@
|
||||
} 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 */
|
||||
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/getcontext-common.S b/sysdeps/unix/sysv/linux/s390/s390-64/getcontext-common.S
|
||||
index 3e61e30..3538ee7 100644
|
||||
--- a/sysdeps/unix/sysv/linux/s390/s390-64/getcontext-common.S
|
||||
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/getcontext-common.S
|
||||
@@ -62,10 +62,6 @@ ENTRY(__getcontext)
|
||||
/* 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)
|
||||
|
||||
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S b/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S
|
||||
index ac74b6b..eda5d33 100644
|
||||
--- a/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S
|
||||
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S
|
||||
@@ -74,10 +74,7 @@ ENTRY(__swapcontext)
|
||||
/* 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
|
||||
diff --git a/sysdeps/unix/sysv/linux/s390/sys/ucontext.h b/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
|
||||
index f04bf84..d528cb1 100644
|
||||
--- a/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
|
||||
+++ b/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
|
||||
@@ -64,15 +64,6 @@ typedef struct
|
||||
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 @@ struct ucontext
|
||||
stack_t uc_stack;
|
||||
mcontext_t uc_mcontext;
|
||||
__sigset_t uc_sigmask;
|
||||
-#ifndef __s390x__
|
||||
- unsigned long uc_high_gprs[16];
|
||||
-#endif
|
||||
- char __reserved[512];
|
||||
};
|
||||
|
||||
|
||||
diff --git a/sysdeps/unix/sysv/linux/s390/v1-longjmp_chk.c b/sysdeps/unix/sysv/linux/s390/v1-longjmp_chk.c
|
||||
deleted file mode 100644
|
||||
index bd80acf..0000000
|
||||
--- 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
|
||||
--
|
||||
2.0.2
|
||||
|
Loading…
Reference in New Issue
Block a user