This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Add elf.h NT_* macros from Linux 4.15 (bug 14890)


On Thu, Feb 01, 2018 at 06:16:25PM +0000, Joseph Myers wrote:
> [Proposed for once the release changes for 2.27, and the post-release 
> changes opening master for development for 2.28, have been committed.]
> 
> Linux 4.15 adds NT_S390_RI_CB to linux/elf.h (and NT_ARM_SVE, which we
> already have in glibc).  This shows up that various other ELF note
> values from linux/elf.h are missing from glibc's elf.h.
> 
> This patch adds the missing values that are relevant to glibc
> architectures.  As elf.h is a general description of the ELF format,
> not necessarily limited to glibc configurations, there's an argument
> for having the remaining NT_* values that Linux uses for non-glibc
> architectures in glibc's elf.h as well, but this patch does not add
> them.
> 
> Adding the NT_PRFPREG name is bug 14890.  That bug also requests
> making the NT_FPREGSET name obsolete.  Given that elf.h is not just
> for Linux but can describe ELF for other operating systems, I don't
> think that a change of name in the Linux kernel is sufficient
> justification for declaring the other name obsolete; there can be
> multiple names for the same note value, even with incompatible
> semantics, if those reflect variants of the ELF format in actual use.
> For example, FreeBSD appears still to have the name NT_FPREGSET
> <https://github.com/freebsd/freebsd/blob/master/sys/sys/elf_common.h>
> (note: I haven't checked whether the FreeBSD kernel actually generates
> such notes or whether this is actually an other-OS definition present
> in FreeBSD's header).
> 
> 2018-02-01  Joseph Myers  <joseph@codesourcery.com>
> 
> 	[BZ #14890]
> 	* elf/elf.h (NT_PRFPREG): New macro.
> 	(NT_S390_VXRS_LOW): Likewise.
> 	(NT_S390_VXRS_HIGH): Likewise.
> 	(NT_S390_GS_CB): Likewise.
> 	(NT_S390_GS_BC): Likewise.
> 	(NT_S390_RI_CB): Likewise.
> 
> diff --git a/elf/elf.h b/elf/elf.h
> index 954f326..59313f5 100644
> --- a/elf/elf.h
> +++ b/elf/elf.h
> @@ -739,6 +739,8 @@ typedef struct
>  /* Legal values for note segment descriptor types for core files. */
>  
>  #define NT_PRSTATUS	1		/* Contains copy of prstatus struct */
> +#define NT_PRFPREG	2		/* Contains copy of fpregset
> +					   struct.  */
>  #define NT_FPREGSET	2		/* Contains copy of fpregset struct */
>  #define NT_PRPSINFO	3		/* Contains copy of prpsinfo struct */
>  #define NT_PRXREG	4		/* Contains copy of prxregset struct */
> @@ -790,6 +792,13 @@ typedef struct
>  #define NT_S390_LAST_BREAK	0x306	/* s390 breaking event address */
>  #define NT_S390_SYSTEM_CALL	0x307	/* s390 system call restart data */
>  #define NT_S390_TDB	0x308		/* s390 transaction diagnostic block */
> +#define NT_S390_VXRS_LOW	0x309	/* s390 vector registers 0-15
> +					   upper half.  */
> +#define NT_S390_VXRS_HIGH	0x30a	/* s390 vector registers 16-31.  */
> +#define NT_S390_GS_CB	0x30b		/* s390 guarded storage registers.  */
> +#define NT_S390_GS_BC	0x30c		/* s390 guarded storage
> +					   broadcast control block.  */
> +#define NT_S390_RI_CB	0x30d		/* s390 runtime instrumentation.  */
>  #define NT_ARM_VFP	0x400		/* ARM VFP/NEON registers */
>  #define NT_ARM_TLS	0x401		/* ARM TLS register */
>  #define NT_ARM_HW_BREAK	0x402		/* ARM hardware breakpoint registers */

I've double-checked that this change matches Linux 4.15 headers.


-- 
ldv

Attachment: signature.asc
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]