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.26-221-g4fa9b3b


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  4fa9b3bfe6759c82beb4b043a54a3598ca467289 (commit)
      from  5898f4548efdcd7c0fd437a74eeb80facc51a117 (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=4fa9b3bfe6759c82beb4b043a54a3598ca467289

commit 4fa9b3bfe6759c82beb4b043a54a3598ca467289
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Wed Aug 30 22:02:04 2017 +0000

    Fix mcontext_t sigcontext namespace (bug 21457).
    
    This patch completes the ucontext.h namespace fixes by fixing issues
    related to the use of struct sigcontext as mcontext_t, and inclusion
    of <bits/sigcontext.h> even when struct sigcontext is not so used.
    
    Inclusion of <bits/sigcontext.h> by <sys/ucontext.h> is removed; the
    way to get the sigcontext structure is by including <signal.h> (in a
    context where __USE_MISC is defined); the sysdeps/generic version of
    sys/ucontext.h keeps the inclusion by necessity, with a comment about
    how this is not namespace-clean, but the only configuration that used
    it, MicroBlaze, gets its own version of the header in this patch.
    Where mcontext_t was typedefed to struct sigcontext, the contents of
    struct sigcontext are inserted (with appropriate namespace handling to
    prefix fields with __ when __USE_MISC is not defined); review should
    check that this has been done correctly in each case, whether the
    definition of struct sigcontext comes from glibc headers or from the
    Linux kernel.  This changes C++ name mangling on affected
    architectures (which do not include x86_64/x86).
    
    Tested for x86_64, and with build-many-glibcs.py.
    
    2017-08-14  Joseph Myers  <joseph@codesourcery.com>
    
    	[BZ #21457]
    	* sysdeps/arm/sys/ucontext.h: Do not include <bits/sigcontext.h>.
    	* sysdeps/generic/sys/ucontext.h: Add comment about use of struct
    	sigcontext and namespace requirements.
    	* sysdeps/i386/sys/ucontext.h: Do not include <bits/sigcontext.h>.
    	* sysdeps/m68k/sys/ucontext.h: Likewise.
    	* sysdeps/mips/sys/ucontext.h: Likewise.  Include <bits/types.h>.
    	* sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h: Do not include
    	<bits/sigcontext.h>.
    	(__ctx): Define earlier.
    	(mcontext_t): Define structure contents rather than using struct
    	sigcontext.
    	* sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym (oEXTENSION): Use
    	__glibc_reserved1 instead of __reserved.
    	* sysdeps/unix/sysv/linux/alpha/sys/ucontext.h: Do not include
    	<bits/sigcontext.h>.
    	(__ctx): Define earlier.
    	(mcontext_t): Define structure contents rather than using struct
    	sigcontext.
    	* sysdeps/unix/sysv/linux/alpha/ucontext-offsets.sym: Use
    	mcontext_t instead of struct sigcontext.
    	* sysdeps/unix/sysv/linux/arm/sys/ucontext.h: Do not include
    	<bits/sigcontext.h>.
    	(__ctx): Define earlier.
    	(mcontext_t): Define structure contents rather than using struct
    	sigcontext.
    	* sysdeps/unix/sysv/linux/hppa/sys/ucontext.h: Do not include
    	<bits/sigcontext.h>.
    	(__ctx): Define earlier.
    	(mcontext_t): Define structure contents rather than using struct
    	sigcontext.
    	* sysdeps/unix/sysv/linux/ia64/makecontext.c (__makecontext): Use
    	mcontext_t instead of struct sigcontext.
    	* sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym: Use
    	mcontext_t instead of struct sigcontext.
    	* sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Do not include
    	<bits/sigcontext.h>.
    	(__ctx): New macro.
    	(struct __ia64_fpreg_mcontext): New type.
    	(mcontext_t): Define structure contents rather than using struct
    	sigcontext.
    	(_SC_GR0_OFFSET): Use mcontext_t instead of struct sigcontext.
    	(uc_sigmask): Define using __ctx.
    	(uc_stack): Likewise.
    	* sysdeps/unix/sysv/linux/ia64/sys/procfs.h: Include
    	<bits/sigcontext.h>.
    	* sysdeps/unix/sysv/linux/ia64/sys/ptrace.h: Likewise.
    	* sysdeps/unix/sysv/linux/m68k/sys/ucontext.h: Do not include
    	<bits/sigcontext.h>.
    	* sysdeps/unix/sysv/linux/microblaze/sys/ucontext.h: New file.
    	* sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Do not include
    	<bits/sigcontext.h>.
    	* sysdeps/unix/sysv/linux/nios2/sys/ucontext.h: Do not include
    	<bits/sigcontext.h>.
    	* sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: Do not include
    	<bits/sigcontext.h>.
    	* sysdeps/unix/sysv/linux/s390/sys/ucontext.h: Do not include
    	<bits/sigcontext.h>.
    	* sysdeps/unix/sysv/linux/sh/sys/ucontext.h: Do not include
    	<bits/sigcontext.h>.
    	* sysdeps/unix/sysv/linux/sparc/sys/ucontext.h: Do not include
    	<bits/sigcontext.h>.
    	* sysdeps/unix/sysv/linux/tile/sys/ucontext.h: Do not include
    	<bits/sigcontext.h>.
    	(__ctx): Define earlier.
    	(mcontext_t): Define structure contents rather than using struct
    	sigcontext.
    	* sysdeps/unix/sysv/linux/x86/sys/ucontext.h: Do not include
    	<bits/sigcontext.h>.  Include <bits/types.h>.
    	* conform/Makefile (test-xfail-XPG42/signal.h/conform): Remove.
    	(test-xfail-XPG42/sys/wait.h/conform): Likewise.
    	(test-xfail-XPG42/ucontext.h/conform): Likewise.
    	(test-xfail-UNIX98/signal.h/conform): Likewise.
    	(test-xfail-UNIX98/sys/wait.h/conform): Likewise.
    	(test-xfail-UNIX98/ucontext.h/conform): Likewise.
    	(test-xfail-XOPEN2K/signal.h/conform): Likewise.
    	(test-xfail-XOPEN2K/sys/wait.h/conform): Likewise.
    	(test-xfail-XOPEN2K/ucontext.h/conform): Likewise.
    	(test-xfail-POSIX2008/signal.h/conform): Likewise.
    	(test-xfail-POSIX2008/sys/wait.h/conform): Likewise.
    	(test-xfail-XOPEN2K8/signal.h/conform): Likewise.
    	(test-xfail-XOPEN2K8/sys/wait.h/conform): Likewise.

diff --git a/ChangeLog b/ChangeLog
index 1d8bcde..988c402 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,88 @@
+2017-08-30  Joseph Myers  <joseph@codesourcery.com>
+
+	[BZ #21457]
+	* sysdeps/arm/sys/ucontext.h: Do not include <bits/sigcontext.h>.
+	* sysdeps/generic/sys/ucontext.h: Add comment about use of struct
+	sigcontext and namespace requirements.
+	* sysdeps/i386/sys/ucontext.h: Do not include <bits/sigcontext.h>.
+	* sysdeps/m68k/sys/ucontext.h: Likewise.
+	* sysdeps/mips/sys/ucontext.h: Likewise.  Include <bits/types.h>.
+	* sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h: Do not include
+	<bits/sigcontext.h>.
+	(__ctx): Define earlier.
+	(mcontext_t): Define structure contents rather than using struct
+	sigcontext.
+	* sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym (oEXTENSION): Use
+	__glibc_reserved1 instead of __reserved.
+	* sysdeps/unix/sysv/linux/alpha/sys/ucontext.h: Do not include
+	<bits/sigcontext.h>.
+	(__ctx): Define earlier.
+	(mcontext_t): Define structure contents rather than using struct
+	sigcontext.
+	* sysdeps/unix/sysv/linux/alpha/ucontext-offsets.sym: Use
+	mcontext_t instead of struct sigcontext.
+	* sysdeps/unix/sysv/linux/arm/sys/ucontext.h: Do not include
+	<bits/sigcontext.h>.
+	(__ctx): Define earlier.
+	(mcontext_t): Define structure contents rather than using struct
+	sigcontext.
+	* sysdeps/unix/sysv/linux/hppa/sys/ucontext.h: Do not include
+	<bits/sigcontext.h>.
+	(__ctx): Define earlier.
+	(mcontext_t): Define structure contents rather than using struct
+	sigcontext.
+	* sysdeps/unix/sysv/linux/ia64/makecontext.c (__makecontext): Use
+	mcontext_t instead of struct sigcontext.
+	* sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym: Use
+	mcontext_t instead of struct sigcontext.
+	* sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Do not include
+	<bits/sigcontext.h>.
+	(__ctx): New macro.
+	(struct __ia64_fpreg_mcontext): New type.
+	(mcontext_t): Define structure contents rather than using struct
+	sigcontext.
+	(_SC_GR0_OFFSET): Use mcontext_t instead of struct sigcontext.
+	(uc_sigmask): Define using __ctx.
+	(uc_stack): Likewise.
+	* sysdeps/unix/sysv/linux/ia64/sys/procfs.h: Include
+	<bits/sigcontext.h>.
+	* sysdeps/unix/sysv/linux/ia64/sys/ptrace.h: Likewise.
+	* sysdeps/unix/sysv/linux/m68k/sys/ucontext.h: Do not include
+	<bits/sigcontext.h>.
+	* sysdeps/unix/sysv/linux/microblaze/sys/ucontext.h: New file.
+	* sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Do not include
+	<bits/sigcontext.h>.
+	* sysdeps/unix/sysv/linux/nios2/sys/ucontext.h: Do not include
+	<bits/sigcontext.h>.
+	* sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: Do not include
+	<bits/sigcontext.h>.
+	* sysdeps/unix/sysv/linux/s390/sys/ucontext.h: Do not include
+	<bits/sigcontext.h>.
+	* sysdeps/unix/sysv/linux/sh/sys/ucontext.h: Do not include
+	<bits/sigcontext.h>.
+	* sysdeps/unix/sysv/linux/sparc/sys/ucontext.h: Do not include
+	<bits/sigcontext.h>.
+	* sysdeps/unix/sysv/linux/tile/sys/ucontext.h: Do not include
+	<bits/sigcontext.h>.
+	(__ctx): Define earlier.
+	(mcontext_t): Define structure contents rather than using struct
+	sigcontext.
+	* sysdeps/unix/sysv/linux/x86/sys/ucontext.h: Do not include
+	<bits/sigcontext.h>.  Include <bits/types.h>.
+	* conform/Makefile (test-xfail-XPG42/signal.h/conform): Remove.
+	(test-xfail-XPG42/sys/wait.h/conform): Likewise.
+	(test-xfail-XPG42/ucontext.h/conform): Likewise.
+	(test-xfail-UNIX98/signal.h/conform): Likewise.
+	(test-xfail-UNIX98/sys/wait.h/conform): Likewise.
+	(test-xfail-UNIX98/ucontext.h/conform): Likewise.
+	(test-xfail-XOPEN2K/signal.h/conform): Likewise.
+	(test-xfail-XOPEN2K/sys/wait.h/conform): Likewise.
+	(test-xfail-XOPEN2K/ucontext.h/conform): Likewise.
+	(test-xfail-POSIX2008/signal.h/conform): Likewise.
+	(test-xfail-POSIX2008/sys/wait.h/conform): Likewise.
+	(test-xfail-XOPEN2K8/signal.h/conform): Likewise.
+	(test-xfail-XOPEN2K8/sys/wait.h/conform): Likewise.
+
 2017-08-30  Florian Weimer  <fweimer@redhat.com>
 
 	* malloc/dynarray_emplace_enlarge.c
diff --git a/NEWS b/NEWS
index 625bcc6..dce514d 100644
--- a/NEWS
+++ b/NEWS
@@ -33,6 +33,10 @@ Deprecated and removed features, and other changes affecting compatibility:
   exception, or the macros X_TLOSS, DOMAIN, SING, OVERFLOW, UNDERFLOW,
   TLOSS, PLOSS and HUGE.
 
+* The mcontext_t type is no longer the same as struct sigcontext.  On
+  platforms where it was previously the same, this changes the C++ name
+  mangling for interfaces involving this type.
+
 Changes to build and runtime requirements:
 
   [Add changes to build and runtime requirements here]
diff --git a/conform/Makefile b/conform/Makefile
index 9ec41c7..3883a4b 100644
--- a/conform/Makefile
+++ b/conform/Makefile
@@ -160,21 +160,6 @@ test-xfail-UNIX98/ndbm.h/conform = yes
 test-xfail-XOPEN2K/ndbm.h/conform = yes
 test-xfail-XOPEN2K8/ndbm.h/conform = yes
 
-# Unsorted expected failures.
-test-xfail-XPG42/signal.h/conform = yes
-test-xfail-XPG42/sys/wait.h/conform = yes
-test-xfail-XPG42/ucontext.h/conform = yes
-test-xfail-UNIX98/signal.h/conform = yes
-test-xfail-UNIX98/sys/wait.h/conform = yes
-test-xfail-UNIX98/ucontext.h/conform = yes
-test-xfail-XOPEN2K/signal.h/conform = yes
-test-xfail-XOPEN2K/sys/wait.h/conform = yes
-test-xfail-XOPEN2K/ucontext.h/conform = yes
-test-xfail-POSIX2008/signal.h/conform = yes
-test-xfail-POSIX2008/sys/wait.h/conform = yes
-test-xfail-XOPEN2K8/signal.h/conform = yes
-test-xfail-XOPEN2K8/sys/wait.h/conform = yes
-
 conformtest-cc-flags = -I../include $(+sysdep-includes) $(sysincludes) -I..
 # conformtest-xfail-conds may be set by a sysdeps Makefile fragment to
 # a list of conditions that are considered to be true when encountered
diff --git a/sysdeps/arm/sys/ucontext.h b/sysdeps/arm/sys/ucontext.h
index da749a9..512d51f 100644
--- a/sysdeps/arm/sys/ucontext.h
+++ b/sysdeps/arm/sys/ucontext.h
@@ -23,7 +23,6 @@
 #include <features.h>
 
 #include <bits/types/sigset_t.h>
-#include <bits/sigcontext.h>
 #include <bits/types/stack_t.h>
 
 
diff --git a/sysdeps/generic/sys/ucontext.h b/sysdeps/generic/sys/ucontext.h
index ec5ab94..d497297 100644
--- a/sysdeps/generic/sys/ucontext.h
+++ b/sysdeps/generic/sys/ucontext.h
@@ -17,7 +17,9 @@
    <http://www.gnu.org/licenses/>.  */
 
 /* This file's definitions suffice for any platform where all
-   the machine-specific state is described in `struct sigcontext'.  */
+   the machine-specific state is described in `struct sigcontext', but
+   use of struct sigcontext does not conform to POSIX namespace
+   requirements.  */
 
 #ifndef _SYS_UCONTEXT_H
 #define _SYS_UCONTEXT_H	1
diff --git a/sysdeps/i386/sys/ucontext.h b/sysdeps/i386/sys/ucontext.h
index 27f5e48..440075c 100644
--- a/sysdeps/i386/sys/ucontext.h
+++ b/sysdeps/i386/sys/ucontext.h
@@ -23,7 +23,6 @@
 #include <features.h>
 
 #include <bits/types/sigset_t.h>
-#include <bits/sigcontext.h>
 #include <bits/types/stack_t.h>
 
 
diff --git a/sysdeps/m68k/sys/ucontext.h b/sysdeps/m68k/sys/ucontext.h
index 9d2b2c6..0dbdca6 100644
--- a/sysdeps/m68k/sys/ucontext.h
+++ b/sysdeps/m68k/sys/ucontext.h
@@ -23,7 +23,6 @@
 #include <features.h>
 
 #include <bits/types/sigset_t.h>
-#include <bits/sigcontext.h>
 #include <bits/types/stack_t.h>
 
 
diff --git a/sysdeps/mips/sys/ucontext.h b/sysdeps/mips/sys/ucontext.h
index 8248f59..d2a7ae3 100644
--- a/sysdeps/mips/sys/ucontext.h
+++ b/sysdeps/mips/sys/ucontext.h
@@ -22,8 +22,8 @@
 
 #include <features.h>
 
+#include <bits/types.h>
 #include <bits/types/sigset_t.h>
-#include <bits/sigcontext.h>
 #include <bits/types/stack_t.h>
 
 #include <sgidefs.h>
diff --git a/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h b/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
index 62ba382..3de8011 100644
--- a/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
@@ -24,10 +24,15 @@
 #include <features.h>
 
 #include <bits/types/sigset_t.h>
-#include <bits/sigcontext.h>
 #include <bits/types/stack_t.h>
 
 #ifdef __USE_MISC
+# define __ctx(fld) fld
+#else
+# define __ctx(fld) __ ## fld
+#endif
+
+#ifdef __USE_MISC
 # include <sys/procfs.h>
 
 
@@ -44,13 +49,15 @@ typedef elf_fpregset_t	fpregset_t;
    the core registers; coprocessor registers get saved elsewhere
    (e.g. in uc_regspace, or somewhere unspecified on the stack
    during non-RT signal handlers).  */
-typedef struct sigcontext mcontext_t;
-
-#ifdef __USE_MISC
-# define __ctx(fld) fld
-#else
-# define __ctx(fld) __ ## fld
-#endif
+typedef struct
+  {
+    unsigned long long int __ctx(fault_address);
+    unsigned long long int __ctx(regs)[31];
+    unsigned long long int __ctx(sp);
+    unsigned long long int __ctx(pc);
+    unsigned long long int __ctx(pstate);
+    unsigned char __glibc_reserved1[4096] __attribute__ ((__aligned__ (16)));
+  } mcontext_t;
 
 /* Userlevel context.  */
 typedef struct ucontext_t
diff --git a/sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym b/sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym
index ab3930c..479bdda 100644
--- a/sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym
+++ b/sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym
@@ -38,7 +38,7 @@ oX0				mcontext (regs)
 oSP				mcontext (sp)
 oPC				mcontext (pc)
 oPSTATE				mcontext (pstate)
-oEXTENSION                      mcontext (__reserved)
+oEXTENSION                      mcontext (__glibc_reserved1)
 
 #define fpsimd_context(member)  offsetof (struct fpsimd_context, member)
 
diff --git a/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h b/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h
index af20177..a51d9b2 100644
--- a/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h
@@ -21,10 +21,15 @@
 #include <features.h>
 
 #include <bits/types/sigset_t.h>
-#include <bits/sigcontext.h>
 #include <bits/types/stack_t.h>
 
 
+#ifdef __USE_MISC
+# define __ctx(fld) fld
+#else
+# define __ctx(fld) __ ## fld
+#endif
+
 /* Type for general register.  */
 typedef long int greg_t;
 
@@ -51,13 +56,27 @@ typedef fpreg_t fpregset_t[__NFPREG];
 
 
 /* A machine context is exactly a sigcontext.  */
-typedef struct sigcontext mcontext_t;
-
-#ifdef __USE_MISC
-# define __ctx(fld) fld
-#else
-# define __ctx(fld) __ ## fld
-#endif
+typedef struct
+  {
+    long int __ctx(sc_onstack);
+    long int __ctx(sc_mask);
+    long int __ctx(sc_pc);
+    long int __ctx(sc_ps);
+    long int __ctx(sc_regs)[32];
+    long int __ctx(sc_ownedfp);
+    long int __ctx(sc_fpregs)[32];
+    unsigned long int __ctx(sc_fpcr);
+    unsigned long int __ctx(sc_fp_control);
+    unsigned long int __glibc_reserved1, __glibc_reserved2;
+    unsigned long int __ctx(sc_ssize);
+    char *__ctx(sc_sbase);
+    unsigned long int __ctx(sc_traparg_a0);
+    unsigned long int __ctx(sc_traparg_a1);
+    unsigned long int __ctx(sc_traparg_a2);
+    unsigned long int __ctx(sc_fp_trap_pc);
+    unsigned long int __ctx(sc_fp_trigger_sum);
+    unsigned long int __ctx(sc_fp_trigger_inst);
+  } mcontext_t;
 
 /* Userlevel context.  */
 typedef struct ucontext_t
diff --git a/sysdeps/unix/sysv/linux/alpha/ucontext-offsets.sym b/sysdeps/unix/sysv/linux/alpha/ucontext-offsets.sym
index f95ff75..9e86f8a 100644
--- a/sysdeps/unix/sysv/linux/alpha/ucontext-offsets.sym
+++ b/sysdeps/unix/sysv/linux/alpha/ucontext-offsets.sym
@@ -7,12 +7,12 @@ UC_OSF_SIGMASK	offsetof (ucontext_t, __uc_osf_sigmask)
 UC_STACK	offsetof (ucontext_t, uc_stack)
 UC_SIGCTX	offsetof (ucontext_t, uc_mcontext)
 UC_SIGMASK	offsetof (ucontext_t, uc_sigmask)
-SC_REGS		offsetof (struct sigcontext, sc_regs)
-SC_FPREGS	offsetof (struct sigcontext, sc_fpregs)
-SC_PC		offsetof (struct sigcontext, sc_pc)
-SC_PS		offsetof (struct sigcontext, sc_ps)
-SC_FPCRS	offsetof (struct sigcontext, sc_fpcr)
-SC_MASK		offsetof (struct sigcontext, sc_mask)
-SC_FPCR		offsetof (struct sigcontext, sc_fpcr)
+SC_REGS		offsetof (mcontext_t, sc_regs)
+SC_FPREGS	offsetof (mcontext_t, sc_fpregs)
+SC_PC		offsetof (mcontext_t, sc_pc)
+SC_PS		offsetof (mcontext_t, sc_ps)
+SC_FPCRS	offsetof (mcontext_t, sc_fpcr)
+SC_MASK		offsetof (mcontext_t, sc_mask)
+SC_FPCR		offsetof (mcontext_t, sc_fpcr)
 SS_SP		offsetof (stack_t, ss_sp)
 SS_SIZE		offsetof (stack_t, ss_size)
diff --git a/sysdeps/unix/sysv/linux/arm/sys/ucontext.h b/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
index 2abceef..192d1bd 100644
--- a/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
@@ -23,11 +23,16 @@
 #include <features.h>
 
 #include <bits/types/sigset_t.h>
-#include <bits/sigcontext.h>
 #include <bits/types/stack_t.h>
 
 
 #ifdef __USE_MISC
+# define __ctx(fld) fld
+#else
+# define __ctx(fld) __ ## fld
+#endif
+
+#ifdef __USE_MISC
 typedef int greg_t;
 
 /* Number of general registers.  */
@@ -98,13 +103,30 @@ typedef struct _libc_fpstate fpregset_t;
    the core registers; coprocessor registers get saved elsewhere
    (e.g. in uc_regspace, or somewhere unspecified on the stack
    during non-RT signal handlers).  */
-typedef struct sigcontext mcontext_t;
-
-#ifdef __USE_MISC
-# define __ctx(fld) fld
-#else
-# define __ctx(fld) __ ## fld
-#endif
+typedef struct
+  {
+    unsigned long int __ctx(trap_no);
+    unsigned long int __ctx(error_code);
+    unsigned long int __ctx(oldmask);
+    unsigned long int __ctx(arm_r0);
+    unsigned long int __ctx(arm_r1);
+    unsigned long int __ctx(arm_r2);
+    unsigned long int __ctx(arm_r3);
+    unsigned long int __ctx(arm_r4);
+    unsigned long int __ctx(arm_r5);
+    unsigned long int __ctx(arm_r6);
+    unsigned long int __ctx(arm_r7);
+    unsigned long int __ctx(arm_r8);
+    unsigned long int __ctx(arm_r9);
+    unsigned long int __ctx(arm_r10);
+    unsigned long int __ctx(arm_fp);
+    unsigned long int __ctx(arm_ip);
+    unsigned long int __ctx(arm_sp);
+    unsigned long int __ctx(arm_lr);
+    unsigned long int __ctx(arm_pc);
+    unsigned long int __ctx(arm_cpsr);
+    unsigned long int __ctx(fault_address);
+  } mcontext_t;
 
 /* Userlevel context.  */
 typedef struct ucontext_t
diff --git a/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h b/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
index 91b7b16..c8b5426 100644
--- a/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
@@ -23,11 +23,16 @@
 #include <features.h>
 
 #include <bits/types/sigset_t.h>
-#include <bits/sigcontext.h>
 #include <bits/types/stack_t.h>
 
 
 #ifdef __USE_MISC
+# define __ctx(fld) fld
+#else
+# define __ctx(fld) __ ## fld
+#endif
+
+#ifdef __USE_MISC
 /* Type for general register.  */
 typedef unsigned long int greg_t;
 
@@ -52,13 +57,15 @@ typedef struct fpregset
 #endif
 
 /* Context to describe whole processor state.  */
-typedef struct sigcontext mcontext_t;
-
-#ifdef __USE_MISC
-# define __ctx(fld) fld
-#else
-# define __ctx(fld) __ ## fld
-#endif
+typedef struct
+  {
+    unsigned long int __ctx(sc_flags);
+    unsigned long int __ctx(sc_gr)[32];
+    unsigned long long int __ctx(sc_fr)[32];
+    unsigned long int __ctx(sc_iasq)[2];
+    unsigned long int __ctx(sc_iaoq)[2];
+    unsigned long int __ctx(sc_sar);
+  } mcontext_t;
 
 /* Userlevel context.  */
 typedef struct ucontext_t
diff --git a/sysdeps/unix/sysv/linux/ia64/makecontext.c b/sysdeps/unix/sysv/linux/ia64/makecontext.c
index 299f9a8..cb98e7c 100644
--- a/sysdeps/unix/sysv/linux/ia64/makecontext.c
+++ b/sysdeps/unix/sysv/linux/ia64/makecontext.c
@@ -40,7 +40,7 @@ do {						\
 void
 __makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...)
 {
-  struct sigcontext *sc = &ucp->uc_mcontext;
+  mcontext_t *sc = &ucp->uc_mcontext;
   extern void __start_context (ucontext_t *link, long gp, ...);
   unsigned long stack_start, stack_end;
   va_list ap;
diff --git a/sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym b/sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym
index 943e68a..ac3e3c8 100644
--- a/sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym
+++ b/sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym
@@ -2,15 +2,15 @@
 #include <sys/ucontext.h>
 
 --
-SC_NAT		offsetof (struct sigcontext, sc_nat)
-SC_BSP		offsetof (struct sigcontext, sc_ar_bsp)
-SC_RNAT		offsetof (struct sigcontext, sc_ar_rnat)
-SC_UNAT		offsetof (struct sigcontext, sc_ar_unat)
-SC_FPSR		offsetof (struct sigcontext, sc_ar_fpsr)
-SC_PFS		offsetof (struct sigcontext, sc_ar_pfs)
-SC_LC		offsetof (struct sigcontext, sc_ar_lc)
-SC_PR		offsetof (struct sigcontext, sc_pr)
-SC_BR		offsetof (struct sigcontext, sc_br)
-SC_GR		offsetof (struct sigcontext, sc_gr)
-SC_FR		offsetof (struct sigcontext, sc_fr)
-SC_MASK		offsetof (struct sigcontext, sc_mask)
+SC_NAT		offsetof (mcontext_t, sc_nat)
+SC_BSP		offsetof (mcontext_t, sc_ar_bsp)
+SC_RNAT		offsetof (mcontext_t, sc_ar_rnat)
+SC_UNAT		offsetof (mcontext_t, sc_ar_unat)
+SC_FPSR		offsetof (mcontext_t, sc_ar_fpsr)
+SC_PFS		offsetof (mcontext_t, sc_ar_pfs)
+SC_LC		offsetof (mcontext_t, sc_ar_lc)
+SC_PR		offsetof (mcontext_t, sc_pr)
+SC_BR		offsetof (mcontext_t, sc_br)
+SC_GR		offsetof (mcontext_t, sc_gr)
+SC_FR		offsetof (mcontext_t, sc_fr)
+SC_MASK		offsetof (mcontext_t, sc_mask)
diff --git a/sysdeps/unix/sysv/linux/ia64/sys/procfs.h b/sysdeps/unix/sysv/linux/ia64/sys/procfs.h
index afe54fb..4847f2d 100644
--- a/sysdeps/unix/sysv/linux/ia64/sys/procfs.h
+++ b/sysdeps/unix/sysv/linux/ia64/sys/procfs.h
@@ -27,6 +27,7 @@
 #include <sys/time.h>
 #include <sys/types.h>
 #include <sys/ucontext.h>
+#include <bits/sigcontext.h>
 #include <sys/user.h>
 
 __BEGIN_DECLS
diff --git a/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h b/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h
index 681dc89..9de2f94 100644
--- a/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h
+++ b/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h
@@ -21,6 +21,7 @@
 
 #include <features.h>
 #include <sys/ucontext.h>
+#include <bits/sigcontext.h>
 #include <bits/types.h>
 
 __BEGIN_DECLS
diff --git a/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h b/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h
index 9cd686c..8929e09 100644
--- a/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h
@@ -21,24 +21,63 @@
 #include <features.h>
 
 #include <bits/types/sigset_t.h>
-#include <bits/sigcontext.h>
 #include <bits/types/stack_t.h>
 
 
+#ifdef __USE_MISC
+# define __ctx(fld) fld
+#else
+# define __ctx(fld) __ ## fld
+#endif
+
 /*
  * These are here mostly for backwards compatibility with older Unices.
- * IA-64 Linux does not distinguish between "struct sigcontext" and
+ * IA-64 Linux does not distinguish between "mcontext_t" and
  * "ucontext_t" as all the necessary info is inside the former.
  */
 
-typedef struct sigcontext mcontext_t;
+struct __ia64_fpreg_mcontext
+  {
+    union
+      {
+	unsigned long __ctx(bits)[2];
+      } __ctx(u);
+  } __attribute__ ((__aligned__ (16)));
+
+typedef struct
+  {
+    unsigned long int __ctx(sc_flags);
+    unsigned long int __ctx(sc_nat);
+    stack_t __ctx(sc_stack);
+    unsigned long int __ctx(sc_ip);
+    unsigned long int __ctx(sc_cfm);
+    unsigned long int __ctx(sc_um);
+    unsigned long int __ctx(sc_ar_rsc);
+    unsigned long int __ctx(sc_ar_bsp);
+    unsigned long int __ctx(sc_ar_rnat);
+    unsigned long int __ctx(sc_ar_ccv);
+    unsigned long int __ctx(sc_ar_unat);
+    unsigned long int __ctx(sc_ar_fpsr);
+    unsigned long int __ctx(sc_ar_pfs);
+    unsigned long int __ctx(sc_ar_lc);
+    unsigned long int __ctx(sc_pr);
+    unsigned long int __ctx(sc_br)[8];
+    unsigned long int __ctx(sc_gr)[32];
+    struct __ia64_fpreg_mcontext __ctx(sc_fr)[128];
+    unsigned long int __ctx(sc_rbs_base);
+    unsigned long int __ctx(sc_loadrs);
+    unsigned long int __ctx(sc_ar25);
+    unsigned long int __ctx(sc_ar26);
+    unsigned long int __ctx(sc_rsvd)[12];
+    unsigned long int __ctx(sc_mask);
+  } mcontext_t;
 
 #if __GNUC_PREREQ (3, 5)
 # define _SC_GR0_OFFSET	\
-	__builtin_offsetof (struct sigcontext, sc_gr[0])
+	__builtin_offsetof (mcontext_t, __ctx(sc_gr)[0])
 #elif defined __GNUC__
 # define _SC_GR0_OFFSET	\
-	(((char *) &((struct sigcontext *) 0)->sc_gr[0]) - (char *) 0)
+	(((char *) &((mcontext_t *) 0)->__ctx(sc_gr)[0]) - (char *) 0)
 #else
 # define _SC_GR0_OFFSET	0xc8	/* pray that this is correct... */
 #endif
@@ -60,8 +99,8 @@ typedef struct ucontext_t
 ucontext_t;
 
 #define uc_mcontext	_u._mc
-#define uc_sigmask	_u._mc.sc_mask
-#define uc_stack	_u._mc.sc_stack
+#define uc_sigmask	_u._mc.__ctx(sc_mask)
+#define uc_stack	_u._mc.__ctx(sc_stack)
 #define uc_link		_u._uc._link
 
 #endif /* sys/ucontext.h */
diff --git a/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h b/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
index 3d3e8d4..436b186 100644
--- a/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
@@ -23,7 +23,6 @@
 #include <features.h>
 
 #include <bits/types/sigset_t.h>
-#include <bits/sigcontext.h>
 #include <bits/types/stack_t.h>
 
 
diff --git a/sysdeps/unix/sysv/linux/microblaze/sys/ucontext.h b/sysdeps/unix/sysv/linux/microblaze/sys/ucontext.h
new file mode 100644
index 0000000..9824654
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/microblaze/sys/ucontext.h
@@ -0,0 +1,92 @@
+/* Data structures for user-level context switching.  MicroBlaze version.
+   Copyright (C) 1997-2017 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/>.  */
+
+#ifndef _SYS_UCONTEXT_H
+#define _SYS_UCONTEXT_H	1
+
+#include <features.h>
+
+#include <bits/types/sigset_t.h>
+#include <bits/types/stack_t.h>
+
+
+#ifdef __USE_MISC
+# define __ctx(fld) fld
+#else
+# define __ctx(fld) __ ## fld
+#endif
+
+typedef struct
+  {
+    struct
+      {
+	unsigned long int __ctx(r0);
+	unsigned long int __ctx(r1);
+	unsigned long int __ctx(r2);
+	unsigned long int __ctx(r3);
+	unsigned long int __ctx(r4);
+	unsigned long int __ctx(r5);
+	unsigned long int __ctx(r6);
+	unsigned long int __ctx(r7);
+	unsigned long int __ctx(r8);
+	unsigned long int __ctx(r9);
+	unsigned long int __ctx(r10);
+	unsigned long int __ctx(r11);
+	unsigned long int __ctx(r12);
+	unsigned long int __ctx(r13);
+	unsigned long int __ctx(r14);
+	unsigned long int __ctx(r15);
+	unsigned long int __ctx(r16);
+	unsigned long int __ctx(r17);
+	unsigned long int __ctx(r18);
+	unsigned long int __ctx(r19);
+	unsigned long int __ctx(r20);
+	unsigned long int __ctx(r21);
+	unsigned long int __ctx(r22);
+	unsigned long int __ctx(r23);
+	unsigned long int __ctx(r24);
+	unsigned long int __ctx(r25);
+	unsigned long int __ctx(r26);
+	unsigned long int __ctx(r27);
+	unsigned long int __ctx(r28);
+	unsigned long int __ctx(r29);
+	unsigned long int __ctx(r30);
+	unsigned long int __ctx(r31);
+	unsigned long int __ctx(pc);
+	unsigned long int __ctx(msr);
+	unsigned long int __ctx(ear);
+	unsigned long int __ctx(esr);
+	unsigned long int __ctx(fsr);
+	int __ctx(pt_mode);
+      } __ctx(regs);
+    unsigned long int __ctx(oldmask);
+  } mcontext_t;
+
+/* Userlevel context.  */
+typedef struct ucontext_t
+  {
+    unsigned long int __ctx(uc_flags);
+    struct ucontext_t *uc_link;
+    stack_t uc_stack;
+    mcontext_t uc_mcontext;
+    sigset_t uc_sigmask;
+  } ucontext_t;
+
+#undef __ctx
+
+#endif /* sys/ucontext.h */
diff --git a/sysdeps/unix/sysv/linux/mips/sys/ucontext.h b/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
index 27ae9a9..5dd3481 100644
--- a/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
@@ -22,7 +22,6 @@
 #include <features.h>
 
 #include <bits/types/sigset_t.h>
-#include <bits/sigcontext.h>
 #include <bits/types/stack_t.h>
 
 #include <sgidefs.h>
diff --git a/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h b/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
index b6ad1a3..6feffb6 100644
--- a/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
@@ -24,7 +24,6 @@
 #include <features.h>
 
 #include <bits/types/sigset_t.h>
-#include <bits/sigcontext.h>
 #include <bits/types/stack_t.h>
 
 
diff --git a/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
index 3a56082..6196102 100644
--- a/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
@@ -20,7 +20,6 @@
 
 #include <features.h>
 
-#include <bits/sigcontext.h>
 #include <bits/types/sigset_t.h>
 #include <bits/types/stack_t.h>
 
diff --git a/sysdeps/unix/sysv/linux/s390/sys/ucontext.h b/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
index 88b74b6..50ce6a8 100644
--- a/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
@@ -22,7 +22,6 @@
 #include <features.h>
 
 #include <bits/types/sigset_t.h>
-#include <bits/sigcontext.h>
 #include <bits/types/stack_t.h>
 
 
diff --git a/sysdeps/unix/sysv/linux/sh/sys/ucontext.h b/sysdeps/unix/sysv/linux/sh/sys/ucontext.h
index c838d80..ff8e401 100644
--- a/sysdeps/unix/sysv/linux/sh/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/sh/sys/ucontext.h
@@ -23,7 +23,6 @@
 #include <features.h>
 
 #include <bits/types/sigset_t.h>
-#include <bits/sigcontext.h>
 #include <bits/types/stack_t.h>
 
 
diff --git a/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h b/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h
index 9a3eacd..12e4cd6 100644
--- a/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h
@@ -21,7 +21,6 @@
 #include <features.h>
 
 #include <bits/types/sigset_t.h>
-#include <bits/sigcontext.h>
 #include <bits/types/stack_t.h>
 
 #include <bits/wordsize.h>
diff --git a/sysdeps/unix/sysv/linux/tile/sys/ucontext.h b/sysdeps/unix/sysv/linux/tile/sys/ucontext.h
index b70dae7..7c5ed50 100644
--- a/sysdeps/unix/sysv/linux/tile/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/tile/sys/ucontext.h
@@ -22,10 +22,15 @@
 #include <features.h>
 
 #include <bits/types/sigset_t.h>
-#include <bits/sigcontext.h>
 #include <bits/types/stack_t.h>
 
 #ifdef __USE_MISC
+# define __ctx(fld) fld
+#else
+# define __ctx(fld) __ ## fld
+#endif
+
+#ifdef __USE_MISC
 /* Get register type and register names. */
 # include <arch/abi.h>
 
@@ -56,14 +61,28 @@ enum
 };
 #endif
 
-/* A machine context is exactly a sigcontext.  */
-typedef struct sigcontext mcontext_t;
+#define __need_int_reg_t
+#include <arch/abi.h>
 
-#ifdef __USE_MISC
-# define __ctx(fld) fld
-#else
-# define __ctx(fld) __ ## fld
-#endif
+/* A machine context is exactly a sigcontext.  */
+typedef struct
+  {
+    __extension__ union
+      {
+	__uint_reg_t __ctx(gregs)[56];
+	__extension__ struct
+	  {
+	    __uint_reg_t __ctx(__gregs)[53];
+	    __uint_reg_t __ctx(tp);
+	    __uint_reg_t __ctx(sp);
+	    __uint_reg_t __ctx(lr);
+	  };
+      };
+    __uint_reg_t __ctx(pc);
+    __uint_reg_t __ctx(ics);
+    __uint_reg_t __ctx(faultnum);
+    __uint_reg_t __glibc_reserved1[5];
+  } mcontext_t;
 
 /* Userlevel context.  */
 typedef struct ucontext_t
diff --git a/sysdeps/unix/sysv/linux/x86/sys/ucontext.h b/sysdeps/unix/sysv/linux/x86/sys/ucontext.h
index 6d8137e..c1b82a8 100644
--- a/sysdeps/unix/sysv/linux/x86/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/x86/sys/ucontext.h
@@ -20,8 +20,8 @@
 
 #include <features.h>
 
+#include <bits/types.h>
 #include <bits/types/sigset_t.h>
-#include <bits/sigcontext.h>
 #include <bits/types/stack_t.h>
 
 

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

Summary of changes:
 ChangeLog                                          |   85 ++++++++++++++++++
 NEWS                                               |    4 +
 conform/Makefile                                   |   15 ---
 sysdeps/arm/sys/ucontext.h                         |    1 -
 sysdeps/generic/sys/ucontext.h                     |    4 +-
 sysdeps/i386/sys/ucontext.h                        |    1 -
 sysdeps/m68k/sys/ucontext.h                        |    1 -
 sysdeps/mips/sys/ucontext.h                        |    2 +-
 sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h     |   23 +++--
 sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym     |    2 +-
 sysdeps/unix/sysv/linux/alpha/sys/ucontext.h       |   35 ++++++--
 sysdeps/unix/sysv/linux/alpha/ucontext-offsets.sym |   14 ++--
 sysdeps/unix/sysv/linux/arm/sys/ucontext.h         |   38 +++++++--
 sysdeps/unix/sysv/linux/hppa/sys/ucontext.h        |   23 +++--
 sysdeps/unix/sysv/linux/ia64/makecontext.c         |    2 +-
 .../unix/sysv/linux/ia64/sigcontext-offsets.sym    |   24 +++---
 sysdeps/unix/sysv/linux/ia64/sys/procfs.h          |    1 +
 sysdeps/unix/sysv/linux/ia64/sys/ptrace.h          |    1 +
 sysdeps/unix/sysv/linux/ia64/sys/ucontext.h        |   53 ++++++++++--
 sysdeps/unix/sysv/linux/m68k/sys/ucontext.h        |    1 -
 sysdeps/unix/sysv/linux/microblaze/sys/ucontext.h  |   92 ++++++++++++++++++++
 sysdeps/unix/sysv/linux/mips/sys/ucontext.h        |    1 -
 sysdeps/unix/sysv/linux/nios2/sys/ucontext.h       |    1 -
 sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h     |    1 -
 sysdeps/unix/sysv/linux/s390/sys/ucontext.h        |    1 -
 sysdeps/unix/sysv/linux/sh/sys/ucontext.h          |    1 -
 sysdeps/unix/sysv/linux/sparc/sys/ucontext.h       |    1 -
 sysdeps/unix/sysv/linux/tile/sys/ucontext.h        |   35 ++++++--
 sysdeps/unix/sysv/linux/x86/sys/ucontext.h         |    2 +-
 29 files changed, 369 insertions(+), 96 deletions(-)
 create mode 100644 sysdeps/unix/sysv/linux/microblaze/sys/ucontext.h


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]