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.27.9000-635-gbd4f790


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  bd4f7903dfc5d192e987f42b0b30b74225bd075c (commit)
      from  7e28f203451e4e3a59f5ce29de23157f0a4b1fc9 (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=bd4f7903dfc5d192e987f42b0b30b74225bd075c

commit bd4f7903dfc5d192e987f42b0b30b74225bd075c
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Wed Jul 25 05:00:30 2018 -0700

    Add a test for multiple setcontext calls
    
    Check multiple setcontext calls.
    
    Reviewed-by: Carlos O'Donell <carlos@redhat.com>.
    
    	* stdlib/Makefile ((tests): Add tst-setcontext5.
    	* stdlib/tst-setcontext5.c: New file.

diff --git a/ChangeLog b/ChangeLog
index 86e66ef..6935bc3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2018-07-25  H.J. Lu  <hongjiu.lu@intel.com>
 
+	* stdlib/Makefile ((tests): Add tst-setcontext5.
+	* stdlib/tst-setcontext5.c: New file.
+
+2018-07-25  H.J. Lu  <hongjiu.lu@intel.com>
+
 	* stdlib/Makefile (tests): Add tst-setcontext4.
 	* stdlib/tst-setcontext4.c: New file.
 
diff --git a/stdlib/Makefile b/stdlib/Makefile
index e3f2093..403ca22 100644
--- a/stdlib/Makefile
+++ b/stdlib/Makefile
@@ -85,7 +85,7 @@ tests		:= tst-strtol tst-strtod testmb testrand testsort testdiv   \
 		   test-at_quick_exit-race test-cxa_atexit-race             \
 		   test-on_exit-race test-dlclose-exit-race 		    \
 		   tst-makecontext-align test-bz22786 tst-strtod-nan-sign \
-		   tst-swapcontext1 tst-setcontext4
+		   tst-swapcontext1 tst-setcontext4 tst-setcontext5
 
 tests-internal	:= tst-strtod1i tst-strtod3 tst-strtod4 tst-strtod5i \
 		   tst-tls-atexit tst-tls-atexit-nodelete
diff --git a/stdlib/tst-setcontext5.c b/stdlib/tst-setcontext5.c
new file mode 100644
index 0000000..7dcc15c
--- /dev/null
+++ b/stdlib/tst-setcontext5.c
@@ -0,0 +1,88 @@
+/* Check multiple setcontext calls.
+   Copyright (C) 2018 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 <stdio.h>
+#include <stdlib.h>
+#include <ucontext.h>
+#include <unistd.h>
+
+static ucontext_t ctx[2];
+static volatile int done;
+
+static void f2 (void);
+
+static void
+__attribute__ ((noinline, noclone))
+f1 (void)
+{
+  printf ("start f1\n");
+  f2 ();
+}
+
+static void
+__attribute__ ((noinline, noclone))
+f2 (void)
+{
+  printf ("start f2\n");
+  if (setcontext (&ctx[1]) != 0)
+    {
+      printf ("%s: setcontext: %m\n", __FUNCTION__);
+      exit (EXIT_FAILURE);
+    }
+}
+
+static void
+f3 (void)
+{
+  printf ("start f3\n");
+  if (done)
+    exit (EXIT_SUCCESS);
+  done = 1;
+  if (setcontext (&ctx[0]) != 0)
+    {
+      printf ("%s: setcontext: %m\n", __FUNCTION__);
+      exit (EXIT_FAILURE);
+    }
+}
+
+static int
+do_test (void)
+{
+  char st1[32768];
+
+  puts ("making contexts");
+  if (getcontext (&ctx[0]) != 0)
+    {
+      printf ("%s: getcontext: %m\n", __FUNCTION__);
+      exit (EXIT_FAILURE);
+    }
+  if (getcontext (&ctx[1]) != 0)
+    {
+      printf ("%s: getcontext: %m\n", __FUNCTION__);
+      exit (EXIT_FAILURE);
+    }
+  ctx[1].uc_stack.ss_sp = st1;
+  ctx[1].uc_stack.ss_size = sizeof st1;
+  ctx[1].uc_link = &ctx[0];
+  makecontext (&ctx[1], (void (*) (void)) f3, 0);
+  f1 ();
+  puts ("FAIL: returned from f1 ()");
+  exit (EXIT_FAILURE);
+}
+
+#include <support/test-driver.c>

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

Summary of changes:
 ChangeLog                |    5 +++
 stdlib/Makefile          |    2 +-
 stdlib/tst-setcontext5.c |   88 ++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 94 insertions(+), 1 deletions(-)
 create mode 100644 stdlib/tst-setcontext5.c


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]