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 | b5eb3d21f0191f13b72b880321f5f7cc2df602e2 (patch) | |
tree | b19093cea1f97e438226a8924165768e82302ac5 /bfd/elf64-x86-64.c | |
parent | 7ad4069a7135c51a3ed46efdf511ed7fa1b93a58 (diff) | |
download | gdb-b5eb3d21f0191f13b72b880321f5f7cc2df602e2.tar.gz |
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 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); |