* elf-hppa.h (elf_hppa_fake_sections): New function.
authorJeff Law <law@redhat.com>
Wed, 11 Aug 1999 09:30:20 +0000 (09:30 +0000)
committerJeff Law <law@redhat.com>
Wed, 11 Aug 1999 09:30:20 +0000 (09:30 +0000)
        * elf32-hppa.c (elf_backend_fake_sections): Define.

bfd/ChangeLog
bfd/elf-hppa.h
bfd/elf32-hppa.c

index e75a82d..645b118 100644 (file)
@@ -1,5 +1,8 @@
 Tue Aug 10 12:48:09 1999  Jeffrey A Law  (law@cygnus.com)
 
 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.
 
         * elf-hppa.h (elf_hppa_final_write_processing): Update for
         recent changes to the arch_info structure.
 
index b046844..67bc319 100644 (file)
@@ -621,3 +621,33 @@ elf_hppa_is_local_label_name (abfd, name)
   return (name[0] == 'L' && name[1] == '$');
 }
 
   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;
+}
+
index 5f4935e..cc95534 100644 (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_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"
 
 #define TARGET_BIG_SYM         bfd_elf32_hppa_vec
 #define TARGET_BIG_NAME                "elf32-hppa"