This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Condition some sys/ucontext.h contents on __USE_MISC (bug 21457)
- From: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>
- To: libc-alpha at sourceware dot org
- Date: Thu, 11 May 2017 08:46:09 -0300
- Subject: Re: Condition some sys/ucontext.h contents on __USE_MISC (bug 21457)
- Authentication-results: sourceware.org; auth=none
- References: <alpine.DEB.2.20.1705042101300.5390@digraph.polyomino.org.uk>
On 04/05/2017 18:02, Joseph Myers wrote:
> Continuing the fixes for namespace issues arising from sys/ucontext.h,
> this patch conditions various definitions, that are not needed for
> defining mcontext_t / ucontext_t, on __USE_MISC, so they do not appear
> in strict POSIX modes.
>
> This patch is non-exhaustive; that is, it only conditions
> straightforward cases and there may be more such definitions that can
> be conditioned for these and other architectures, to be dealt with
> later in separate patches. Also, using __USE_MISC is the minimum
> change for these definitions where they conflict with POSIX; some
> headers already have __USE_GNU conditionals on similar definitions of
> names for registers. The patch specifically does not do anything with
> definitions in bits/sigcontext.h, and nor does it condition any
> inclusions of bits/sigcontext.h even where in fact that is not needed
> on some architectures for the definitions of mcontext_t / ucontext_t.
>
> As other namespace issues in these headers remain, this patch does not
> fix bug 21457, nor allow any XFAILs to be removed.
>
> Tested with build-many-glibcs.py.
LGTM, thanks.
>
> 2017-05-04 Joseph Myers <joseph@codesourcery.com>
>
> [BZ #21457]
> * sysdeps/arm/sys/ucontext.h (R0): Condition on [__USE_MISC].
> (R1): Likewise.
> (R2): Likewise.
> (R3): Likewise.
> (R4): Likewise.
> (R5): Likewise.
> (R6): Likewise.
> (R7): Likewise.
> (R8): Likewise.
> (R9): Likewise.
> (R10): Likewise.
> (R11): Likewise.
> (R12): Likewise.
> (R13): Likewise.
> (R14): Likewise.
> (R15): Likewise.
> * sysdeps/i386/sys/ucontext.h (REG_GS): Likewise.
> (REG_FS): Likewise.
> (REG_ES): Likewise.
> (REG_DS): Likewise.
> (REG_EDI): Likewise.
> (REG_ESI): Likewise.
> (REG_EBP): Likewise.
> (REG_ESP): Likewise.
> (REG_EBX): Likewise.
> (REG_EDX): Likewise.
> (REG_ECX): Likewise.
> (REG_EAX): Likewise.
> (REG_TRAPNO): Likewise.
> (REG_ERR): Likewise.
> (REG_EIP): Likewise.
> (REG_CS): Likewise.
> (REG_EFL): Likewise.
> (REG_UESP): Likewise.
> (REG_SS): Likewise.
> * sysdeps/m68k/sys/ucontext.h (R_D0): Likewise.
> (R_D1): Likewise.
> (R_D2): Likewise.
> (R_D3): Likewise.
> (R_D4): Likewise.
> (R_D5): Likewise.
> (R_D6): Likewise.
> (R_D7): Likewise.
> (R_A0): Likewise.
> (R_A1): Likewise.
> (R_A2): Likewise.
> (R_A3): Likewise.
> (R_A4): Likewise.
> (R_A5): Likewise.
> (R_A6): Likewise.
> (R_A7): Likewise.
> (R_SP): Likewise.
> (R_PC): Likewise.
> (R_PS): Likewise.
> (fpregset_t): Likewise.
> (MCONTEXT_VERSION): Likewise.
> * sysdeps/mips/sys/ucontext.h (CTX_R0): Likewise.
> (CTX_AT): Likewise.
> (CTX_V0): Likewise.
> (CTX_V1): Likewise.
> (CTX_A0): Likewise.
> (CTX_A1): Likewise.
> (CTX_A2): Likewise.
> (CTX_A3): Likewise.
> (CTX_T0): Likewise.
> (CTX_T1): Likewise.
> (CTX_T2): Likewise.
> (CTX_T3): Likewise.
> (CTX_T4): Likewise.
> (CTX_T5): Likewise.
> (CTX_T6): Likewise.
> (CTX_T7): Likewise.
> (CTX_S0): Likewise.
> (CTX_S1): Likewise.
> (CTX_S2): Likewise.
> (CTX_S3): Likewise.
> (CTX_S4): Likewise.
> (CTX_S5): Likewise.
> (CTX_S6): Likewise.
> (CTX_S7): Likewise.
> (CTX_T8): Likewise.
> (CTX_T9): Likewise.
> (CTX_K0): Likewise.
> (CTX_K1): Likewise.
> (CTX_GP): Likewise.
> (CTX_SP): Likewise.
> (CTX_S8): Likewise.
> (CTX_RA): Likewise.
> (CTX_MDLO): Likewise.
> (CTX_MDHI): Likewise.
> (CTX_CAUSE): Likewise.
> (CTX_EPC): Likewise.
> * sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h: Condition
> inclusion of <sys/procfs.h> on [__USE_MISC].
> (greg_t): Condition on [__USE_MISC].
> (gregset_t): Likewise.
> (fpregset_t): Likewise.
> * sysdeps/unix/sysv/linux/arm/sys/ucontext.h (greg_t): Likewise.
> (NGREG): Likewise.
> (gregset_t): Likewise.
> (REG_R0): Likewise.
> (REG_R1): Likewise.
> (REG_R2): Likewise.
> (REG_R3): Likewise.
> (REG_R4): Likewise.
> (REG_R5): Likewise.
> (REG_R6): Likewise.
> (REG_R7): Likewise.
> (REG_R8): Likewise.
> (REG_R9): Likewise.
> (REG_R10): Likewise.
> (REG_R11): Likewise.
> (REG_R12): Likewise.
> (REG_R13): Likewise.
> (REG_R14): Likewise.
> (REG_R15): Likewise.
> (struct _libc_fpstate): Likewise.
> (fpregset_t): Likewise.
> * sysdeps/unix/sysv/linux/hppa/sys/ucontext.h (NGREG): Likewise.
> (NFPREG): Likewise.
> (gregset_t): Likewise.
> (fpregset_t): Likewise.
> * sysdeps/unix/sysv/linux/m68k/sys/ucontext.h (R_D0): Likewise.
> (R_D1): Likewise.
> (R_D2): Likewise.
> (R_D3): Likewise.
> (R_D4): Likewise.
> (R_D5): Likewise.
> (R_D6): Likewise.
> (R_D7): Likewise.
> (R_A0): Likewise.
> (R_A1): Likewise.
> (R_A2): Likewise.
> (R_A3): Likewise.
> (R_A4): Likewise.
> (R_A5): Likewise.
> (R_A6): Likewise.
> (R_A7): Likewise.
> (R_SP): Likewise.
> (R_PC): Likewise.
> (R_PS): Likewise.
> (fpregset_t): Likewise.
> (MCONTEXT_VERSION): Likewise.
> * sysdeps/unix/sysv/linux/nios2/sys/ucontext.h (MCONTEXT_VERSION):
> Likewise.
> * sysdeps/unix/sysv/linux/sh/sys/ucontext.h (REG_R0): Likewise.
> (REG_R1): Likewise.
> (REG_R2): Likewise.
> (REG_R3): Likewise.
> (REG_R4): Likewise.
> (REG_R5): Likewise.
> (REG_R6): Likewise.
> (REG_R7): Likewise.
> (REG_R8): Likewise.
> (REG_R9): Likewise.
> (REG_R10): Likewise.
> (REG_R11): Likewise.
> (REG_R12): Likewise.
> (REG_R13): Likewise.
> (REG_R14): Likewise.
> (REG_R15): Likewise.
> * sysdeps/unix/sysv/linux/tile/sys/ucontext.h: Condition inclusion
> of <arch/abi.h> on [__USE_MISC].
> (greg_t): Condition on [__USE_MISC].
> (NGREG): Likewise.
> (gregset_t): Likewise.
>
> diff --git a/sysdeps/arm/sys/ucontext.h b/sysdeps/arm/sys/ucontext.h
> index f2cc43d..09fe418 100644
> --- a/sysdeps/arm/sys/ucontext.h
> +++ b/sysdeps/arm/sys/ucontext.h
> @@ -37,42 +37,44 @@ typedef int greg_t;
> /* Container for all general registers. */
> typedef greg_t gregset_t[NGREG];
>
> +#ifdef __USE_MISC
> /* Number of each register is the `gregset_t' array. */
> enum
> {
> R0 = 0,
> -#define R0 R0
> +# define R0 R0
> R1 = 1,
> -#define R1 R1
> +# define R1 R1
> R2 = 2,
> -#define R2 R2
> +# define R2 R2
> R3 = 3,
> -#define R3 R3
> +# define R3 R3
> R4 = 4,
> -#define R4 R4
> +# define R4 R4
> R5 = 5,
> -#define R5 R5
> +# define R5 R5
> R6 = 6,
> -#define R6 R6
> +# define R6 R6
> R7 = 7,
> -#define R7 R7
> +# define R7 R7
> R8 = 8,
> -#define R8 R8
> +# define R8 R8
> R9 = 9,
> -#define R9 R9
> +# define R9 R9
> R10 = 10,
> -#define R10 R10
> +# define R10 R10
> R11 = 11,
> -#define R11 R11
> +# define R11 R11
> R12 = 12,
> -#define R12 R12
> +# define R12 R12
> R13 = 13,
> -#define R13 R13
> +# define R13 R13
> R14 = 14,
> -#define R14 R14
> +# define R14 R14
> R15 = 15,
> -#define R15 R15
> +# define R15 R15
> };
> +#endif
>
> /* Structure to describe FPU registers. */
> typedef struct fpregset
> diff --git a/sysdeps/i386/sys/ucontext.h b/sysdeps/i386/sys/ucontext.h
> index 055d4aa..c632e50 100644
> --- a/sysdeps/i386/sys/ucontext.h
> +++ b/sysdeps/i386/sys/ucontext.h
> @@ -38,48 +38,50 @@ typedef int greg_t;
> /* Container for all general registers. */
> typedef greg_t gregset_t[NGREG];
>
> +#ifdef __USE_MISC
> /* Number of each register is the `gregset_t' array. */
> enum
> {
> REG_GS = 0,
> -#define REG_GS REG_GS
> +# define REG_GS REG_GS
> REG_FS,
> -#define REG_FS REG_FS
> +# define REG_FS REG_FS
> REG_ES,
> -#define REG_ES REG_ES
> +# define REG_ES REG_ES
> REG_DS,
> -#define REG_DS REG_DS
> +# define REG_DS REG_DS
> REG_EDI,
> -#define REG_EDI REG_EDI
> +# define REG_EDI REG_EDI
> REG_ESI,
> -#define REG_ESI REG_ESI
> +# define REG_ESI REG_ESI
> REG_EBP,
> -#define REG_EBP REG_EBP
> +# define REG_EBP REG_EBP
> REG_ESP,
> -#define REG_ESP REG_ESP
> +# define REG_ESP REG_ESP
> REG_EBX,
> -#define REG_EBX REG_EBX
> +# define REG_EBX REG_EBX
> REG_EDX,
> -#define REG_EDX REG_EDX
> +# define REG_EDX REG_EDX
> REG_ECX,
> -#define REG_ECX REG_ECX
> +# define REG_ECX REG_ECX
> REG_EAX,
> -#define REG_EAX REG_EAX
> +# define REG_EAX REG_EAX
> REG_TRAPNO,
> -#define REG_TRAPNO REG_TRAPNO
> +# define REG_TRAPNO REG_TRAPNO
> REG_ERR,
> -#define REG_ERR REG_ERR
> +# define REG_ERR REG_ERR
> REG_EIP,
> -#define REG_EIP REG_EIP
> +# define REG_EIP REG_EIP
> REG_CS,
> -#define REG_CS REG_CS
> +# define REG_CS REG_CS
> REG_EFL,
> -#define REG_EFL REG_EFL
> +# define REG_EFL REG_EFL
> REG_UESP,
> -#define REG_UESP REG_UESP
> +# define REG_UESP REG_UESP
> REG_SS
> -#define REG_SS REG_SS
> +# define REG_SS REG_SS
> };
> +#endif
>
> /* Structure to describe FPU registers. */
> typedef struct fpregset
> diff --git a/sysdeps/m68k/sys/ucontext.h b/sysdeps/m68k/sys/ucontext.h
> index 1a90751..cbec1db 100644
> --- a/sysdeps/m68k/sys/ucontext.h
> +++ b/sysdeps/m68k/sys/ucontext.h
> @@ -38,47 +38,48 @@ typedef int greg_t;
> /* Container for all general registers. */
> typedef greg_t gregset_t[NGREG];
>
> +#ifdef __USE_MISC
> /* Number of each register is the `gregset_t' array. */
> enum
> {
> R_D0 = 0,
> -#define R_D0 R_D0
> +# define R_D0 R_D0
> R_D1 = 1,
> -#define R_D1 R_D1
> +# define R_D1 R_D1
> R_D2 = 2,
> -#define R_D2 R_D2
> +# define R_D2 R_D2
> R_D3 = 3,
> -#define R_D3 R_D3
> +# define R_D3 R_D3
> R_D4 = 4,
> -#define R_D4 R_D4
> +# define R_D4 R_D4
> R_D5 = 5,
> -#define R_D5 R_D5
> +# define R_D5 R_D5
> R_D6 = 6,
> -#define R_D6 R_D6
> +# define R_D6 R_D6
> R_D7 = 7,
> -#define R_D7 R_D7
> +# define R_D7 R_D7
> R_A0 = 8,
> -#define R_A0 R_A0
> +# define R_A0 R_A0
> R_A1 = 9,
> -#define R_A1 R_A1
> +# define R_A1 R_A1
> R_A2 = 10,
> -#define R_A2 R_A2
> +# define R_A2 R_A2
> R_A3 = 11,
> -#define R_A3 R_A3
> +# define R_A3 R_A3
> R_A4 = 12,
> -#define R_A4 R_A4
> +# define R_A4 R_A4
> R_A5 = 13,
> -#define R_A5 R_A5
> +# define R_A5 R_A5
> R_A6 = 14,
> -#define R_A6 R_A6
> +# define R_A6 R_A6
> R_A7 = 15,
> -#define R_A7 R_A7
> +# define R_A7 R_A7
> R_SP = 15,
> -#define R_SP R_SP
> +# define R_SP R_SP
> R_PC = 16,
> -#define R_PC R_PC
> +# define R_PC R_PC
> R_PS = 17
> -#define R_PS R_PS
> +# define R_PS R_PS
> };
>
> /* Structure to describe FPU registers. */
> @@ -89,6 +90,7 @@ typedef struct fpregset
> int f_fpiaddr;
> int f_fpregs[8][3];
> } fpregset_t;
> +#endif
>
> /* Context to describe whole processor state. */
> typedef struct
> @@ -97,7 +99,9 @@ typedef struct
> gregset_t gregs;
> } mcontext_t;
>
> -#define MCONTEXT_VERSION 1
> +#ifdef __USE_MISC
> +# define MCONTEXT_VERSION 1
> +#endif
>
> /* Userlevel context. */
> typedef struct ucontext
> diff --git a/sysdeps/mips/sys/ucontext.h b/sysdeps/mips/sys/ucontext.h
> index 348b7ef..137246f 100644
> --- a/sysdeps/mips/sys/ucontext.h
> +++ b/sysdeps/mips/sys/ucontext.h
> @@ -44,82 +44,84 @@ typedef __uint64_t greg_t;
> /* Container for all general registers. */
> typedef greg_t gregset_t[NGREG];
>
> +#ifdef __USE_MISC
> /* Number of each register is the `gregset_t' array. */
> enum
> {
> CTX_R0 = 0,
> -#define CTX_R0 CTX_R0
> +# define CTX_R0 CTX_R0
> CTX_AT = 1,
> -#define CTX_AT CTX_AT
> +# define CTX_AT CTX_AT
> CTX_V0 = 2,
> -#define CTX_V0 CTX_V0
> +# define CTX_V0 CTX_V0
> CTX_V1 = 3,
> -#define CTX_V1 CTX_V1
> +# define CTX_V1 CTX_V1
> CTX_A0 = 4,
> -#define CTX_A0 CTX_A0
> +# define CTX_A0 CTX_A0
> CTX_A1 = 5,
> -#define CTX_A1 CTX_A1
> +# define CTX_A1 CTX_A1
> CTX_A2 = 6,
> -#define CTX_A2 CTX_A2
> +# define CTX_A2 CTX_A2
> CTX_A3 = 7,
> -#define CTX_A3 CTX_A3
> +# define CTX_A3 CTX_A3
> CTX_T0 = 8,
> -#define CTX_T0 CTX_T0
> +# define CTX_T0 CTX_T0
> CTX_T1 = 9,
> -#define CTX_T1 CTX_T1
> +# define CTX_T1 CTX_T1
> CTX_T2 = 10,
> -#define CTX_T2 CTX_T2
> +# define CTX_T2 CTX_T2
> CTX_T3 = 11,
> -#define CTX_T3 CTX_T3
> +# define CTX_T3 CTX_T3
> CTX_T4 = 12,
> -#define CTX_T4 CTX_T4
> +# define CTX_T4 CTX_T4
> CTX_T5 = 13,
> -#define CTX_T5 CTX_T5
> +# define CTX_T5 CTX_T5
> CTX_T6 = 14,
> -#define CTX_T6 CTX_T6
> +# define CTX_T6 CTX_T6
> CTX_T7 = 15,
> -#define CTX_T7 CTX_T7
> +# define CTX_T7 CTX_T7
> CTX_S0 = 16,
> -#define CTX_S0 CTX_S0
> +# define CTX_S0 CTX_S0
> CTX_S1 = 17,
> -#define CTX_S1 CTX_S1
> +# define CTX_S1 CTX_S1
> CTX_S2 = 18,
> -#define CTX_S2 CTX_S2
> +# define CTX_S2 CTX_S2
> CTX_S3 = 19,
> -#define CTX_S3 CTX_S3
> +# define CTX_S3 CTX_S3
> CTX_S4 = 20,
> -#define CTX_S4 CTX_S4
> +# define CTX_S4 CTX_S4
> CTX_S5 = 21,
> -#define CTX_S5 CTX_S5
> +# define CTX_S5 CTX_S5
> CTX_S6 = 22,
> -#define CTX_S6 CTX_S6
> +# define CTX_S6 CTX_S6
> CTX_S7 = 23,
> -#define CTX_S7 CTX_S7
> +# define CTX_S7 CTX_S7
> CTX_T8 = 24,
> -#define CTX_T8 CTX_T8
> +# define CTX_T8 CTX_T8
> CTX_T9 = 25,
> -#define CTX_T9 CTX_T9
> +# define CTX_T9 CTX_T9
> CTX_K0 = 26,
> -#define CTX_K0 CTX_K0
> +# define CTX_K0 CTX_K0
> CTX_K1 = 27,
> -#define CTX_K1 CTX_K1
> +# define CTX_K1 CTX_K1
> CTX_GP = 28,
> -#define CTX_GP CTX_GP
> +# define CTX_GP CTX_GP
> CTX_SP = 29,
> -#define CTX_SP CTX_SP
> +# define CTX_SP CTX_SP
> CTX_S8 = 30,
> -#define CTX_S8 CTX_S8
> +# define CTX_S8 CTX_S8
> CTX_RA = 31,
> -#define CTX_RA CTX_RA
> +# define CTX_RA CTX_RA
> CTX_MDLO = 32,
> -#define CTX_MDLO CTX_MDLO
> +# define CTX_MDLO CTX_MDLO
> CTX_MDHI = 33,
> -#define CTX_MDHI CTX_MDHI
> +# define CTX_MDHI CTX_MDHI
> CTX_CAUSE = 34,
> -#define CTX_CAUSE CTX_CAUSE
> +# define CTX_CAUSE CTX_CAUSE
> CTX_EPC = 35,
> -#define CTX_EPC CTX_EPC
> +# define CTX_EPC CTX_EPC
> };
> +#endif
>
> /* Structure to describe FPU registers. */
> typedef struct fpregset
> diff --git a/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h b/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
> index 0bf101a..536404d 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
> +++ b/sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h
> @@ -29,7 +29,8 @@
> #include <bits/sigcontext.h>
> #include <bits/sigstack.h>
>
> -#include <sys/procfs.h>
> +#ifdef __USE_MISC
> +# include <sys/procfs.h>
>
>
> typedef elf_greg_t greg_t;
> @@ -39,6 +40,7 @@ typedef elf_gregset_t gregset_t;
>
> /* Structure to describe FPU registers. */
> typedef elf_fpregset_t fpregset_t;
> +#endif
>
> /* Context to describe whole processor state. This only describes
> the core registers; coprocessor registers get saved elsewhere
> diff --git a/sysdeps/unix/sysv/linux/arm/sys/ucontext.h b/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
> index cdd3965..aedeccd 100644
> --- a/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
> +++ b/sysdeps/unix/sysv/linux/arm/sys/ucontext.h
> @@ -29,10 +29,11 @@
> #include <bits/sigstack.h>
>
>
> +#ifdef __USE_MISC
> typedef int greg_t;
>
> /* Number of general registers. */
> -#define NGREG 18
> +# define NGREG 18
>
> /* Container for all general registers. */
> typedef greg_t gregset_t[NGREG];
> @@ -41,37 +42,37 @@ typedef greg_t gregset_t[NGREG];
> enum
> {
> REG_R0 = 0,
> -#define REG_R0 REG_R0
> +# define REG_R0 REG_R0
> REG_R1 = 1,
> -#define REG_R1 REG_R1
> +# define REG_R1 REG_R1
> REG_R2 = 2,
> -#define REG_R2 REG_R2
> +# define REG_R2 REG_R2
> REG_R3 = 3,
> -#define REG_R3 REG_R3
> +# define REG_R3 REG_R3
> REG_R4 = 4,
> -#define REG_R4 REG_R4
> +# define REG_R4 REG_R4
> REG_R5 = 5,
> -#define REG_R5 REG_R5
> +# define REG_R5 REG_R5
> REG_R6 = 6,
> -#define REG_R6 REG_R6
> +# define REG_R6 REG_R6
> REG_R7 = 7,
> -#define REG_R7 REG_R7
> +# define REG_R7 REG_R7
> REG_R8 = 8,
> -#define REG_R8 REG_R8
> +# define REG_R8 REG_R8
> REG_R9 = 9,
> -#define REG_R9 REG_R9
> +# define REG_R9 REG_R9
> REG_R10 = 10,
> -#define REG_R10 REG_R10
> +# define REG_R10 REG_R10
> REG_R11 = 11,
> -#define REG_R11 REG_R11
> +# define REG_R11 REG_R11
> REG_R12 = 12,
> -#define REG_R12 REG_R12
> +# define REG_R12 REG_R12
> REG_R13 = 13,
> -#define REG_R13 REG_R13
> +# define REG_R13 REG_R13
> REG_R14 = 14,
> -#define REG_R14 REG_R14
> +# define REG_R14 REG_R14
> REG_R15 = 15
> -#define REG_R15 REG_R15
> +# define REG_R15 REG_R15
> };
>
> struct _libc_fpstate
> @@ -93,6 +94,7 @@ struct _libc_fpstate
> };
> /* Structure to describe FPU registers. */
> typedef struct _libc_fpstate fpregset_t;
> +#endif
>
> /* Context to describe whole processor state. This only describes
> the core registers; coprocessor registers get saved elsewhere
> diff --git a/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h b/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
> index 8faac50..31eb77e 100644
> --- a/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
> +++ b/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
> @@ -29,12 +29,13 @@
> #include <bits/sigstack.h>
>
>
> +#ifdef __USE_MISC
> /* Type for general register. */
> typedef unsigned long int greg_t;
>
> /* Number of general registers. */
> -#define NGREG 80
> -#define NFPREG 32
> +# define NGREG 80
> +# define NFPREG 32
>
> /* Container for all general registers. */
> typedef struct gregset
> @@ -50,6 +51,7 @@ typedef struct fpregset
> {
> double fp_dregs[32];
> } fpregset_t;
> +#endif
>
> /* Context to describe whole processor state. */
> typedef struct sigcontext mcontext_t;
> diff --git a/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h b/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
> index 977b4ee..3c5dce5 100644
> --- a/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
> +++ b/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
> @@ -38,48 +38,50 @@ typedef int greg_t;
> /* Container for all general registers. */
> typedef greg_t gregset_t[NGREG];
>
> +#ifdef __USE_MISC
> /* Number of each register is the `gregset_t' array. */
> enum
> {
> R_D0 = 0,
> -#define R_D0 R_D0
> +# define R_D0 R_D0
> R_D1 = 1,
> -#define R_D1 R_D1
> +# define R_D1 R_D1
> R_D2 = 2,
> -#define R_D2 R_D2
> +# define R_D2 R_D2
> R_D3 = 3,
> -#define R_D3 R_D3
> +# define R_D3 R_D3
> R_D4 = 4,
> -#define R_D4 R_D4
> +# define R_D4 R_D4
> R_D5 = 5,
> -#define R_D5 R_D5
> +# define R_D5 R_D5
> R_D6 = 6,
> -#define R_D6 R_D6
> +# define R_D6 R_D6
> R_D7 = 7,
> -#define R_D7 R_D7
> +# define R_D7 R_D7
> R_A0 = 8,
> -#define R_A0 R_A0
> +# define R_A0 R_A0
> R_A1 = 9,
> -#define R_A1 R_A1
> +# define R_A1 R_A1
> R_A2 = 10,
> -#define R_A2 R_A2
> +# define R_A2 R_A2
> R_A3 = 11,
> -#define R_A3 R_A3
> +# define R_A3 R_A3
> R_A4 = 12,
> -#define R_A4 R_A4
> +# define R_A4 R_A4
> R_A5 = 13,
> -#define R_A5 R_A5
> +# define R_A5 R_A5
> R_A6 = 14,
> -#define R_A6 R_A6
> +# define R_A6 R_A6
> R_A7 = 15,
> -#define R_A7 R_A7
> +# define R_A7 R_A7
> R_SP = 15,
> -#define R_SP R_SP
> +# define R_SP R_SP
> R_PC = 16,
> -#define R_PC R_PC
> +# define R_PC R_PC
> R_PS = 17
> -#define R_PS R_PS
> +# define R_PS R_PS
> };
> +#endif
>
> /* Structure to describe FPU registers. */
> typedef struct fpregset
> @@ -102,7 +104,9 @@ typedef struct
> fpregset_t fpregs;
> } mcontext_t;
>
> -#define MCONTEXT_VERSION 2
> +#ifdef __USE_MISC
> +# define MCONTEXT_VERSION 2
> +#endif
>
> /* Userlevel context. */
> typedef struct ucontext
> diff --git a/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h b/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
> index 6701d7e..3b0a615 100644
> --- a/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
> +++ b/sysdeps/unix/sysv/linux/nios2/sys/ucontext.h
> @@ -32,7 +32,9 @@
>
> /* These definitions must be in sync with the kernel. */
>
> -#define MCONTEXT_VERSION 2
> +#ifdef __USE_MISC
> +# define MCONTEXT_VERSION 2
> +#endif
>
> /* Context to describe whole processor state. */
> typedef struct mcontext
> diff --git a/sysdeps/unix/sysv/linux/sh/sys/ucontext.h b/sysdeps/unix/sysv/linux/sh/sys/ucontext.h
> index 9fa479c..5c6a5e4 100644
> --- a/sysdeps/unix/sysv/linux/sh/sys/ucontext.h
> +++ b/sysdeps/unix/sysv/linux/sh/sys/ucontext.h
> @@ -37,42 +37,44 @@ typedef int greg_t;
> /* Container for all general registers. */
> typedef greg_t gregset_t[NGREG];
>
> +#ifdef __USE_MISC
> /* Number of each register is the `gregset_t' array. */
> enum
> {
> REG_R0 = 0,
> -#define REG_R0 REG_R0
> +# define REG_R0 REG_R0
> REG_R1 = 1,
> -#define REG_R1 REG_R1
> +# define REG_R1 REG_R1
> REG_R2 = 2,
> -#define REG_R2 REG_R2
> +# define REG_R2 REG_R2
> REG_R3 = 3,
> -#define REG_R3 REG_R3
> +# define REG_R3 REG_R3
> REG_R4 = 4,
> -#define REG_R4 REG_R4
> +# define REG_R4 REG_R4
> REG_R5 = 5,
> -#define REG_R5 REG_R5
> +# define REG_R5 REG_R5
> REG_R6 = 6,
> -#define REG_R6 REG_R6
> +# define REG_R6 REG_R6
> REG_R7 = 7,
> -#define REG_R7 REG_R7
> +# define REG_R7 REG_R7
> REG_R8 = 8,
> -#define REG_R8 REG_R8
> +# define REG_R8 REG_R8
> REG_R9 = 9,
> -#define REG_R9 REG_R9
> +# define REG_R9 REG_R9
> REG_R10 = 10,
> -#define REG_R10 REG_R10
> +# define REG_R10 REG_R10
> REG_R11 = 11,
> -#define REG_R11 REG_R11
> +# define REG_R11 REG_R11
> REG_R12 = 12,
> -#define REG_R12 REG_R12
> +# define REG_R12 REG_R12
> REG_R13 = 13,
> -#define REG_R13 REG_R13
> +# define REG_R13 REG_R13
> REG_R14 = 14,
> -#define REG_R14 REG_R14
> +# define REG_R14 REG_R14
> REG_R15 = 15,
> -#define REG_R15 REG_R15
> +# define REG_R15 REG_R15
> };
> +#endif
>
> typedef int freg_t;
>
> diff --git a/sysdeps/unix/sysv/linux/tile/sys/ucontext.h b/sysdeps/unix/sysv/linux/tile/sys/ucontext.h
> index 247f297..95e6dd6 100644
> --- a/sysdeps/unix/sysv/linux/tile/sys/ucontext.h
> +++ b/sysdeps/unix/sysv/linux/tile/sys/ucontext.h
> @@ -27,18 +27,20 @@
> #include <bits/sigcontext.h>
> #include <bits/sigstack.h>
>
> +#ifdef __USE_MISC
> /* Get register type and register names. */
> -#include <arch/abi.h>
> +# include <arch/abi.h>
>
>
> /* Type for general register. */
> typedef uint_reg_t greg_t;
>
> /* Number of general registers. Must agree with <asm/ptrace.h>. */
> -#define NGREG 64
> +# define NGREG 64
>
> /* Container for all general registers. */
> typedef greg_t gregset_t[NGREG];
> +#endif
>
> #ifdef __USE_GNU
> /* Names for interesting registers in the `gregset_t' array. */
>