summaryrefslogtreecommitdiffstats
path: root/bfd/elf32-s390.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2001-12-07 12:23:26 +0000
committerNick Clifton <nickc@redhat.com>2001-12-07 12:23:26 +0000
commit979f4a38ff543e843c51e1565e346106669ba756 (patch)
treea389ab50e4daf314a29ddf623c1aa61c1a115f1b /bfd/elf32-s390.c
parentb6af0555b58f4a5996fd3590f2cb40d3664136f7 (diff)
downloadppe42-binutils-979f4a38ff543e843c51e1565e346106669ba756.tar.gz
ppe42-binutils-979f4a38ff543e843c51e1565e346106669ba756.zip
Allow GDB to read general-purpose registers from Linux S/390 core files.
Diffstat (limited to 'bfd/elf32-s390.c')
-rw-r--r--bfd/elf32-s390.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/bfd/elf32-s390.c b/bfd/elf32-s390.c
index ac1c6d0035..af2c7ad639 100644
--- a/bfd/elf32-s390.c
+++ b/bfd/elf32-s390.c
@@ -2378,6 +2378,37 @@ elf_s390_object_p (abfd)
return bfd_default_set_arch_mach (abfd, bfd_arch_s390, bfd_mach_s390_esa);
}
+static boolean
+elf_s390_grok_prstatus (abfd, note)
+ bfd * abfd;
+ Elf_Internal_Note * note;
+{
+ int offset;
+ unsigned int raw_size;
+
+ switch (note->descsz)
+ {
+ default:
+ return false;
+
+ case 224: /* S/390 Linux. */
+ /* pr_cursig */
+ elf_tdata (abfd)->core_signal = bfd_get_16 (abfd, note->descdata + 12);
+
+ /* pr_pid */
+ elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, note->descdata + 24);
+
+ /* pr_reg */
+ offset = 72;
+ raw_size = 144;
+ break;
+ }
+
+ /* Make a ".reg/999" section. */
+ return _bfd_elfcore_make_pseudosection (abfd, ".reg",
+ raw_size, note->descpos + offset);
+}
+
#define TARGET_BIG_SYM bfd_elf32_s390_vec
#define TARGET_BIG_NAME "elf32-s390"
#define ELF_ARCH bfd_arch_s390
@@ -2411,6 +2442,7 @@ elf_s390_object_p (abfd)
#define elf_backend_relocate_section elf_s390_relocate_section
#define elf_backend_size_dynamic_sections elf_s390_size_dynamic_sections
#define elf_backend_reloc_type_class elf_s390_reloc_type_class
+#define elf_backend_grok_prstatus elf_s390_grok_prstatus
#define elf_backend_object_p elf_s390_object_p
OpenPOWER on IntegriCloud