On Wed, 14 Oct 2015, Jim Perrin wrote:
On 10/13/2015 03:47 PM, Jim Perrin wrote:
On 10/13/2015 05:13 AM, Stefano Stabellini wrote:
Any chances we can have that patch in the CentOS 7 aarch64 glibc?
I'll take a look at including it, if you'd be willing to test it out before we consider pushing it as an update.
This patch does not apply to our existing glibc package as there is no sysdeps/unix/sysv/linux/aarch64/* to update. If you can come up with a patch that addresses the issue you're trying to fix, we can give it a shot.
The same code leaves under ports/ in our glibc package. I have prepended ports/ in the patch filenames (see below) and it works fine.
diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/sys/procfs.h b/ports/sysdeps/unix/sysv/linux/aarch64/sys/procfs.h index b02af8a..211227c 100644 --- a/ports/sysdeps/unix/sysv/linux/aarch64/sys/procfs.h +++ b/ports/sysdeps/unix/sysv/linux/aarch64/sys/procfs.h @@ -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 diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/sys/user.h b/ports/sysdeps/unix/sysv/linux/aarch64/sys/user.h index eceeb38..0ca2715 100644 --- a/ports/sysdeps/unix/sysv/linux/aarch64/sys/user.h +++ b/ports/sysdeps/unix/sysv/linux/aarch64/sys/user.h @@ -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> - -#undef PTRACE_GET_THREAD_AREA -#undef PTRACE_GETHBPREGS -#undef PTRACE_SETHBPREGS +struct user_regs_struct +{ + unsigned long long regs[31]; + unsigned long long sp; + unsigned long long pc; + unsigned long long pstate; +}; + +struct user_fpsimd_struct +{ + __uint128_t vregs[32]; + unsigned int fpsr; + unsigned int fpcr; +};
#endif