This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch master updated. glibc-2.27.9000-180-g9aa5c22
- From: aurel32 at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 8 Mar 2018 23:22:18 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.27.9000-180-g9aa5c22
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, master has been updated
via 9aa5c222b9e0409143410a02b6364a3b25dbf028 (commit)
from e921c89e01389161c036ec09112da6e18aeaa688 (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=9aa5c222b9e0409143410a02b6364a3b25dbf028
commit 9aa5c222b9e0409143410a02b6364a3b25dbf028
Author: Aurelien Jarno <aurelien@aurel32.net>
Date: Fri Mar 9 00:14:27 2018 +0100
sparc32: Add nop before __startcontext to stop unwinding [BZ #22919]
On sparc32 tst-makecontext fails, as backtrace called within a context
created by makecontext to yield infinite backtrace.
Fix that the same way than nios2 by adding a nop just before
__startcontext. This is needed as otherwise FDE lookup just repeatedly
finds __setcontext's FDE in an infinite loop, due to the convention of
using 'address - 1' for FDE lookup.
Changelog:
[BZ #22919]
* sysdeps/unix/sysv/linux/sparc/sparc32/setcontext.S (__startcontext):
Add nop before __startcontext, add explaining comments.
diff --git a/ChangeLog b/ChangeLog
index dfb96aa..054d004 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-03-09 Aurelien Jarno <aurelien@aurel32.net>
+
+ [BZ #22919]
+ * sysdeps/unix/sysv/linux/sparc/sparc32/setcontext.S (__startcontext):
+ Add nop before __startcontext, add explaining comments.
+
2018-03-07 Adhemerval Zanella <adhemerval.zanella@linaro.org>
[BZ #22926]
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/setcontext.S b/sysdeps/unix/sysv/linux/sparc/sparc32/setcontext.S
index 695f172..283aef1 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/setcontext.S
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/setcontext.S
@@ -95,6 +95,19 @@ END(__setcontext)
weak_alias (__setcontext, setcontext)
+/* We add an NOP here to separate between __setcontext/__startcontext. The
+ wanted behavior that happens is: when unwinding from a function called
+ inside a makecontext() context, FDE lookup will use '&__startcontext - 1',
+ then returns NULL for no FDE found, and immediately ends the unwind, in
+ a normal fashion.
+
+ If this NOP word does not exist, FDE lookup just repeatedly finds
+ __setcontext's FDE in an infinite loop, due to the convention of using
+ 'address - 1' for FDE lookup. Modifiying/deleting the below
+ __startcontext's FDE has no help on this. */
+
+ nop
+
/* This is the helper code which gets called if a function which is
registered with 'makecontext' returns. In this case we have to
install the context listed in the uc_link element of the context
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 6 ++++++
sysdeps/unix/sysv/linux/sparc/sparc32/setcontext.S | 13 +++++++++++++
2 files changed, 19 insertions(+), 0 deletions(-)
hooks/post-receive
--
GNU C Library master sources