aboutsummaryrefslogtreecommitdiff
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.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;