[Arm-dev] backport request to fix a glibc bug in CentOS 7 aarch64
Jim Perrin
jperrin at centos.org
Fri Oct 16 16:02:13 UTC 2015
Yup. this one works. I'll have a build for you to test early monday.
On 10/15/2015 12:15 PM, Stefano Stabellini wrote:
> 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
>
--
Jim Perrin
The CentOS Project | http://www.centos.org
twitter: @BitIntegrity | GPG Key: FA09AD77
More information about the Arm-dev
mailing list