From 6f4286c4f7193606fd6200e46b152ff0934f9cc2 Mon Sep 17 00:00:00 2001 From: Helge Deller Date: Wed, 22 Aug 2018 10:32:53 +0100 Subject: Use the correct constants when setting the section type of HPPA unwind sections. * elf-hppa.h (elf_hppa_fake_sections): Use SHT_PARISC_UNWIND as the section type of the .PARISC.unwind section on 64-bit binaries and SHT_PROGBITS for 32-bit binaries. Add a comment about it. Add comment about the sh_entsize value. --- bfd/ChangeLog | 8 ++++++++ bfd/elf-hppa.h | 11 ++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 6946a65..97ad1a0 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,11 @@ +2018-08-22 Helge Deller + Nick Clifton + + * elf-hppa.h (elf_hppa_fake_sections): Use SHT_PARISC_UNWIND as + the section type of the .PARISC.unwind section on 64-bit binaries + and SHT_PROGBITS for 32-bit binaries. Add a comment about it. + Add comment about the sh_entsize value. + 2018-08-22 Rafeal Auler PR 23560 diff --git a/bfd/elf-hppa.h b/bfd/elf-hppa.h index 9f34a03..3b72140 100644 --- a/bfd/elf-hppa.h +++ b/bfd/elf-hppa.h @@ -889,9 +889,11 @@ elf_hppa_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr, asection *sec) asection *asec; #if ARCH_SIZE == 64 - hdr->sh_type = SHT_LOPROC + 1; + hdr->sh_type = SHT_PARISC_UNWIND; #else - hdr->sh_type = 1; + /* Note - it is not clear why this is not SHT_PARISC_UNWIND as well. + Presumably it is a historical constraint, so leave it as it is. */ + hdr->sh_type = SHT_PROGBITS; #endif /* ?!? How are unwinds supposed to work for symbols in arbitrary sections? Or what if we have multiple .text sections in a single @@ -912,7 +914,10 @@ elf_hppa_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr, asection *sec) } } - /* I have no idea if this is really necessary or what it means. */ + /* The unwind table entries are 16 bytes long, so it is not clear + why this field is set to 4. (The ELF spec says that the sh_entsize + field is a byte quantity, but this is a processor specific section, + so it is allowed to change the rules). Leave as it is for now. */ hdr->sh_entsize = 4; } return TRUE; -- cgit v1.1