aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elfxx-aarch64.c26
2 files changed, 32 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 108e4bd..027dcc7 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2015-09-22 Andrew Pinski <apinski@cavium.com>
+
+ * elfxx-aarch64.c (_bfd_aarch64_elf_grok_prstatus):
+ Add ILP32 sized prstatus.
+ (_bfd_aarch64_elf_grok_psinfo): Likewise.
+
2015-09-07 Andrew Pinski <apinski@cavium.com>
* cpu-aarch64.c (compatible):
diff --git a/bfd/elfxx-aarch64.c b/bfd/elfxx-aarch64.c
index 34bd1a6..f34ad9f 100644
--- a/bfd/elfxx-aarch64.c
+++ b/bfd/elfxx-aarch64.c
@@ -556,6 +556,22 @@ _bfd_aarch64_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
size = 272;
break;
+
+ case 352: /* sizeof(struct elf_prstatus) on Linux/arm64_ilp32. */
+ /* 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 = 72;
+ size = 272;
+
+ break;
+
}
/* Make a ".reg/999" section. */
@@ -577,6 +593,15 @@ _bfd_aarch64_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
= _bfd_elfcore_strndup (abfd, note->descdata + 40, 16);
elf_tdata (abfd)->core->command
= _bfd_elfcore_strndup (abfd, note->descdata + 56, 80);
+ break;
+
+ case 124: /* This is sizeof(struct elf_prpsinfo) on Linux/aarch64_ilp32. */
+ 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;
}
/* Note that for some reason, a spurious space is tacked
@@ -598,6 +623,7 @@ char *
_bfd_aarch64_elf_write_core_note (bfd *abfd, char *buf, int *bufsiz, int note_type,
...)
{
+ /* TODO ILP32 support. */
switch (note_type)
{
default: