diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2011-06-16 17:42:59 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2011-06-16 17:42:59 +0000 |
commit | bcd823f19e31e93df9818913b1c1313175125bc9 (patch) | |
tree | 1da3fc86f004f1c726a92ac6b0dedae329ded711 /bfd/elf64-x86-64.c | |
parent | af61e67f319e2430169d98d3e1af9836bde009fb (diff) | |
download | gdb-bcd823f19e31e93df9818913b1c1313175125bc9.zip gdb-bcd823f19e31e93df9818913b1c1313175125bc9.tar.gz gdb-bcd823f19e31e93df9818913b1c1313175125bc9.tar.bz2 |
Support x32 core dump.
2011-06-16 H.J. Lu <hongjiu.lu@intel.com>
* elf64-x86-64.c (elf_x86_64_grok_prstatus): Support x32.
(elf_x86_64_grok_psinfo): Likewise.
Diffstat (limited to 'bfd/elf64-x86-64.c')
-rw-r--r-- | bfd/elf64-x86-64.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c index 8ebd56e..de65197 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); |