[PATCH v2] bfd: Add minimal support to handle note that describes xsave layout

Balasubrmanian, Vignesh Vignesh.Balasubrmanian@amd.com
Mon Dec 8 07:57:08 GMT 2025
[AMD Official Use Only - AMD Internal Distribution Only]

Thanks Jan,

Below are a couple of changes made in V2.

Added macro for ".reg-xsave-layout" and used dashes instead of dots.
Modified subject line according to the code in the patch.

thanks,
Vigneshbalu.


-----Original Message-----
From: Jan Beulich <jbeulich@suse.com>
Sent: Monday, December 8, 2025 12:54 PM
To: Balasubrmanian, Vignesh <Vignesh.Balasubrmanian@amd.com>
Cc: binutils@sourceware.org; George, Jini Susan <JiniSusan.George@amd.com>; christina.schimpe@intel.com; Sharma, Alok Kumar <AlokKumar.Sharma@amd.com>; jhb@FreeBSD.org; simark@simark.ca
Subject: Re: [PATCH v2] bfd: Add minimal support to handle note that describes xsave layout

Caution: This message originated from an External Source. Use proper caution when opening attachments, clicking links, or responding.


On 08.12.2025 06:21, Balasubrmanian, Vignesh wrote:
> [AMD Official Use Only - AMD Internal Distribution Only]
>
> I'm sorry for the oversight on this, juggling between paternity and other priorities.
>
> Addressed your review comments from V1 in this.
> Would you like me to resend this patch with above update on the commit message ?

"Addressed review comments" isn't a useful piece of information for review purposes. I don't suppose you expect everyone to recall what comments were given? Such a summary can be pretty brief, but it's pretty helpful to be there.

As to re-sending: That's up to you; I'd be fine (for this instance) if you simply replied by clarifying what was changed.

Jan

