From: H.J. Lu Date: Thu, 16 Jun 2011 17:42:59 +0000 (+0000) Subject: Support x32 core dump. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bcd823f19e31e93df9818913b1c1313175125bc9;p=binutils-gdb.git Support x32 core dump. 2011-06-16 H.J. Lu * elf64-x86-64.c (elf_x86_64_grok_prstatus): Support x32. (elf_x86_64_grok_psinfo): Likewise. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index fd2c5d89fca..41b22cc11c8 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2011-06-16 H.J. Lu + + * elf64-x86-64.c (elf_x86_64_grok_prstatus): Support x32. + (elf_x86_64_grok_psinfo): Likewise. + 2011-06-16 Nick Clifton * elf.c (elf_find_function): Fail if not provided with a symbol diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c index 8ebd56ed685..de651978761 100644 --- a/bfd/elf64-x86-64.c +++ b/bfd/elf64-x86-64.c @@ -311,6 +311,19 @@ elf_x86_64_grok_prstatus (bfd *abfd, Elf_Internal_Note *note) default: return FALSE; + case 296: /* sizeof(istruct elf_prstatus) on Linux/x32 */ + /* pr_cursig */ + elf_tdata (abfd)->core_signal = bfd_get_16 (abfd, note->descdata + 12); + + /* pr_pid */ + elf_tdata (abfd)->core_lwpid = bfd_get_32 (abfd, note->descdata + 24); + + /* pr_reg */ + offset = 72; + size = 216; + + break; + case 336: /* sizeof(istruct elf_prstatus) on Linux/x86_64 */ /* pr_cursig */ elf_tdata (abfd)->core_signal @@ -340,6 +353,15 @@ elf_x86_64_grok_psinfo (bfd *abfd, Elf_Internal_Note *note) default: return FALSE; + case 124: /* sizeof(struct elf_prpsinfo) on Linux/x32 */ + elf_tdata (abfd)->core_pid + = bfd_get_32 (abfd, note->descdata + 12); + elf_tdata (abfd)->core_program + = _bfd_elfcore_strndup (abfd, note->descdata + 28, 16); + elf_tdata (abfd)->core_command + = _bfd_elfcore_strndup (abfd, note->descdata + 44, 80); + break; + case 136: /* sizeof(struct elf_prpsinfo) on Linux/x86_64 */ elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, note->descdata + 24);