aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-06-28 10:33:23 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-06-28 10:33:23 +0000
commitd57cb31910ca5c200e4172276749a7f8bd17ae3c (patch)
treeecdfae9860d80875fb91a74660ac014edbe312fc /sysdeps
parentac782f9e9ab0a39a3054e4c97653fafa8ea47a62 (diff)
downloadglibc-d57cb31910ca5c200e4172276749a7f8bd17ae3c.zip
glibc-d57cb31910ca5c200e4172276749a7f8bd17ae3c.tar.gz
glibc-d57cb31910ca5c200e4172276749a7f8bd17ae3c.tar.bz2
Miscellaneous sys/ucontext.h namespace fixes (bug 21457).
This patch fixes various miscellaneous namespace issues in sys/ucontext.h headers. Some struct tags are removed where the structs also have *_t typedef names, while other struct tags without such names are renamed to start __; the changes are noted in NEWS as they can affect C++ name mangling (although there seems to be little if any external use of these types, at least based on checking codesearch.debian.net). For powerpc, pointers to struct pt_regs (not defined in this header) are changed to point to struct __ctx(pt_regs), so in the __USE_MISC case those struct fields continue to point to the existing struct pt_regs type for maximum compatibility, while when that's a namespace issue they point to a struct __pt_regs type which is always an incomplete struct. Tested for affected architectures with build-many-glibcs.py. [BZ #21457] * sysdeps/unix/sysv/linux/m68k/sys/ucontext.h (fpregset_t): Remove struct tag. * sysdeps/unix/sysv/linux/mips/sys/ucontext.h (fpregset_t): Likewise. * sysdeps/unix/sysv/linux/nios2/sys/ucontext.h (mcontext_t): Likewise. * sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h (pt_regs): Declare struct type with __ctx. [__WORDSIZE != 32] (mcontext_t): Use __ctx with pt_regs struct tag. (ucontext_t) [__WORDSIZE == 32]: Use __ctx with pt_regs struct tag and regs field name.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/unix/sysv/linux/m68k/sys/ucontext.h2
-rw-r--r--sysdeps/unix/sysv/linux/mips/sys/ucontext.h2
-rw-r--r--sysdeps/unix/sysv/linux/nios2/sys/ucontext.h2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h10
4 files changed, 9 insertions, 7 deletions
diff --git a/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h b/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
index 280ec37..1f807b5 100644
--- a/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
@@ -91,7 +91,7 @@ enum
#endif
/* Structure to describe FPU registers. */
-typedef struct fpregset
+typedef struct
{
int __ctx(f_pcr);
int __ctx(f_psr);
diff --git a/sysdeps/unix/sysv/linux/mips/sys/ucontext.h b/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
index 19c0ed9..d17aa71 100644
--- a/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
@@ -50,7 +50,7 @@ typedef greg_t gregset_t[__NGREG];
#endif
/* Container for all FPU registers. */
-typedef struct fpregset {
+typedef struct {
union {
double __ctx(fp_dregs)[__NFPREG];
struct {
diff --git a/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h b/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
index 4754657..09e473c 100644
--- a/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
@@ -41,7 +41,7 @@
#endif
/* Context to describe whole processor state. */
-typedef struct mcontext
+typedef struct
{
int __ctx(version);
unsigned long __ctx(regs)[32];
diff --git a/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
index 2177487..54fe9df 100644
--- a/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
@@ -31,6 +31,8 @@
# define __ctx(fld) __ ## fld
#endif
+struct __ctx(pt_regs);
+
#if __WORDSIZE == 32
/* Number of general registers. */
@@ -117,7 +119,7 @@ typedef struct {
int __pad0;
unsigned long __ctx(handler);
unsigned long __ctx(oldmask);
- struct pt_regs *__ctx(regs);
+ struct __ctx(pt_regs) *__ctx(regs);
gregset_t __ctx(gp_regs);
fpregset_t __ctx(fp_regs);
/*
@@ -145,8 +147,6 @@ typedef struct {
#endif
-#undef __ctx
-
/* Userlevel context. */
typedef struct ucontext_t
{
@@ -179,7 +179,7 @@ typedef struct ucontext_t
*/
int uc_pad[7];
union uc_regs_ptr {
- struct pt_regs *regs;
+ struct __ctx(pt_regs) *__ctx(regs);
mcontext_t *uc_regs;
} uc_mcontext;
sigset_t uc_sigmask;
@@ -190,4 +190,6 @@ typedef struct ucontext_t
#endif
} ucontext_t;
+#undef __ctx
+
#endif /* sys/ucontext.h */