aboutsummaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2018-10-10 13:14:56 +1030
committerAlan Modra <amodra@gmail.com>2018-10-10 13:32:18 +1030
commit43f6cd0588a735c202934789d67b6ed4302f255d (patch)
tree386ca521a6a43d1170890db41881f756fc9a1752 /binutils
parent8ab159a96565be6e60f8d88ba3a4638116f7e9d3 (diff)
downloadbinutils-43f6cd0588a735c202934789d67b6ed4302f255d.zip
binutils-43f6cd0588a735c202934789d67b6ed4302f255d.tar.gz
binutils-43f6cd0588a735c202934789d67b6ed4302f255d.tar.bz2
HPPA64 .PARISC.unwind entries
.PARISC.unwind has 32-bit addresses in both 32-bit ELF and 64-bit ELF. Well, strictly speaking, the 32-bit "start" and "end" fields are segment relative offsets. (The 64-bit ABI says so, while the 32-bit ABI says they are addresses but it appears they are segment relative offsets in practice. Likely the 32-bit ABI lacks an update.) * readelf.c (hppa_process_unwind): Don't use eh_addr_size to calculate number of entries. (slurp_hppa_unwind_table): Don't use eh_addr_size here either.
Diffstat (limited to 'binutils')
-rw-r--r--binutils/ChangeLog7
-rw-r--r--binutils/readelf.c4
2 files changed, 9 insertions, 2 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 09436cc..fd56834 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,10 @@
+2018-10-10 Helge Deller <deller@gmx.de>
+ Alan Modra <amodra@gmail.com>
+
+ * readelf.c (hppa_process_unwind): Don't use eh_addr_size to
+ calculate number of entries.
+ (slurp_hppa_unwind_table): Don't use eh_addr_size here either.
+
2018-10-10 Alan Modra <amodra@gmail.com>
* objdump.c (dump_dwarf): Set s12z eh_addr_size to 4.
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 2748664..41f55ee 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -8065,7 +8065,7 @@ slurp_hppa_unwind_table (Filedata * filedata,
i = rp->r_offset / unw_ent_size;
- switch ((rp->r_offset % unw_ent_size) / eh_addr_size)
+ switch ((rp->r_offset % unw_ent_size) / 4)
{
case 0:
aux->table[i].start.section = sym->st_shndx;
@@ -8133,7 +8133,7 @@ hppa_process_unwind (Filedata * filedata)
{
if (streq (SECTION_NAME (sec), ".PARISC.unwind"))
{
- unsigned long num_unwind = sec->sh_size / (2 * eh_addr_size + 8);
+ unsigned long num_unwind = sec->sh_size / 16;
printf (ngettext ("\nUnwind section '%s' at offset 0x%lx "
"contains %lu entry:\n",