about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-06-26 22:03:58 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-06-26 22:03:58 +0000
commit251287734e89a52da3db682a8241eb6bccc050c9 (patch)
tree78b5ef0e022129bb0c5d98fd0ca2cd875e05de13
parentc86ed71d633c22d6f638576f7660c52a5f783d66 (diff)
downloadglibc-251287734e89a52da3db682a8241eb6bccc050c9.tar.gz
glibc-251287734e89a52da3db682a8241eb6bccc050c9.tar.xz
glibc-251287734e89a52da3db682a8241eb6bccc050c9.zip
Rename struct ucontext tag (bug 21457).
The ucontext_t type has a tag struct ucontext.  As with previous such
issues for siginfo_t and stack_t, this tag is not permitted by POSIX
(is not in a reserved namespace), and so namespace conformance means
breaking C++ name mangling for this type.

In this case, the type does need to have some tag rather than just a
typedef name, because it includes a pointer to itself.  This patch
uses struct ucontext_t as the new tag, so the type is mangled as
ucontext_t (the POSIX *_t reservation applies in all namespaces, not
just the namespace of ordinary identifiers).  Another reserved name
such as struct __ucontext could of course be used.

Because of other namespace issues, this patch does not by itself fix
bug 21457 or allow any XFAILs to be removed.

