This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch release/2.25/master updated. glibc-2.25-31-g5b3f978
- From: danglin at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 9 Aug 2017 01:33:03 -0000
- Subject: GNU C Library master sources branch release/2.25/master updated. glibc-2.25-31-g5b3f978
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, release/2.25/master has been updated
via 5b3f978ccf92e3c5213266500d70d3b0359b5efc (commit)
from 05dcf1ea88ff65052e8b8079519429e424d6f2d8 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=5b3f978ccf92e3c5213266500d70d3b0359b5efc
commit 5b3f978ccf92e3c5213266500d70d3b0359b5efc
Author: John David Anglin <danglin@gcc.gnu.org>
Date: Tue Aug 8 21:29:21 2017 -0400
hppa: Fix register corruption in __longjmp.
[BZ #21049]
* sysdeps/hppa/__longjmp.c (__longjmp): Move call to CHECK_SP up
to avoid clobbering r26.
diff --git a/ChangeLog b/ChangeLog
index 35b2d94..16b1f25 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2017-08-08 Helge Deller <deller@gmx.de>
+
+ [BZ #21049]
+ * sysdeps/hppa/__longjmp.c (__longjmp): Move call to CHECK_SP up
+ to avoid clobbering r26.
+
2017-08-06 H.J. Lu <hongjiu.lu@intel.com>
[BZ #21871]
diff --git a/sysdeps/hppa/__longjmp.c b/sysdeps/hppa/__longjmp.c
index a7eefc7..2fedb1d 100644
--- a/sysdeps/hppa/__longjmp.c
+++ b/sysdeps/hppa/__longjmp.c
@@ -24,15 +24,15 @@
void
__longjmp (__jmp_buf env, int val)
{
+#ifdef CHECK_SP
+ CHECK_SP (env[0].__jmp_buf.__sp);
+#endif
+
/* We must use one of the non-callee saves registers
for env. */
register unsigned long r26 asm ("r26") = (unsigned long)&env[0];
register unsigned long r25 asm ("r25") = (unsigned long)(val == 0 ? 1 : val);
-#ifdef CHECK_SP
- CHECK_SP (env[0].__jmp_buf.__sp);
-#endif
-
asm volatile(
/* Set return value. */
"copy %0, %%r28\n\t"
@@ -79,6 +79,7 @@ __longjmp (__jmp_buf env, int val)
: /* No outputs. */
: "r" (r25), "r" (r26)
: /* No point in clobbers. */ );
+
/* Avoid `volatile function does return' warnings. */
for (;;);
}
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 6 ++++++
sysdeps/hppa/__longjmp.c | 9 +++++----
2 files changed, 11 insertions(+), 4 deletions(-)
hooks/post-receive
--
GNU C Library master sources