mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-09 00:53:10 +00:00
bfd: Handle note of type NT_X86_SHSTK
This commit is contained in:
committed by
H.J. Lu
parent
10697e844b
commit
c44fc1d6b4
24
bfd/elf.c
24
bfd/elf.c
@@ -10391,6 +10391,12 @@ elfcore_grok_xstatereg (bfd *abfd, Elf_Internal_Note *note)
|
|||||||
return elfcore_make_note_pseudosection (abfd, ".reg-xstate", note);
|
return elfcore_make_note_pseudosection (abfd, ".reg-xstate", note);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
elfcore_grok_sspreg (bfd *abfd, Elf_Internal_Note *note)
|
||||||
|
{
|
||||||
|
return elfcore_make_note_pseudosection (abfd, ".reg-ssp", note);
|
||||||
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
elfcore_grok_ppc_vmx (bfd *abfd, Elf_Internal_Note *note)
|
elfcore_grok_ppc_vmx (bfd *abfd, Elf_Internal_Note *note)
|
||||||
{
|
{
|
||||||
@@ -11086,6 +11092,13 @@ elfcore_grok_note (bfd *abfd, Elf_Internal_Note *note)
|
|||||||
else
|
else
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
case NT_X86_SHSTK: /* Linux CET extension. */
|
||||||
|
if (note->namesz == 6
|
||||||
|
&& strcmp (note->namedata, "LINUX") == 0)
|
||||||
|
return elfcore_grok_sspreg (abfd, note);
|
||||||
|
else
|
||||||
|
return true;
|
||||||
|
|
||||||
case NT_PPC_VMX:
|
case NT_PPC_VMX:
|
||||||
if (note->namesz == 6
|
if (note->namesz == 6
|
||||||
&& strcmp (note->namedata, "LINUX") == 0)
|
&& strcmp (note->namedata, "LINUX") == 0)
|
||||||
@@ -12536,6 +12549,15 @@ elfcore_write_xstatereg (bfd *abfd, char *buf, int *bufsiz,
|
|||||||
note_name, NT_X86_XSTATE, xfpregs, size);
|
note_name, NT_X86_XSTATE, xfpregs, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
elfcore_write_sspreg (bfd *abfd, char *buf, int *bufsiz,
|
||||||
|
const void *ssp, int size)
|
||||||
|
{
|
||||||
|
const char *note_name = "LINUX";
|
||||||
|
return elfcore_write_note (abfd, buf, bufsiz,
|
||||||
|
note_name, NT_X86_SHSTK, ssp, size);
|
||||||
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
elfcore_write_x86_segbases (bfd *abfd, char *buf, int *bufsiz,
|
elfcore_write_x86_segbases (bfd *abfd, char *buf, int *bufsiz,
|
||||||
const void *regs, int size)
|
const void *regs, int size)
|
||||||
@@ -13131,6 +13153,8 @@ elfcore_write_register_note (bfd *abfd,
|
|||||||
return elfcore_write_xstatereg (abfd, buf, bufsiz, data, size);
|
return elfcore_write_xstatereg (abfd, buf, bufsiz, data, size);
|
||||||
if (strcmp (section, ".reg-x86-segbases") == 0)
|
if (strcmp (section, ".reg-x86-segbases") == 0)
|
||||||
return elfcore_write_x86_segbases (abfd, buf, bufsiz, data, size);
|
return elfcore_write_x86_segbases (abfd, buf, bufsiz, data, size);
|
||||||
|
if (strcmp (section, ".reg-ssp") == 0)
|
||||||
|
return elfcore_write_sspreg (abfd, buf, bufsiz, data, size);
|
||||||
if (strcmp (section, ".reg-ppc-vmx") == 0)
|
if (strcmp (section, ".reg-ppc-vmx") == 0)
|
||||||
return elfcore_write_ppc_vmx (abfd, buf, bufsiz, data, size);
|
return elfcore_write_ppc_vmx (abfd, buf, bufsiz, data, size);
|
||||||
if (strcmp (section, ".reg-ppc-vsx") == 0)
|
if (strcmp (section, ".reg-ppc-vsx") == 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user