> -----Original Message-----
> From: Jan Beulich <jbeulich@suse.com>
> Sent: Friday, October 10, 2025 12:13 PM
> To: Balasubrmanian, Vignesh <Vignesh.Balasubrmanian@amd.com>
> Cc: binutils@sourceware.org; George, Jini Susan
> <JiniSusan.George@amd.com>; christina.schimpe@intel.com; Sharma, Alok
> Kumar <AlokKumar.Sharma@amd.com>; jhb@FreeBSD.org; simark@simark.ca
> Subject: Re: [PATCH v2] bfd: Add minimal support to handle note that
> describes xsave layout
>
> Caution: This message originated from an External Source. Use proper caution when opening attachments, clicking links, or responding.
>
>
> On 29.09.2025 04:10, Vignesh Balasubramanian wrote:
>> This note section is already supported by Linux kernel.
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/co
>> m
>> mit/arch/x86/kernel/fpu/xstate.c?id=ba386777a30b38dabcc7fb8a89ec2869a
>> 0
>> 9915f7
>>
>> Co-Authored-By: Jini Susan George <jinisusan.george@amd.com>
>> ---
>>  bfd/elf-bfd.h        |  2 ++
>>  bfd/elf.c            | 24 +++++++++++++++++++++++-
>>  binutils/readelf.c   |  2 ++
>>  include/elf/common.h |  2 ++
>>  4 files changed, 29 insertions(+), 1 deletion(-)
>
> While this looks all plausible, can you please clarify what was changed in v2?
>
> Jan
>
>> diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index
>> 9ce81ebd314..2877d82b907 100644
>> --- a/bfd/elf-bfd.h
>> +++ b/bfd/elf-bfd.h
>> @@ -2926,6 +2926,8 @@ extern char *elfcore_write_prxfpreg
>>    (bfd *, char *, int *, const void *, int);  extern char
>> *elfcore_write_xstatereg
>>    (bfd *, char *, int *, const void *, int);
>> +extern char *elfcore_write_xsave_layout
>> +  (bfd *, char *, int *, const void *, int);
>>  extern char *elfcore_write_x86_segbases
>>    (bfd *, char *, int *, const void *, int);  extern char
>> *elfcore_write_i386_tls diff --git a/bfd/elf.c b/bfd/elf.c index
>> bde7414ee21..07e672f07a5 100644
>> --- a/bfd/elf.c
>> +++ b/bfd/elf.c
>> @@ -114,6 +114,7 @@ SECTION
>>  #define NOTE_PSEUDO_SECTION_X86_SEGBASES     ".reg-x86-segbases"
>>  #define NOTE_PSEUDO_SECTION_XFP              ".reg-xfp"
>>  #define NOTE_PSEUDO_SECTION_XSTATE           ".reg-xstate"
>> +#define NOTE_PSEUDO_SECTION_XSAVE_LAYOUT     ".reg-xsave-layout"
>>
>>  static int elf_sort_sections (const void *, const void *);  static
>> bool assign_file_positions_except_relocs (bfd *, struct bfd_link_info
>> *); @@ -10492,6 +10493,14 @@ elfcore_grok_sspreg (bfd *abfd, Elf_Internal_Note *note)
>>    return elfcore_make_note_pseudosection (abfd,
>> NOTE_PSEUDO_SECTION_SSP, note);  }
>>
>> +/* Linux dumps the XSAVE Layout description in a note named "LINUX"
>> +   with a note type of NT_X86_XSAVE_LAYOUT. */ static bool
>> +elfcore_grok_xsave_layout_desc (bfd *abfd, Elf_Internal_Note *note)
>> +{
>> +  return elfcore_make_note_pseudosection (abfd,
>> +NOTE_PSEUDO_SECTION_XSAVE_LAYOUT, note); }
>> +
>>  static bool
>>  elfcore_grok_ppc_vmx (bfd *abfd, Elf_Internal_Note *note)  { @@
>> -11211,6 +11220,7 @@ elfcore_grok_note (bfd *abfd, Elf_Internal_Note *note)
>>       case NT_S390_VXRS_LOW:  return elfcore_grok_s390_vxrs_low (abfd, note);
>>       case NT_X86_SHSTK:      return elfcore_grok_sspreg (abfd, note);
>>       case NT_X86_XSTATE:     return elfcore_grok_xstatereg (abfd, note);
>> +     case NT_X86_XSAVE_LAYOUT: return elfcore_grok_xsave_layout_desc
>> + (abfd, note);
>>       default: break;
>>       }
>>      }
>> @@ -12390,6 +12400,17 @@ elfcore_write_xstatereg (bfd *abfd, char *buf, int *bufsiz,
>>                            note_name, NT_X86_XSTATE, xfpregs, size);
>> }
>>
>> +char *
>> +elfcore_write_xsave_layout (bfd *abfd, char *buf, int *bufsiz,
>> +                         const void *xsave_layout, int size) {
>> +  return elfcore_write_note (abfd, buf, bufsiz,
>> +                          NOTE_NAME_LINUX,
>> +                          NT_X86_XSAVE_LAYOUT,
>> +                          xsave_layout,
>> +                          size);
>> +}
>> +
>>  static char *
>>  elfcore_write_sspreg (bfd *abfd, char *buf, int *bufsiz,
>>                     const void *ssp, int size) @@ -13035,7 +13056,8
>> @@ elfcore_write_register_note (bfd *abfd,
>>        { NOTE_PSEUDO_SECTION_TDESC,            elfcore_write_gdb_tdesc},
>>        { NOTE_PSEUDO_SECTION_X86_SEGBASES,     elfcore_write_x86_segbases},
>>        { NOTE_PSEUDO_SECTION_XFP,              elfcore_write_prxfpreg},
>> -      { NOTE_PSEUDO_SECTION_XSTATE,           elfcore_write_xstatereg} /* NB/ No comma.  */
>> +      { NOTE_PSEUDO_SECTION_XSTATE,           elfcore_write_xstatereg},
>> +      { NOTE_PSEUDO_SECTION_XSAVE_LAYOUT,     elfcore_write_xsave_layout} /* NB/ No comma.  */
>>      };
>>
>>    int i;
>> diff --git a/binutils/readelf.c b/binutils/readelf.c index
>> fd9722c8afc..16f50318da9 100644
>> --- a/binutils/readelf.c
>> +++ b/binutils/readelf.c
>> @@ -21375,6 +21375,8 @@ get_note_type (Filedata * filedata, unsigned e_type)
>>       return _("NT_386_IOPERM (x86 I/O permissions)");
>>        case NT_X86_XSTATE:
>>       return _("NT_X86_XSTATE (x86 XSAVE extended state)");
>> +      case NT_X86_XSAVE_LAYOUT:
>> +     return _("NT_X86_XSAVE_LAYOUT (x86 XSAVE Layout description)");
>>        case NT_X86_CET:
>>       return _("NT_X86_CET (x86 CET state)");
>>        case NT_X86_SHSTK:
>> diff --git a/include/elf/common.h b/include/elf/common.h index
>> 5d0f93ebf56..c0894870fc5 100644
>> --- a/include/elf/common.h
>> +++ b/include/elf/common.h
>> @@ -696,6 +696,8 @@
>>  #define NT_X86_SHSTK 0x204           /* x86 SHSTK state.  */
>>                                       /* This replaces NT_X86_CET (0x203).  */
>>                                       /*   note name must be "LINUX".  */
>> +#define NT_X86_XSAVE_LAYOUT  0x205   /* XSAVE layout description */
>> +                                     /*   note name must be "LINUX".  */
>>  #define NT_S390_HIGH_GPRS 0x300              /* S/390 upper halves of GPRs  */
>>                                       /*   note name must be "LINUX".  */
>>  #define NT_S390_TIMER        0x301           /* S390 timer */
>



More information about the Binutils mailing list