mirror of
git://sourceware.org/git/glibc.git
synced 2024-12-09 04:11:27 +08:00
AArch64: Remove asm/ptrace.h inclusion in sys/user.h and sys/procfs.h
This patch fixes an issue observed by the Xen project, where including signal.h exposes various PSR_MODE #defines. This is due to the usage in sys/user.h and sys/procfs.h of the struct user_pt_regs and user_fpsimd_state included via asm/ptrace.h. The namespace pollution this inclusion introduce is already partially fixed with some #undef of the PTRACE_* symbols, but other symbols like the PSR_MODE ones are still present, and undefining them is not safe since a user can include ptrace.h before user.h. My proposition is to define the 2 structures we need in user.h and get rid of the asm/ptrace.h inclusion. Build and make check are clean on AArch64. 2014-05-20 Will Newton <will.newton@linaro.org> Yvan Roux <yvan.roux@linaro.org> * sysdeps/unix/sysv/linux/aarch64/sys/user.h: Remove unused #include of asm/ptrace.h. (PTRACE_GET_THREAD_AREA): Remove #undef. (PTRACE_GETHBPREGS): Likewise. (PTRACE_SETHBPREGS): Likewise. (struct user_regs_struct): New structure. (struct user_fpsimd_struct): New structure. * sysdeps/unix/sysv/linux/aarch64/sys/procfs.h: Remove unused #include of asm/ptrace.h and second #include of sys/user.h. (PTRACE_GET_THREAD_AREA): Remove #undef. (PTRACE_GETHBPREGS): Likewise. (PTRACE_SETHBPREGS): Likewise. (ELF_NGREG): Use new struct user_regs_struct. (elf_fpregset_t): Use new struct user_fpsimd_struct.
This commit is contained in:
parent
af121e371d
commit
7d05a8168b
18
ChangeLog
18
ChangeLog
@ -1,3 +1,21 @@
|
||||
2014-05-20 Will Newton <will.newton@linaro.org>
|
||||
Yvan Roux <yvan.roux@linaro.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/aarch64/sys/user.h: Remove unused
|
||||
#include of asm/ptrace.h.
|
||||
(PTRACE_GET_THREAD_AREA): Remove #undef.
|
||||
(PTRACE_GETHBPREGS): Likewise.
|
||||
(PTRACE_SETHBPREGS): Likewise.
|
||||
(struct user_regs_struct): New structure.
|
||||
(struct user_fpsimd_struct): New structure.
|
||||
* sysdeps/unix/sysv/linux/aarch64/sys/procfs.h: Remove unused
|
||||
#include of asm/ptrace.h and second #include of sys/user.h.
|
||||
(PTRACE_GET_THREAD_AREA): Remove #undef.
|
||||
(PTRACE_GETHBPREGS): Likewise.
|
||||
(PTRACE_SETHBPREGS): Likewise.
|
||||
(ELF_NGREG): Use new struct user_regs_struct.
|
||||
(elf_fpregset_t): Use new struct user_fpsimd_struct.
|
||||
|
||||
2014-05-19 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
|
||||
|
||||
* sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypof.c: Moved ...
|
||||
|
@ -33,17 +33,6 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/user.h>
|
||||
|
||||
/* We need to see the definition of struct pt_regs but do not want the
|
||||
linux PTRACE_* defines since they conflict with the generic eglibc
|
||||
definitions in sys/ptrace.h Hence the undef's below. */
|
||||
#include <asm/ptrace.h>
|
||||
|
||||
#undef PTRACE_GET_THREAD_AREA
|
||||
#undef PTRACE_GETHBPREGS
|
||||
#undef PTRACE_SETHBPREGS
|
||||
|
||||
#include <sys/user.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Type for a general-purpose register. */
|
||||
@ -53,11 +42,11 @@ typedef unsigned long elf_greg_t;
|
||||
pt_regs' directly in the typedef, but tradition says that
|
||||
the register set is an array, which does have some peculiar
|
||||
semantics, so leave it that way. */
|
||||
#define ELF_NGREG (sizeof (struct user_pt_regs) / sizeof(elf_greg_t))
|
||||
#define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof(elf_greg_t))
|
||||
typedef elf_greg_t elf_gregset_t[ELF_NGREG];
|
||||
|
||||
/* Register set for the floating-point registers. */
|
||||
typedef struct user_fpsimd_state elf_fpregset_t;
|
||||
typedef struct user_fpsimd_struct elf_fpregset_t;
|
||||
|
||||
/* Signal info. */
|
||||
struct elf_siginfo
|
||||
|
@ -19,13 +19,19 @@
|
||||
#ifndef _SYS_USER_H
|
||||
#define _SYS_USER_H 1
|
||||
|
||||
/* We need to see the definition of struct pt_regs but do not want the
|
||||
linux PTRACE_* defines since they conflict with the generic glibc
|
||||
definitions in sys/ptrace.h Hence the undef's below. */
|
||||
#include <asm/ptrace.h>
|
||||
struct user_regs_struct
|
||||
{
|
||||
unsigned long long regs[31];
|
||||
unsigned long long sp;
|
||||
unsigned long long pc;
|
||||
unsigned long long pstate;
|
||||
};
|
||||
|
||||
#undef PTRACE_GET_THREAD_AREA
|
||||
#undef PTRACE_GETHBPREGS
|
||||
#undef PTRACE_SETHBPREGS
|
||||
struct user_fpsimd_struct
|
||||
{
|
||||
__uint128_t vregs[32];
|
||||
unsigned int fpsr;
|
||||
unsigned int fpcr;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user