mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-08 22:30:07 +00:00
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.
This commit is contained in:
parent
3016149819
commit
3d452dabd1
53
ChangeLog
53
ChangeLog
@ -1,3 +1,56 @@
|
||||
2017-08-09 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[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.
|
||||
|
||||
2017-08-09 Florian Weimer <fweimer@redhat.com>
|
||||
|
||||
[BZ #21932]
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user