* elf-hppa.h (elf_hppa_fake_sections): New function.

* elf32-hppa.c (elf_backend_fake_sections): Define.
This commit is contained in:
Jeff Law 1999-08-11 09:30:20 +00:00
parent 0811443ae7
commit 052e120f44
3 changed files with 35 additions and 0 deletions

View File

@ -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.

View File

@ -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;
}

View File

@ -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"