diff options
-rw-r--r-- | bfd/ChangeLog | 8 | ||||
-rw-r--r-- | 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 <deller@gmx.de> + Nick Clifton <nickc@redhat.com> + + * 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 <rafaelauler@gmail.com> 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; |