diff options
author | Yufeng Zhang <yufeng.zhang@arm.com> | 2012-12-06 15:56:38 +0000 |
---|---|---|
committer | Yufeng Zhang <yufeng.zhang@arm.com> | 2012-12-06 15:56:38 +0000 |
commit | cd6fa7fd8801453ab5caef588fc772d14cb1ee9a (patch) | |
tree | 57f7c25d7a5dc99c261af63ab0d1ccefd9cd0e7e /bfd | |
parent | 67a324470a3774540b7fef7e02bdebf160e7a913 (diff) | |
download | gdb-cd6fa7fd8801453ab5caef588fc772d14cb1ee9a.zip gdb-cd6fa7fd8801453ab5caef588fc772d14cb1ee9a.tar.gz gdb-cd6fa7fd8801453ab5caef588fc772d14cb1ee9a.tar.bz2 |
bfd/
2012-12-06 Yufeng Zhang <yufeng.zhang@arm.com>
* elf64-aarch64.c (elf64_aarch64_grok_prstatus): New function.
(elf_backend_grok_prstatus): Define to elf64_aarch64_grok_prstatus.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/elf64-aarch64.c | 36 |
2 files changed, 41 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 3b91a85..1b6e965 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2012-12-06 Yufeng Zhang <yufeng.zhang@arm.com> + + * elf64-aarch64.c (elf64_aarch64_grok_prstatus): New function. + (elf_backend_grok_prstatus): Define to elf64_aarch64_grok_prstatus. + 2012-12-06 Alan Modra <amodra@gmail.com> * elfxx-mips.c (allocate_dynrelocs): Correct test for symbol diff --git a/bfd/elf64-aarch64.c b/bfd/elf64-aarch64.c index 423fb9b..708b362 100644 --- a/bfd/elf64-aarch64.c +++ b/bfd/elf64-aarch64.c @@ -1516,11 +1516,47 @@ elf64_aarch64_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, return NULL; } +/* Support for core dump NOTE sections. */ + +static bfd_boolean +elf64_aarch64_grok_prstatus (bfd *abfd, Elf_Internal_Note *note) +{ + int offset; + size_t size; + + switch (note->descsz) + { + default: + return FALSE; + + case 408: /* sizeof(struct elf_prstatus) on Linux/arm64. */ + /* 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 + 32); + + /* pr_reg */ + offset = 112; + size = 288; + + break; + } + + /* Make a ".reg/999" section. */ + return _bfd_elfcore_make_pseudosection (abfd, ".reg", + size, note->descpos + offset); +} + #define TARGET_LITTLE_SYM bfd_elf64_littleaarch64_vec #define TARGET_LITTLE_NAME "elf64-littleaarch64" #define TARGET_BIG_SYM bfd_elf64_bigaarch64_vec #define TARGET_BIG_NAME "elf64-bigaarch64" +#define elf_backend_grok_prstatus elf64_aarch64_grok_prstatus + typedef unsigned long int insn32; /* The linker script knows the section names for placement. |