diff options
author | Joseph Myers <joseph@codesourcery.com> | 2017-08-09 17:51:26 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2017-08-09 17:51:26 +0000 |
commit | 3d452dabd1f063bdf251825a3ba5d68461921def (patch) | |
tree | aa689bf631d6f15121ef98d8afa630067013e980 /sysdeps | |
parent | 3016149819268b14660f791b971910ccc2cc13e5 (diff) | |
download | glibc-3d452dabd1f063bdf251825a3ba5d68461921def.zip glibc-3d452dabd1f063bdf251825a3ba5d68461921def.tar.gz glibc-3d452dabd1f063bdf251825a3ba5d68461921def.tar.bz2 |
Fix uc_* namespace (bug 21457).
The standard members of ucontext_t, in all standard versions with that
type, are uc_link, uc_sigmask, uc_stack and uc_mcontext.
The uc_* namespace is mostly reserved for additions to the structure.
However, in XPG4.2, it's only reserved when <ucontext.h> is included,
not when <signal.h> is included, while <signal.h> is required to
define ucontext_t (but not allowed to make visible other symbols from
<ucontext.h>). Thus, nonstandard members should avoid uc_* names.
Some already do use __uc_*, but others don't; most architectures (all
except ia64, I think) have a member uc_flags and some have additional
members beyond that.
This patch makes nonstandard members have an __ prefix unless
__USE_MISC is defined. Members whose names indicate they are solely
padding / reserved for future use are renamed unconditionally to use
the __glibc_reserved1 naming convention.
This is part of the preparation for a revised version of the
mcontext_t / sigcontext patch to be able to eliminate all 13 of the
miscellaneous XFAILs in conform/Makefile, rather than only 11 of them
as at present (at least one further fix on top of this one will be
needed for that as well).
Tested for x86_64, and with build-many-glibcs.py.
[BZ #21457]
* sysdeps/arm/sys/ucontext.h (__ctx): Move undefine further down.
(ucontext_t): Use __ctx with uc_flags. Rename uc_filler to
__glibc_reserved1.
* sysdeps/generic/sys/ucontext.h (__ctx): New macro.
(ucontext_t): Use __ctx with uc_flags.
* sysdeps/i386/sys/ucontext.h (__ctx): Move undefine further down.
(__ctxt): Likewise.
(ucontext_t): Use __ctx with uc_flags. Rename uc_filler to
__glibc_reserved1.
* sysdeps/m68k/sys/ucontext.h (__ctx): Move undefine further down.
(ucontext_t): Use __ctx with uc_flags. Rename uc_filler to
__glibc_reserved1.
* sysdeps/mips/sys/ucontext.h (__ctx): Move undefine further down.
(ucontext_t): Use __ctx with uc_flags. Rename uc_filler to
__glibc_reserved1.
* sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h (__ctx): New
macro.
(ucontext_t): Use __ctx with uc_flags.
* sysdeps/unix/sysv/linux/alpha/sys/ucontext.h (__ctx): New macro.
(ucontext_t): Use __ctx with uc_flags.
* sysdeps/unix/sysv/linux/arm/sys/ucontext.h (__ctx): New macro.
(ucontext_t): Use __ctx with uc_flags and uc_regspace.
* sysdeps/unix/sysv/linux/hppa/sys/ucontext.h (__ctx): New macro.
(ucontext_t): Use __ctx with uc_flags.
* sysdeps/unix/sysv/linux/m68k/sys/ucontext.h (__ctx): Move
undefine further down.
(ucontext_t): Use __ctx with uc_flags. Rename uc_filler to
__glibc_reserved1.
* sysdeps/unix/sysv/linux/mips/sys/ucontext.h (__ctx): Move
undefine further down.
(ucontext_t): Use __ctx with uc_flags.
* sysdeps/unix/sysv/linux/nios2/sys/ucontext.h (__ctx): Move
undefine further down.
(ucontext_t): Use __ctx with uc_flags.
* sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h (ucontext_t): Use
__ctx with uc_flags, uc_regs_ptr, uc_regs and uc_reg_space.
Rename uc_pad to __glibc_reserved1.
* sysdeps/unix/sysv/linux/s390/sys/ucontext.h (__ctx): Move
undefine further down.
(ucontext_t): Use __ctx with uc_flags.
* sysdeps/unix/sysv/linux/sh/sys/ucontext.h (__ctx): Move undefine
further down.
(ucontext_t): Use __ctx with uc_flags.
* sysdeps/unix/sysv/linux/sparc/sys/ucontext.h (ucontext_t): Use
__ctx with uc_flags.
* sysdeps/unix/sysv/linux/tile/sys/ucontext.h (__ctx): New macro.
(ucontext_t): Use __ctx with uc_flags.
* sysdeps/unix/sysv/linux/x86/sys/ucontext.h (ucontext_t): Use
__ctx with uc_flags.
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/arm/sys/ucontext.h | 8 | ||||
-rw-r--r-- | sysdeps/generic/sys/ucontext.h | 10 | ||||
-rw-r--r-- | sysdeps/i386/sys/ucontext.h | 10 | ||||
-rw-r--r-- | sysdeps/m68k/sys/ucontext.h | 8 | ||||
-rw-r--r-- | sysdeps/mips/sys/ucontext.h | 10 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h | 10 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/sys/ucontext.h | 10 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/arm/sys/ucontext.h | 12 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/sys/ucontext.h | 10 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/m68k/sys/ucontext.h | 8 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/mips/sys/ucontext.h | 6 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/nios2/sys/ucontext.h | 6 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h | 11 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/sys/ucontext.h | 6 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sh/sys/ucontext.h | 6 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sys/ucontext.h | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/sys/ucontext.h | 10 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/x86/sys/ucontext.h | 4 |
18 files changed, 99 insertions, 50 deletions
diff --git a/sysdeps/arm/sys/ucontext.h b/sysdeps/arm/sys/ucontext.h index 464a353..da749a9 100644 --- a/sysdeps/arm/sys/ucontext.h +++ b/sysdeps/arm/sys/ucontext.h @@ -95,17 +95,17 @@ typedef struct fpregset_t __ctx(fpregs); } mcontext_t; -#undef __ctx - /* Userlevel context. */ typedef struct ucontext_t { - unsigned long int uc_flags; + unsigned long int __ctx(uc_flags); struct ucontext_t *uc_link; sigset_t uc_sigmask; stack_t uc_stack; mcontext_t uc_mcontext; - long int uc_filler[5]; + long int __glibc_reserved1[5]; } ucontext_t; +#undef __ctx + #endif /* sys/ucontext.h */ diff --git a/sysdeps/generic/sys/ucontext.h b/sysdeps/generic/sys/ucontext.h index e4679d3..ec5ab94 100644 --- a/sysdeps/generic/sys/ucontext.h +++ b/sysdeps/generic/sys/ucontext.h @@ -31,14 +31,22 @@ typedef struct sigcontext mcontext_t; +#ifdef __USE_MISC +# define __ctx(fld) fld +#else +# define __ctx(fld) __ ## fld +#endif + /* Userlevel context. */ typedef struct ucontext_t { - unsigned long int uc_flags; + 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/i386/sys/ucontext.h b/sysdeps/i386/sys/ucontext.h index be8c7e5..27f5e48 100644 --- a/sysdeps/i386/sys/ucontext.h +++ b/sysdeps/i386/sys/ucontext.h @@ -122,18 +122,18 @@ typedef struct fpregset_t __ctx(fpregs); } mcontext_t; -#undef __ctx -#undef __ctxt - /* Userlevel context. */ typedef struct ucontext_t { - unsigned long int uc_flags; + unsigned long int __ctx(uc_flags); struct ucontext_t *uc_link; sigset_t uc_sigmask; stack_t uc_stack; mcontext_t uc_mcontext; - long int uc_filler[5]; + long int __glibc_reserved1[5]; } ucontext_t; +#undef __ctx +#undef __ctxt + #endif /* sys/ucontext.h */ diff --git a/sysdeps/m68k/sys/ucontext.h b/sysdeps/m68k/sys/ucontext.h index 00c4af4..9d2b2c6 100644 --- a/sysdeps/m68k/sys/ucontext.h +++ b/sysdeps/m68k/sys/ucontext.h @@ -106,8 +106,6 @@ typedef struct gregset_t __ctx(gregs); } mcontext_t; -#undef __ctx - #ifdef __USE_MISC # define MCONTEXT_VERSION 1 #endif @@ -115,12 +113,14 @@ typedef struct /* Userlevel context. */ typedef struct ucontext_t { - unsigned long int uc_flags; + unsigned long int __ctx(uc_flags); struct ucontext_t *uc_link; sigset_t uc_sigmask; stack_t uc_stack; mcontext_t uc_mcontext; - long int uc_filler[201]; + long int __glibc_reserved1[201]; } ucontext_t; +#undef __ctx + #endif /* sys/ucontext.h */ diff --git a/sysdeps/mips/sys/ucontext.h b/sysdeps/mips/sys/ucontext.h index d69656b..8248f59 100644 --- a/sysdeps/mips/sys/ucontext.h +++ b/sysdeps/mips/sys/ucontext.h @@ -156,21 +156,21 @@ typedef struct fpregset_t __ctx(fpregs); } mcontext_t; -#undef __ctx - /* Userlevel context. */ typedef struct ucontext_t { #if _MIPS_SIM == _ABIO32 - unsigned long int uc_flags; + unsigned long int __ctx(uc_flags); #else - __uint64_t uc_flags; + __uint64_t __ctx(uc_flags); #endif struct ucontext_t *uc_link; sigset_t uc_sigmask; stack_t uc_stack; mcontext_t uc_mcontext; - int uc_filler[48]; + int __glibc_reserved1[48]; } ucontext_t; +#undef __ctx + #endif /* sys/ucontext.h */ diff --git a/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h b/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h index 4f602fc..62ba382 100644 --- a/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h @@ -46,14 +46,22 @@ typedef elf_fpregset_t fpregset_t; during non-RT signal handlers). */ typedef struct sigcontext mcontext_t; +#ifdef __USE_MISC +# define __ctx(fld) fld +#else +# define __ctx(fld) __ ## fld +#endif + /* Userlevel context. */ typedef struct ucontext_t { - unsigned long uc_flags; + unsigned long __ctx(uc_flags); struct ucontext_t *uc_link; stack_t uc_stack; sigset_t uc_sigmask; mcontext_t uc_mcontext; } ucontext_t; +#undef __ctx + #endif /* sys/ucontext.h */ diff --git a/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h b/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h index bf95205..af20177 100644 --- a/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/alpha/sys/ucontext.h @@ -53,10 +53,16 @@ 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 + /* Userlevel context. */ typedef struct ucontext_t { - unsigned long int uc_flags; + unsigned long int __ctx(uc_flags); struct ucontext_t *uc_link; unsigned long __uc_osf_sigmask; stack_t uc_stack; @@ -64,4 +70,6 @@ typedef struct ucontext_t sigset_t uc_sigmask; } ucontext_t; +#undef __ctx + #endif /* sys/ucontext.h */ diff --git a/sysdeps/unix/sysv/linux/arm/sys/ucontext.h b/sysdeps/unix/sysv/linux/arm/sys/ucontext.h index 1083d66..2abceef 100644 --- a/sysdeps/unix/sysv/linux/arm/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/arm/sys/ucontext.h @@ -100,15 +100,23 @@ typedef struct _libc_fpstate fpregset_t; during non-RT signal handlers). */ typedef struct sigcontext mcontext_t; +#ifdef __USE_MISC +# define __ctx(fld) fld +#else +# define __ctx(fld) __ ## fld +#endif + /* Userlevel context. */ typedef struct ucontext_t { - unsigned long uc_flags; + unsigned long __ctx(uc_flags); struct ucontext_t *uc_link; stack_t uc_stack; mcontext_t uc_mcontext; sigset_t uc_sigmask; - unsigned long uc_regspace[128] __attribute__((__aligned__(8))); + unsigned long __ctx(uc_regspace)[128] __attribute__((__aligned__(8))); } ucontext_t; +#undef __ctx + #endif /* sys/ucontext.h */ diff --git a/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h b/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h index 2fd7e91..91b7b16 100644 --- a/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h @@ -54,14 +54,22 @@ typedef struct fpregset /* Context to describe whole processor state. */ typedef struct sigcontext mcontext_t; +#ifdef __USE_MISC +# define __ctx(fld) fld +#else +# define __ctx(fld) __ ## fld +#endif + /* Userlevel context. */ typedef struct ucontext_t { - unsigned long int uc_flags; + 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/m68k/sys/ucontext.h b/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h index 1f807b5..3d3e8d4 100644 --- a/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h @@ -111,8 +111,6 @@ typedef struct fpregset_t __ctx(fpregs); } mcontext_t; -#undef __ctx - #ifdef __USE_MISC # define MCONTEXT_VERSION 2 #endif @@ -120,12 +118,14 @@ typedef struct /* Userlevel context. */ typedef struct ucontext_t { - unsigned long uc_flags; + unsigned long __ctx(uc_flags); struct ucontext_t *uc_link; stack_t uc_stack; mcontext_t uc_mcontext; - unsigned long uc_filler[80]; + unsigned long __glibc_reserved1[80]; 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 d17aa71..27ae9a9 100644 --- a/sysdeps/unix/sysv/linux/mips/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/mips/sys/ucontext.h @@ -110,16 +110,16 @@ typedef struct } mcontext_t; #endif -#undef __ctx - /* Userlevel context. */ typedef struct ucontext_t { - unsigned long int uc_flags; + 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/nios2/sys/ucontext.h b/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h index 09e473c..b6ad1a3 100644 --- a/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h @@ -47,16 +47,16 @@ typedef struct unsigned long __ctx(regs)[32]; } mcontext_t; -#undef __ctx - /* Userlevel context. */ typedef struct ucontext_t { - unsigned long uc_flags; + unsigned long __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/powerpc/sys/ucontext.h b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h index 54fe9df..3a56082 100644 --- a/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h @@ -150,7 +150,7 @@ typedef struct { /* Userlevel context. */ typedef struct ucontext_t { - unsigned long int uc_flags; + unsigned long int __ctx(uc_flags); struct ucontext_t *uc_link; stack_t uc_stack; #if __WORDSIZE == 32 @@ -177,13 +177,14 @@ typedef struct ucontext_t * old ucontext_t; it ensures that uc_mcontext.regs and uc_sigmask * are at the same offset as previously. */ - int uc_pad[7]; - union uc_regs_ptr { + int __glibc_reserved1[7]; + union __ctx(uc_regs_ptr) { struct __ctx(pt_regs) *__ctx(regs); - mcontext_t *uc_regs; + mcontext_t *__ctx(uc_regs); } uc_mcontext; sigset_t uc_sigmask; - char uc_reg_space[sizeof(mcontext_t) + 12]; /* last for extensibility */ + /* last for extensibility */ + char __ctx(uc_reg_space)[sizeof(mcontext_t) + 12]; #else /* 64-bit */ sigset_t uc_sigmask; mcontext_t uc_mcontext; /* last for extensibility */ diff --git a/sysdeps/unix/sysv/linux/s390/sys/ucontext.h b/sysdeps/unix/sysv/linux/s390/sys/ucontext.h index d6bf4d8..88b74b6 100644 --- a/sysdeps/unix/sysv/linux/s390/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/s390/sys/ucontext.h @@ -80,17 +80,17 @@ typedef struct fpregset_t __ctx(fpregs); } mcontext_t; -#undef __ctx - /* Userlevel context. */ typedef struct ucontext_t { - unsigned long int uc_flags; + 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/sh/sys/ucontext.h b/sysdeps/unix/sysv/linux/sh/sys/ucontext.h index 2f42d3a..c838d80 100644 --- a/sysdeps/unix/sysv/linux/sh/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/sh/sys/ucontext.h @@ -112,16 +112,16 @@ typedef struct unsigned int __ctx(ownedfp); } mcontext_t; -#undef __ctx - /* Userlevel context. */ typedef struct ucontext_t { - unsigned long int uc_flags; + 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/sparc/sys/ucontext.h b/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h index 9932ed4..9a3eacd 100644 --- a/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h @@ -94,7 +94,7 @@ typedef struct { typedef struct ucontext_t { struct ucontext_t *uc_link; - unsigned long uc_flags; + unsigned long __ctx(uc_flags); unsigned long __uc_sigmask; mcontext_t uc_mcontext; stack_t uc_stack; @@ -294,7 +294,7 @@ typedef struct /* Userlevel context. */ typedef struct ucontext_t { - unsigned long uc_flags; + unsigned long __ctx(uc_flags); struct ucontext_t *uc_link; sigset_t uc_sigmask; stack_t uc_stack; diff --git a/sysdeps/unix/sysv/linux/tile/sys/ucontext.h b/sysdeps/unix/sysv/linux/tile/sys/ucontext.h index fcbe3ff..b70dae7 100644 --- a/sysdeps/unix/sysv/linux/tile/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/tile/sys/ucontext.h @@ -59,14 +59,22 @@ enum /* 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 + /* Userlevel context. */ typedef struct ucontext_t { - unsigned long int uc_flags; + 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/x86/sys/ucontext.h b/sysdeps/unix/sysv/linux/x86/sys/ucontext.h index f4f5c94..6d8137e 100644 --- a/sysdeps/unix/sysv/linux/x86/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/x86/sys/ucontext.h @@ -141,7 +141,7 @@ typedef struct /* Userlevel context. */ typedef struct ucontext_t { - unsigned long int uc_flags; + unsigned long int __ctx(uc_flags); struct ucontext_t *uc_link; stack_t uc_stack; mcontext_t uc_mcontext; @@ -245,7 +245,7 @@ typedef struct /* Userlevel context. */ typedef struct ucontext_t { - unsigned long int uc_flags; + unsigned long int __ctx(uc_flags); struct ucontext_t *uc_link; stack_t uc_stack; mcontext_t uc_mcontext; |