diff options
author | Jeff Law <law@redhat.com> | 1999-08-11 09:30:20 +0000 |
---|---|---|
committer | Jeff Law <law@redhat.com> | 1999-08-11 09:30:20 +0000 |
commit | 052e120f447791e4134c8939c8a152a5db6f26cb (patch) | |
tree | 861970113d3c5d7cd110d629e1b1f424a855a5a6 /bfd | |
parent | 0811443ae790187cc4efcebc9c1eca1295edc9e0 (diff) | |
download | gdb-052e120f447791e4134c8939c8a152a5db6f26cb.zip gdb-052e120f447791e4134c8939c8a152a5db6f26cb.tar.gz gdb-052e120f447791e4134c8939c8a152a5db6f26cb.tar.bz2 |
* elf-hppa.h (elf_hppa_fake_sections): New function.
* elf32-hppa.c (elf_backend_fake_sections): Define.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 3 | ||||
-rw-r--r-- | bfd/elf-hppa.h | 30 | ||||
-rw-r--r-- | bfd/elf32-hppa.c | 2 |
3 files changed, 35 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index e75a82d..645b118 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,8 @@ Tue Aug 10 12:48:09 1999 Jeffrey A Law (law@cygnus.com) + * elf-hppa.h (elf_hppa_fake_sections): New function. + * elf32-hppa.c (elf_backend_fake_sections): Define. + * elf-hppa.h (elf_hppa_final_write_processing): Update for recent changes to the arch_info structure. diff --git a/bfd/elf-hppa.h b/bfd/elf-hppa.h index b046844..67bc319 100644 --- a/bfd/elf-hppa.h +++ b/bfd/elf-hppa.h @@ -621,3 +621,33 @@ elf_hppa_is_local_label_name (abfd, name) return (name[0] == 'L' && name[1] == '$'); } +/* Set the correct type for an ELF section. We do this by the + section name, which is a hack, but ought to work. */ + +static boolean +elf_hppa_fake_sections (abfd, hdr, sec) + bfd *abfd; + Elf64_Internal_Shdr *hdr; + asection *sec; +{ + register const char *name; + + name = bfd_get_section_name (abfd, sec); + + if (strcmp (name, ".PARISC.unwind") == 0) + { + section *sec; + hdr->sh_type = SHT_LOPROC + 1; + /* ?!? How are unwinds supposed to work for symbols in arbitrary + sections? Or what if we have multiple .text sections in a single + .o file? HP really messed up on this one. */ + sec = bfd_get_section_by_name (abfd, ".text"); + if (sec != NULL) + hdr->sh_info = elf_section_data (sec)->this_idx; + + /* I have no idea if this is really necessary or what it means. */ + hdr->sh_entsize = 4; + } + return true; +} + diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c index 5f4935e..cc95534 100644 --- a/bfd/elf32-hppa.c +++ b/bfd/elf32-hppa.c @@ -1317,6 +1317,8 @@ error_return: #define elf_backend_add_symbol_hook elf32_hppa_add_symbol_hook #define bfd_elf32_bfd_link_hash_table_create \ elf32_hppa_link_hash_table_create +#define elf_backend_fake_sections elf_hppa_fake_sections + #define TARGET_BIG_SYM bfd_elf32_hppa_vec #define TARGET_BIG_NAME "elf32-hppa" |