This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.23-234-ga5507df


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  a5507dfa60a8b92ba52dadabea88e2b5d91da655 (commit)
      from  d454fd21f4366fc529f83fdcd8a1113c5b49853e (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=a5507dfa60a8b92ba52dadabea88e2b5d91da655

commit a5507dfa60a8b92ba52dadabea88e2b5d91da655
Author: Chung-Lin Tang <cltang@codesourcery.com>
Date:   Mon Apr 25 00:08:17 2016 -0700

    Fix stdlib/tst-makecontext regression for Nios II

diff --git a/ChangeLog b/ChangeLog
index 6563baf..b8b87ea 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2016-04-25  Chung-Lin Tang  <cltang@codesourcery.com>
+
+	* sysdeps/unix/sysv/linux/nios2/setcontext.S (__startcontext):
+	Add nop before __startcontext, add explaining comments.
+
 2016-04-25  Samuel thibault  <samuel.thibault@ens-lyon.org>
 
 	RFC2292 macros were obsoleted by RFC3542, and should not be exposed
diff --git a/sysdeps/unix/sysv/linux/nios2/setcontext.S b/sysdeps/unix/sysv/linux/nios2/setcontext.S
index f10e8ff..177aa4b 100644
--- a/sysdeps/unix/sysv/linux/nios2/setcontext.S
+++ b/sysdeps/unix/sysv/linux/nios2/setcontext.S
@@ -85,6 +85,18 @@ ENTRY(__setcontext)
 PSEUDO_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
+
 ENTRY(__startcontext)
 	mov	r4, r16
 	bne	r4, zero, __setcontext

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                  |    5 +++++
 sysdeps/unix/sysv/linux/nios2/setcontext.S |   12 ++++++++++++
 2 files changed, 17 insertions(+), 0 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]