mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:51:15 +08:00
Add NT_386_XSTATE.
bfd/ 2010-02-02 H.J. Lu <hongjiu.lu@intel.com> * elf-bfd.h (elfcore_write_xstatereg): New. * elf.c (elfcore_grok_xstatereg): New. (elfcore_write_xstatereg): Likewise. (elfcore_grok_note): Handle NT_X86_XSTATE. (elfcore_write_register_note): Handle .reg-xstate section. binutils/ 2010-02-02 H.J. Lu <hongjiu.lu@intel.com> * readelf.c (get_note_type): Handle NT_X86_XSTATE. include/elf/ 2010-02-02 H.J. Lu <hongjiu.lu@intel.com> * common.h (NT_386_XSTATE): New.
This commit is contained in:
parent
0718675c76
commit
4339cae0bb
@ -1,3 +1,12 @@
|
||||
2010-02-02 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elf-bfd.h (elfcore_write_xstatereg): New.
|
||||
|
||||
* elf.c (elfcore_grok_xstatereg): New.
|
||||
(elfcore_write_xstatereg): Likewise.
|
||||
(elfcore_grok_note): Handle NT_X86_XSTATE.
|
||||
(elfcore_write_register_note): Handle .reg-xstate section.
|
||||
|
||||
2010-02-01 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* som.c (som_write_ar_hdr): Define this macro.
|
||||
|
@ -2149,6 +2149,8 @@ extern char *elfcore_write_prfpreg
|
||||
(bfd *, char *, int *, const void *, int);
|
||||
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_ppc_vmx
|
||||
(bfd *, char *, int *, const void *, int);
|
||||
extern char *elfcore_write_ppc_vsx
|
||||
|
28
bfd/elf.c
28
bfd/elf.c
@ -7628,6 +7628,16 @@ elfcore_grok_prxfpreg (bfd *abfd, Elf_Internal_Note *note)
|
||||
return elfcore_make_note_pseudosection (abfd, ".reg-xfp", note);
|
||||
}
|
||||
|
||||
/* Linux dumps the Intel XSAVE extended state in a note named "LINUX"
|
||||
with a note type of NT_X86_XSTATE. Just include the whole note's
|
||||
contents literally. */
|
||||
|
||||
static bfd_boolean
|
||||
elfcore_grok_xstatereg (bfd *abfd, Elf_Internal_Note *note)
|
||||
{
|
||||
return elfcore_make_note_pseudosection (abfd, ".reg-xstate", note);
|
||||
}
|
||||
|
||||
static bfd_boolean
|
||||
elfcore_grok_ppc_vmx (bfd *abfd, Elf_Internal_Note *note)
|
||||
{
|
||||
@ -7996,6 +8006,13 @@ elfcore_grok_note (bfd *abfd, Elf_Internal_Note *note)
|
||||
else
|
||||
return TRUE;
|
||||
|
||||
case NT_X86_XSTATE: /* Linux XSAVE extension */
|
||||
if (note->namesz == 6
|
||||
&& strcmp (note->namedata, "LINUX") == 0)
|
||||
return elfcore_grok_xstatereg (abfd, note);
|
||||
else
|
||||
return TRUE;
|
||||
|
||||
case NT_PPC_VMX:
|
||||
if (note->namesz == 6
|
||||
&& strcmp (note->namedata, "LINUX") == 0)
|
||||
@ -8635,6 +8652,15 @@ elfcore_write_prxfpreg (bfd *abfd,
|
||||
note_name, NT_PRXFPREG, xfpregs, size);
|
||||
}
|
||||
|
||||
char *
|
||||
elfcore_write_xstatereg (bfd *abfd, char *buf, int *bufsiz,
|
||||
const void *xfpregs, int size)
|
||||
{
|
||||
char *note_name = "LINUX";
|
||||
return elfcore_write_note (abfd, buf, bufsiz,
|
||||
note_name, NT_X86_XSTATE, xfpregs, size);
|
||||
}
|
||||
|
||||
char *
|
||||
elfcore_write_ppc_vmx (bfd *abfd,
|
||||
char *buf,
|
||||
@ -8684,6 +8710,8 @@ elfcore_write_register_note (bfd *abfd,
|
||||
return elfcore_write_prfpreg (abfd, buf, bufsiz, data, size);
|
||||
if (strcmp (section, ".reg-xfp") == 0)
|
||||
return elfcore_write_prxfpreg (abfd, buf, bufsiz, data, size);
|
||||
if (strcmp (section, ".reg-xstate") == 0)
|
||||
return elfcore_write_xstatereg (abfd, buf, bufsiz, data, size);
|
||||
if (strcmp (section, ".reg-ppc-vmx") == 0)
|
||||
return elfcore_write_ppc_vmx (abfd, buf, bufsiz, data, size);
|
||||
if (strcmp (section, ".reg-ppc-vsx") == 0)
|
||||
|
@ -1,3 +1,7 @@
|
||||
2010-02-02 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* readelf.c (get_note_type): Handle NT_X86_XSTATE.
|
||||
|
||||
2010-02-01 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* objcopy.c (copy_object): Set SEC_LINKER_CREATED when adding
|
||||
|
@ -10415,6 +10415,8 @@ get_note_type (unsigned e_type)
|
||||
return _("NT_PPC_VMX (ppc Altivec registers)");
|
||||
case NT_PPC_VSX:
|
||||
return _("NT_PPC_VSX (ppc VSX registers)");
|
||||
case NT_X86_XSTATE:
|
||||
return _("NT_X86_XSTATE (x86 XSAVE extended state)");
|
||||
case NT_S390_HIGH_GPRS:
|
||||
return _("NT_S390_HIGH_GPRS (s390 upper register halves)");
|
||||
case NT_PSTATUS:
|
||||
|
@ -1,6 +1,10 @@
|
||||
2010-02-02 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* common.h (NT_386_XSTATE): New.
|
||||
|
||||
2010-01-19 Daisuke Hatayama <d.hatayama@jp.fujitsu.com>
|
||||
|
||||
* common.h (PN_XNUM): Define.
|
||||
* common.h (PN_XNUM): Define.
|
||||
|
||||
2009-12-18 Ulrich Weigand <uweigand@de.ibm.com>
|
||||
|
||||
|
@ -513,6 +513,8 @@
|
||||
/* note name must be "LINUX". */
|
||||
#define NT_PPC_VSX 0x102 /* PowerPC VSX registers */
|
||||
/* note name must be "LINUX". */
|
||||
#define NT_X86_XSTATE 0x202 /* x86 XSAVE extended state */
|
||||
/* note name must be "LINUX". */
|
||||
#define NT_S390_HIGH_GPRS 0x300 /* S/390 upper halves of GPRs */
|
||||
/* note name must be "LINUX". */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user