Tested for x86_64, and with build-many-glibcs.py.

	[BZ #21457]
	* sysdeps/arm/sys/ucontext.h (struct ucontext): Rename to struct
	ucontext_t.
	* sysdeps/generic/sys/ucontext.h (struct ucontext): Likewise.
	* sysdeps/i386/sys/ucontext.h (struct ucontext): Likewise.
	* sysdeps/m68k/sys/ucontext.h (struct ucontext): Likewise.
	* sysdeps/mips/sys/ucontext.h (struct ucontext): Likewise.
	* sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h (struct
	ucontext): Likewise.
	* sysdeps/unix/sysv/linux/alpha/sys/ucontext.h (struct ucontext):
	Likewise.
	* sysdeps/unix/sysv/linux/arm/sys/ucontext.h (struct ucontext):
	Likewise.
	* sysdeps/unix/sysv/linux/hppa/sys/ucontext.h (struct ucontext):
	Likewise.
	* sysdeps/unix/sysv/linux/ia64/sys/ucontext.h (struct ucontext):
	Likewise.
	* sysdeps/unix/sysv/linux/m68k/sys/ucontext.h (struct ucontext):
	Likewise.
	* sysdeps/unix/sysv/linux/mips/sys/ucontext.h (struct ucontext):
	Likewise.
	* sysdeps/unix/sysv/linux/nios2/sys/ucontext.h (struct ucontext):
	Likewise.
	* sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h (struct
	ucontext): Likewise.
	* sysdeps/unix/sysv/linux/s390/sys/ucontext.h (struct ucontext):
	Likewise.
	* sysdeps/unix/sysv/linux/sh/sys/ucontext.h (struct ucontext):
	Likewise.
	* sysdeps/unix/sysv/linux/sparc/sys/ucontext.h (struct ucontext):
	Likewise.
	* sysdeps/unix/sysv/linux/tile/sys/ucontext.h (struct ucontext):
	Likewise.
	* sysdeps/unix/sysv/linux/x86/sys/ucontext.h (struct ucontext):
	Likewise.
	* sysdeps/powerpc/powerpc32/backtrace.c (struct
	rt_signal_frame_32): Likewise.
	* sysdeps/powerpc/powerpc64/backtrace.c (struct signal_frame_64):
	Likewise.
	* sysdeps/unix/sysv/linux/aarch64/kernel_rt_sigframe.h (struct
	kernel_rt_sigframe): Likewise.
	* sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h (SIGCONTEXT):
	Likewise.
	* sysdeps/unix/sysv/linux/arm/register-dump.h (register_dump):
	Likewise.
	* sysdeps/unix/sysv/linux/arm/sigcontextinfo.h (SIGCONTEXT):
	Likewise.
	* sysdeps/unix/sysv/linux/hppa/profil-counter.h
	(__profil_counter): Likewise.
	* sysdeps/unix/sysv/linux/microblaze/sigcontextinfo.h
	(SIGCONTEXT): Likewise.
	* sysdeps/unix/sysv/linux/mips/kernel_rt_sigframe.h (struct
	kernel_rt_sigframe): Likewise.
	* sysdeps/unix/sysv/linux/nios2/kernel_rt_sigframe.h (struct
	kernel_rt_sigframe): Likewise.
	* sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h (SIGCONTEXT):
	Likewise.
	* sysdeps/unix/sysv/linux/sh/makecontext.S (__makecontext):
	Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c
	(__start_context): Likewise.
	* sysdeps/unix/sysv/linux/tile/sigcontextinfo.h (SIGCONTEXT):
	Likewise.
	* sysdeps/unix/sysv/linux/x86_64/register-dump.h (register_dump):
	Likewise.
	* sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h (SIGCONTEXT):
	Likewise.
-rw-r--r--ChangeLog68
-rw-r--r--NEWS3
-rw-r--r--sysdeps/arm/sys/ucontext.h4
-rw-r--r--sysdeps/generic/sys/ucontext.h4
-rw-r--r--sysdeps/i386/sys/ucontext.h4
-rw-r--r--sysdeps/m68k/sys/ucontext.h4
-rw-r--r--sysdeps/mips/sys/ucontext.h4
-rw-r--r--sysdeps/powerpc/powerpc32/backtrace.c2
-rw-r--r--sysdeps/powerpc/powerpc64/backtrace.c2
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/kernel_rt_sigframe.h2
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h2
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h4
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sys/ucontext.h4
-rw-r--r--sysdeps/unix/sysv/linux/arm/register-dump.h2
-rw-r--r--sysdeps/unix/sysv/linux/arm/sigcontextinfo.h2
-rw-r--r--sysdeps/unix/sysv/linux/arm/sys/ucontext.h4
-rw-r--r--sysdeps/unix/sysv/linux/hppa/profil-counter.h2
-rw-r--r--sysdeps/unix/sysv/linux/hppa/sys/ucontext.h4
-rw-r--r--sysdeps/unix/sysv/linux/ia64/sys/ucontext.h4
-rw-r--r--sysdeps/unix/sysv/linux/m68k/sys/ucontext.h4
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/sigcontextinfo.h2
-rw-r--r--sysdeps/unix/sysv/linux/mips/kernel_rt_sigframe.h2
-rw-r--r--sysdeps/unix/sysv/linux/mips/sys/ucontext.h4
-rw-r--r--sysdeps/unix/sysv/linux/nios2/kernel_rt_sigframe.h2
-rw-r--r--sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h2
-rw-r--r--sysdeps/unix/sysv/linux/nios2/sys/ucontext.h6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h4
-rw-r--r--sysdeps/unix/sysv/linux/s390/sys/ucontext.h4
-rw-r--r--sysdeps/unix/sysv/linux/sh/makecontext.S2
-rw-r--r--sysdeps/unix/sysv/linux/sh/sys/ucontext.h4
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c2
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sys/ucontext.h8
-rw-r--r--sysdeps/unix/sysv/linux/tile/sigcontextinfo.h2
-rw-r--r--sysdeps/unix/sysv/linux/tile/sys/ucontext.h4
-rw-r--r--sysdeps/unix/sysv/linux/x86/sys/ucontext.h8
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/register-dump.h2
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h2
37 files changed, 130 insertions, 59 deletions
diff --git a/ChangeLog b/ChangeLog
index c8ea62669d..5663110435 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,73 @@
 2017-06-26  Joseph Myers  <joseph@codesourcery.com>
 
+	[BZ #21457]
+	* sysdeps/arm/sys/ucontext.h (struct ucontext): Rename to struct
+	ucontext_t.
+	* sysdeps/generic/sys/ucontext.h (struct ucontext): Likewise.
+	* sysdeps/i386/sys/ucontext.h (struct ucontext): Likewise.
+	* sysdeps/m68k/sys/ucontext.h (struct ucontext): Likewise.
+	* sysdeps/mips/sys/ucontext.h (struct ucontext): Likewise.
+	* sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h (struct
+	ucontext): Likewise.
+	* sysdeps/unix/sysv/linux/alpha/sys/ucontext.h (struct ucontext):
+	Likewise.
+	* sysdeps/unix/sysv/linux/arm/sys/ucontext.h (struct ucontext):
+	Likewise.
+	* sysdeps/unix/sysv/linux/hppa/sys/ucontext.h (struct ucontext):
+	Likewise.
+	* sysdeps/unix/sysv/linux/ia64/sys/ucontext.h (struct ucontext):
+	Likewise.
+	* sysdeps/unix/sysv/linux/m68k/sys/ucontext.h (struct ucontext):
+	Likewise.
+	* sysdeps/unix/sysv/linux/mips/sys/ucontext.h (struct ucontext):
+	Likewise.
+	* sysdeps/unix/sysv/linux/nios2/sys/ucontext.h (struct ucontext):
+	Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h (struct
+	ucontext): Likewise.
+	* sysdeps/unix/sysv/linux/s390/sys/ucontext.h (struct ucontext):
+	Likewise.
+	* sysdeps/unix/sysv/linux/sh/sys/ucontext.h (struct ucontext):
+	Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sys/ucontext.h (struct ucontext):
+	Likewise.
+	* sysdeps/unix/sysv/linux/tile/sys/ucontext.h (struct ucontext):
+	Likewise.
+	* sysdeps/unix/sysv/linux/x86/sys/ucontext.h (struct ucontext):
+	Likewise.
+	* sysdeps/powerpc/powerpc32/backtrace.c (struct
+	rt_signal_frame_32): Likewise.
+	* sysdeps/powerpc/powerpc64/backtrace.c (struct signal_frame_64):
+	Likewise.
+	* sysdeps/unix/sysv/linux/aarch64/kernel_rt_sigframe.h (struct
+	kernel_rt_sigframe): Likewise.
+	* sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h (SIGCONTEXT):
+	Likewise.
+	* sysdeps/unix/sysv/linux/arm/register-dump.h (register_dump):
+	Likewise.
+	* sysdeps/unix/sysv/linux/arm/sigcontextinfo.h (SIGCONTEXT):
+	Likewise.
+	* sysdeps/unix/sysv/linux/hppa/profil-counter.h
+	(__profil_counter): Likewise.
+	* sysdeps/unix/sysv/linux/microblaze/sigcontextinfo.h
+	(SIGCONTEXT): Likewise.
+	* sysdeps/unix/sysv/linux/mips/kernel_rt_sigframe.h (struct
+	kernel_rt_sigframe): Likewise.
+	* sysdeps/unix/sysv/linux/nios2/kernel_rt_sigframe.h (struct
+	kernel_rt_sigframe): Likewise.
+	* sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h (SIGCONTEXT):
+	Likewise.
+	* sysdeps/unix/sysv/linux/sh/makecontext.S (__makecontext):
+	Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c
+	(__start_context): Likewise.
+	* sysdeps/unix/sysv/linux/tile/sigcontextinfo.h (SIGCONTEXT):
+	Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/register-dump.h (register_dump):
+	Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h (SIGCONTEXT):
+	Likewise.
+
 	* sysdeps/i386/Implies: Add ieee754/float128.
 	* sysdeps/x86_64/Implies: Likewise.
 	* sysdeps/x86/bits/floatn.h: New file.
diff --git a/NEWS b/NEWS
index 960c9f8dad..a662be27f0 100644
--- a/NEWS
+++ b/NEWS
@@ -94,6 +94,9 @@ Version 2.26
 * The stack_t type no longer has the name struct sigaltstack.  This changes
   the C++ name mangling for interfaces involving this type.
 
+* The ucontext_t type no longer has the name struct ucontext.  This changes
+  the C++ name mangling for interfaces involving this type.
+
 * The synchronization that pthread_spin_unlock performs has been changed
   to now be equivalent to a C11 atomic store with release memory order to
   the spin lock's memory location.  This ensures correct synchronization
diff --git a/sysdeps/arm/sys/ucontext.h b/sysdeps/arm/sys/ucontext.h
index 722300a7f1..464a353a51 100644
--- a/sysdeps/arm/sys/ucontext.h
+++ b/sysdeps/arm/sys/ucontext.h
@@ -98,10 +98,10 @@ typedef struct
 #undef __ctx
 
 /* Userlevel context.  */
-typedef struct ucontext
+typedef struct ucontext_t
   {
     unsigned long int uc_flags;
-    struct ucontext *uc_link;
+    struct ucontext_t *uc_link;
     sigset_t uc_sigmask;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
diff --git a/sysdeps/generic/sys/ucontext.h b/sysdeps/generic/sys/ucontext.h
index a64460c9ae..e4679d3d94 100644
--- a/sysdeps/generic/sys/ucontext.h
+++ b/sysdeps/generic/sys/ucontext.h
@@ -32,10 +32,10 @@
 typedef struct sigcontext mcontext_t;
 
 /* Userlevel context.  */
-typedef struct ucontext
+typedef struct ucontext_t
   {
     unsigned long int uc_flags;
-    struct ucontext *uc_link;
+    struct ucontext_t *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
     sigset_t uc_sigmask;
diff --git a/sysdeps/i386/sys/ucontext.h b/sysdeps/i386/sys/ucontext.h
index fb5df11965..be8c7e5408 100644
--- a/sysdeps/i386/sys/ucontext.h
+++ b/sysdeps/i386/sys/ucontext.h
@@ -126,10 +126,10 @@ typedef struct
 #undef __ctxt
 
 /* Userlevel context.  */
-typedef struct ucontext
+typedef struct ucontext_t
   {
     unsigned long int uc_flags;
-    struct ucontext *uc_link;
+    struct ucontext_t *uc_link;
     sigset_t uc_sigmask;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
diff --git a/sysdeps/m68k/sys/ucontext.h b/sysdeps/m68k/sys/ucontext.h
index a742aaff9a..00c4af417a 100644
--- a/sysdeps/m68k/sys/ucontext.h
+++ b/sysdeps/m68k/sys/ucontext.h
@@ -113,10 +113,10 @@ typedef struct
 #endif
 
 /* Userlevel context.  */
-typedef struct ucontext
+typedef struct ucontext_t
 {
   unsigned long int uc_flags;
-  struct ucontext *uc_link;
+  struct ucontext_t *uc_link;
   sigset_t uc_sigmask;
   stack_t uc_stack;
   mcontext_t uc_mcontext;
diff --git a/sysdeps/mips/sys/ucontext.h b/sysdeps/mips/sys/ucontext.h
index 4bc1bc199a..d69656b5dc 100644
--- a/sysdeps/mips/sys/ucontext.h
+++ b/sysdeps/mips/sys/ucontext.h
@@ -159,14 +159,14 @@ typedef struct
 #undef __ctx
 
 /* Userlevel context.  */
-typedef struct ucontext
+typedef struct ucontext_t
 {
 #if _MIPS_SIM == _ABIO32
   unsigned long int uc_flags;
 #else
   __uint64_t uc_flags;
 #endif
-  struct ucontext *uc_link;
+  struct ucontext_t *uc_link;
   sigset_t uc_sigmask;
   stack_t uc_stack;
   mcontext_t uc_mcontext;
diff --git a/sysdeps/powerpc/powerpc32/backtrace.c b/sysdeps/powerpc/powerpc32/backtrace.c
index 394062136c..187c3b3349 100644
--- a/sysdeps/powerpc/powerpc32/backtrace.c
+++ b/sysdeps/powerpc/powerpc32/backtrace.c
@@ -64,7 +64,7 @@ is_sigtramp_address (void *nip)
 struct rt_signal_frame_32 {
   char               dummy[SIGNAL_FRAMESIZE + 16];
   siginfo_t          info;
-  struct ucontext    uc;
+  ucontext_t         uc;
   /* We don't care about the rest, since IP value is at 'uc' field.  */
 };
 
diff --git a/sysdeps/powerpc/powerpc64/backtrace.c b/sysdeps/powerpc/powerpc64/backtrace.c
index 723948d78f..919bf1cfd7 100644
--- a/sysdeps/powerpc/powerpc64/backtrace.c
+++ b/sysdeps/powerpc/powerpc64/backtrace.c
@@ -50,7 +50,7 @@ struct layout
 struct signal_frame_64 {
 #define SIGNAL_FRAMESIZE 128
   char dummy[SIGNAL_FRAMESIZE];
-  struct ucontext uc;
+  ucontext_t uc;
   /* We don't care about the rest, since the IP value is at 'uc' field.  */
 };
 
diff --git a/sysdeps/unix/sysv/linux/aarch64/kernel_rt_sigframe.h b/sysdeps/unix/sysv/linux/aarch64/kernel_rt_sigframe.h
index e67ddfa91c..cb65bd4159 100644
--- a/sysdeps/unix/sysv/linux/aarch64/kernel_rt_sigframe.h
+++ b/sysdeps/unix/sysv/linux/aarch64/kernel_rt_sigframe.h
@@ -21,5 +21,5 @@
 struct kernel_rt_sigframe
 {
   siginfo_t info;
-  struct ucontext uc;
+  ucontext_t uc;
 };
diff --git a/sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h b/sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h
index b28ad5bdcd..7793d110bb 100644
--- a/sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h
+++ b/sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h
@@ -19,7 +19,7 @@
 #include <stdint.h>
 #include <sys/ucontext.h>
 
-#define SIGCONTEXT siginfo_t *_si, struct ucontext *
+#define SIGCONTEXT siginfo_t *_si, ucontext_t *
 #define GET_PC(ctx) ((void *) (uintptr_t) (ctx)->uc_mcontext.pc)
 
 /* There is no reliable way to get the sigcontext unless we use a
diff --git a/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h b/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
index 16c7acf221..4f602fc166 100644
--- a/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
@@ -47,10 +47,10 @@ typedef elf_fpregset_t	fpregset_t;
 typedef struct sigcontext mcontext_t;
 
 /* Userlevel context.  */
-typedef struct ucontext
+typedef struct ucontext_t
   {
     unsigned long uc_flags;
-    struct ucontext *uc_link;
+    struct ucontext_t *uc_link;
     stack_t uc_stack;
     sigset_t uc_sigmask;
     mcontext_t uc_mcontext;
diff --git a/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h b/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h
index b9e590347e..bf95205140 100644
--- a/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h
@@ -54,10 +54,10 @@ typedef fpreg_t fpregset_t[__NFPREG];
 typedef struct sigcontext mcontext_t;
 
 /* Userlevel context.  */
-typedef struct ucontext
+typedef struct ucontext_t
   {
     unsigned long int uc_flags;
-    struct ucontext *uc_link;
+    struct ucontext_t *uc_link;
     unsigned long __uc_osf_sigmask;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
diff --git a/sysdeps/unix/sysv/linux/arm/register-dump.h b/sysdeps/unix/sysv/linux/arm/register-dump.h
index 0f2bed7d1d..d31b3245ec 100644
--- a/sysdeps/unix/sysv/linux/arm/register-dump.h
+++ b/sysdeps/unix/sysv/linux/arm/register-dump.h
@@ -44,7 +44,7 @@ hexvalue (unsigned long int value, char *buf, size_t len)
 }
 
 static void
-register_dump (int fd, const struct ucontext *ctx)
+register_dump (int fd, const ucontext_t *ctx)
 {
   char regs[21][8];
   struct iovec iov[97];
diff --git a/sysdeps/unix/sysv/linux/arm/sigcontextinfo.h b/sysdeps/unix/sysv/linux/arm/sigcontextinfo.h
index f2a66d154d..d3313af24a 100644
--- a/sysdeps/unix/sysv/linux/arm/sigcontextinfo.h
+++ b/sysdeps/unix/sysv/linux/arm/sigcontextinfo.h
@@ -18,7 +18,7 @@
 
 #include <sys/ucontext.h>
 
-#define SIGCONTEXT siginfo_t *_si, struct ucontext *
+#define SIGCONTEXT siginfo_t *_si, ucontext_t *
 #define SIGCONTEXT_EXTRA_ARGS _si,
 
 /* The sigcontext structure changed between 2.0 and 2.1 kernels.  On any
diff --git a/sysdeps/unix/sysv/linux/arm/sys/ucontext.h b/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
index 0ce9b14ba5..1083d66943 100644
--- a/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
@@ -101,10 +101,10 @@ typedef struct _libc_fpstate fpregset_t;
 typedef struct sigcontext mcontext_t;
 
 /* Userlevel context.  */
-typedef struct ucontext
+typedef struct ucontext_t
   {
     unsigned long uc_flags;
-    struct ucontext *uc_link;
+    struct ucontext_t *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
     sigset_t uc_sigmask;
diff --git a/sysdeps/unix/sysv/linux/hppa/profil-counter.h b/sysdeps/unix/sysv/linux/hppa/profil-counter.h
index 0bb6e37298..69cf8302cd 100644
--- a/sysdeps/unix/sysv/linux/hppa/profil-counter.h
+++ b/sysdeps/unix/sysv/linux/hppa/profil-counter.h
@@ -17,7 +17,7 @@
    <http://www.gnu.org/licenses/>.  */
 
 static void
-__profil_counter (int signr, siginfo_t *si, struct ucontext *uctx)
+__profil_counter (int signr, siginfo_t *si, ucontext_t *uctx)
 {
   unsigned long ip = uctx->uc_mcontext.sc_iaoq[0] & ~0x3;
   profil_count ((void *) ip);
diff --git a/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h b/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
index 982b4c44c2..2fd7e911f7 100644
--- a/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
@@ -55,10 +55,10 @@ typedef struct fpregset
 typedef struct sigcontext mcontext_t;
 
 /* Userlevel context.  */
-typedef struct ucontext
+typedef struct ucontext_t
   {
     unsigned long int uc_flags;
-    struct ucontext *uc_link;
+    struct ucontext_t *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
     sigset_t uc_sigmask;
diff --git a/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h b/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h
index 5ed6929af4..9cd686c40c 100644
--- a/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h
@@ -43,7 +43,7 @@ typedef struct sigcontext mcontext_t;
 # define _SC_GR0_OFFSET	0xc8	/* pray that this is correct... */
 #endif
 
-typedef struct ucontext
+typedef struct ucontext_t
   {
     union
       {
@@ -51,7 +51,7 @@ typedef struct ucontext
 	struct
 	  {
 	    unsigned long _pad[_SC_GR0_OFFSET/8];
-	    struct ucontext *_link;	/* this should overlay sc_gr[0] */
+	    struct ucontext_t *_link;	/* this should overlay sc_gr[0] */
 	  }
 	_uc;
       }
diff --git a/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h b/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
index e6ecbe6ab5..280ec3789b 100644
--- a/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
@@ -118,10 +118,10 @@ typedef struct
 #endif
 
 /* Userlevel context.  */
-typedef struct ucontext
+typedef struct ucontext_t
 {
   unsigned long uc_flags;
-  struct ucontext *uc_link;
+  struct ucontext_t *uc_link;
   stack_t uc_stack;
   mcontext_t uc_mcontext;
   unsigned long uc_filler[80];
diff --git a/sysdeps/unix/sysv/linux/microblaze/sigcontextinfo.h b/sysdeps/unix/sysv/linux/microblaze/sigcontextinfo.h
index 071ca9475e..145b3cb003 100644
--- a/sysdeps/unix/sysv/linux/microblaze/sigcontextinfo.h
+++ b/sysdeps/unix/sysv/linux/microblaze/sigcontextinfo.h
@@ -16,7 +16,7 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#define SIGCONTEXT int _code, struct ucontext *
+#define SIGCONTEXT int _code, ucontext_t *
 #define SIGCONTEXT_EXTRA_ARGS _code,
 #define GET_PC(ctx)    ((void *) (ctx)->uc_mcontext.regs.pc)
 #define GET_FRAME(ctx) ((void *) (ctx)->uc_mcontext.regs.sp)
diff --git a/sysdeps/unix/sysv/linux/mips/kernel_rt_sigframe.h b/sysdeps/unix/sysv/linux/mips/kernel_rt_sigframe.h
index e870b207de..8f62b575cf 100644
--- a/sysdeps/unix/sysv/linux/mips/kernel_rt_sigframe.h
+++ b/sysdeps/unix/sysv/linux/mips/kernel_rt_sigframe.h
@@ -6,7 +6,7 @@ typedef struct kernel_rt_sigframe
     uint32_t rs_ass[4];
     uint32_t rs_code[2];
     siginfo_t rs_info;
-    struct ucontext rs_uc;
+    ucontext_t rs_uc;
     uint32_t rs_altcode[8] __attribute__ ((__aligned__ (1 << 7)));
   }
 kernel_rt_sigframe_t;
diff --git a/sysdeps/unix/sysv/linux/mips/sys/ucontext.h b/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
index 048e9a46b7..19c0ed97f0 100644
--- a/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
@@ -113,10 +113,10 @@ typedef struct
 #undef __ctx
 
 /* Userlevel context.  */
-typedef struct ucontext
+typedef struct ucontext_t
   {
     unsigned long int uc_flags;
-    struct ucontext *uc_link;
+    struct ucontext_t *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
     sigset_t uc_sigmask;
diff --git a/sysdeps/unix/sysv/linux/nios2/kernel_rt_sigframe.h b/sysdeps/unix/sysv/linux/nios2/kernel_rt_sigframe.h
index f840effe92..3dc59d8240 100644
--- a/sysdeps/unix/sysv/linux/nios2/kernel_rt_sigframe.h
+++ b/sysdeps/unix/sysv/linux/nios2/kernel_rt_sigframe.h
@@ -22,5 +22,5 @@
 struct kernel_rt_sigframe
 {
   siginfo_t info;
-  struct ucontext uc;
+  ucontext_t uc;
 };
diff --git a/sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h b/sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h
index 51b715c308..b24447893a 100644
--- a/sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h
+++ b/sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h
@@ -19,7 +19,7 @@
 #include <sys/ucontext.h>
 #include "kernel-features.h"
 
-#define SIGCONTEXT siginfo_t *_si, struct ucontext *
+#define SIGCONTEXT siginfo_t *_si, ucontext_t *
 #define GET_PC(ctx) ((void *) (ctx)->uc_mcontext.regs[27])
 
 /* There is no reliable way to get the sigcontext unless we use a
diff --git a/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h b/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
index af8d75c435..47546572f5 100644
--- a/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
@@ -1,4 +1,4 @@
-/* struct ucontext definition, Nios II version.
+/* ucontext_t definition, Nios II version.
    Copyright (C) 2015-2017 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -50,10 +50,10 @@ typedef struct mcontext
 #undef __ctx
 
 /* Userlevel context.  */
-typedef struct ucontext
+typedef struct ucontext_t
   {
     unsigned long uc_flags;
-    struct ucontext *uc_link;
+    struct ucontext_t *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
     sigset_t uc_sigmask;
diff --git a/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
index b460f23bc9..217748784c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
@@ -148,10 +148,10 @@ typedef struct {
 #undef __ctx
 
 /* Userlevel context.  */
-typedef struct ucontext
+typedef struct ucontext_t
   {
     unsigned long int uc_flags;
-    struct ucontext *uc_link;
+    struct ucontext_t *uc_link;
     stack_t uc_stack;
 #if __WORDSIZE == 32
     /*
diff --git a/sysdeps/unix/sysv/linux/s390/sys/ucontext.h b/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
index 183da5c8f9..d6bf4d864a 100644
--- a/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/s390/sys/ucontext.h
@@ -83,10 +83,10 @@ typedef struct
 #undef __ctx
 
 /* Userlevel context.  */
-typedef struct ucontext
+typedef struct ucontext_t
   {
     unsigned long int uc_flags;
-    struct ucontext *uc_link;
+    struct ucontext_t *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
     sigset_t uc_sigmask;
diff --git a/sysdeps/unix/sysv/linux/sh/makecontext.S b/sysdeps/unix/sysv/linux/sh/makecontext.S
index 4506961007..b48eb61fa9 100644
--- a/sysdeps/unix/sysv/linux/sh/makecontext.S
+++ b/sysdeps/unix/sysv/linux/sh/makecontext.S
@@ -21,7 +21,7 @@
 
 #include "ucontext_i.h"
 
-/* void __makecontext (struct ucontext *ucp, void (*func)(), int argc, ...);
+/* void __makecontext (ucontext_t *ucp, void (*func)(), int argc, ...);
   __makecontext sets up a stack and registers for context to run a given
   function.  The registers are set up like this:
     r4-r7: parameters 1 to 4
diff --git a/sysdeps/unix/sysv/linux/sh/sys/ucontext.h b/sysdeps/unix/sysv/linux/sh/sys/ucontext.h
index d44f95e0f9..2f42d3a054 100644
--- a/sysdeps/unix/sysv/linux/sh/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/sh/sys/ucontext.h
@@ -115,10 +115,10 @@ typedef struct
 #undef __ctx
 
 /* Userlevel context.  */
-typedef struct ucontext
+typedef struct ucontext_t
   {
     unsigned long int uc_flags;
-    struct ucontext *uc_link;
+    struct ucontext_t *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
     sigset_t uc_sigmask;
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c b/sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c
index ca174d01c1..97127407d3 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c
@@ -21,7 +21,7 @@
 #include <stdlib.h>
 #include <ucontext.h>
 
-extern void __start_context (struct ucontext *ucp);
+extern void __start_context (ucontext_t *ucp);
 
 void
 __makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...)
diff --git a/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h b/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h
index 7ce5f2b881..dc0d3169b5 100644
--- a/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h
@@ -82,8 +82,8 @@ typedef struct {
 	mc_fpu_t	mc_fpregs;
 } mcontext_t;
 
-typedef struct ucontext {
-	struct ucontext		*uc_link;
+typedef struct ucontext_t {
+	struct ucontext_t	*uc_link;
 	unsigned long		uc_flags;
 	unsigned long		__uc_sigmask;
 	mcontext_t		uc_mcontext;
@@ -261,10 +261,10 @@ typedef struct
 
 
 /* Userlevel context.  */
-typedef struct ucontext
+typedef struct ucontext_t
   {
     unsigned long   uc_flags;
-    struct ucontext *uc_link;
+    struct ucontext_t *uc_link;
     sigset_t	    uc_sigmask;
     stack_t         uc_stack;
     mcontext_t      uc_mcontext;
diff --git a/sysdeps/unix/sysv/linux/tile/sigcontextinfo.h b/sysdeps/unix/sysv/linux/tile/sigcontextinfo.h
index 8908c589d3..bad81e4a3e 100644
--- a/sysdeps/unix/sysv/linux/tile/sigcontextinfo.h
+++ b/sysdeps/unix/sysv/linux/tile/sigcontextinfo.h
@@ -18,7 +18,7 @@
 
 #include <arch/abi.h>
 
-#define SIGCONTEXT siginfo_t *_si, struct ucontext *
+#define SIGCONTEXT siginfo_t *_si, ucontext_t *
 #define SIGCONTEXT_EXTRA_ARGS _si,
 #define GET_PC(ctx)	((void *) (long) ctx->uc_mcontext.pc)
 #define GET_FRAME(ctx)	((void *) (long) ctx->uc_mcontext.regs[TREG_FP])
diff --git a/sysdeps/unix/sysv/linux/tile/sys/ucontext.h b/sysdeps/unix/sysv/linux/tile/sys/ucontext.h
index 7e5cf4a831..fcbe3ffb9b 100644
--- a/sysdeps/unix/sysv/linux/tile/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/tile/sys/ucontext.h
@@ -60,10 +60,10 @@ enum
 typedef struct sigcontext mcontext_t;
 
 /* Userlevel context.  */
-typedef struct ucontext
+typedef struct ucontext_t
   {
     unsigned long int uc_flags;
-    struct ucontext *uc_link;
+    struct ucontext_t *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
     sigset_t uc_sigmask;
diff --git a/sysdeps/unix/sysv/linux/x86/sys/ucontext.h b/sysdeps/unix/sysv/linux/x86/sys/ucontext.h
index 0cbed086a7..f4f5c948de 100644
--- a/sysdeps/unix/sysv/linux/x86/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/x86/sys/ucontext.h
@@ -139,10 +139,10 @@ typedef struct
 } mcontext_t;
 
 /* Userlevel context.  */
-typedef struct ucontext
+typedef struct ucontext_t
   {
     unsigned long int uc_flags;
-    struct ucontext *uc_link;
+    struct ucontext_t *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
     sigset_t uc_sigmask;
@@ -243,10 +243,10 @@ typedef struct
   } mcontext_t;
 
 /* Userlevel context.  */
-typedef struct ucontext
+typedef struct ucontext_t
   {
     unsigned long int uc_flags;
-    struct ucontext *uc_link;
+    struct ucontext_t *uc_link;
     stack_t uc_stack;
     mcontext_t uc_mcontext;
     sigset_t uc_sigmask;
diff --git a/sysdeps/unix/sysv/linux/x86_64/register-dump.h b/sysdeps/unix/sysv/linux/x86_64/register-dump.h
index 6a52957901..dda8ea3e04 100644
--- a/sysdeps/unix/sysv/linux/x86_64/register-dump.h
+++ b/sysdeps/unix/sysv/linux/x86_64/register-dump.h
@@ -64,7 +64,7 @@ hexvalue (unsigned long int value, char *buf, size_t len)
 }
 
 static void
-register_dump (int fd, struct ucontext *ctx)
+register_dump (int fd, ucontext_t *ctx)
 {
   char regs[25][16];
   char fpregs[30][8];
diff --git a/sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h b/sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h
index e935353ccd..131f96bf22 100644
--- a/sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h
+++ b/sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h
@@ -17,7 +17,7 @@
 
 #include <stdint.h>
 
-#define SIGCONTEXT siginfo_t *_si, struct ucontext *
+#define SIGCONTEXT siginfo_t *_si, ucontext_t *
 #define SIGCONTEXT_EXTRA_ARGS _si,
 #define GET_PC(ctx)	\
   ((void *) (uintptr_t) (ctx)->uc_mcontext.gregs[REG_RIP])