(elf64_hppa_object_p): Set architecture and machine from elf header flags.
authorAlan Modra <amodra@gmail.com>
Wed, 31 Jan 2001 13:28:50 +0000 (13:28 +0000)
committerAlan Modra <amodra@gmail.com>
Wed, 31 Jan 2001 13:28:50 +0000 (13:28 +0000)
bfd/ChangeLog
bfd/elf64-hppa.c

index e9b8710..6330a85 100644 (file)
@@ -2,6 +2,8 @@
 
        * elf64-hppa.c (elf64_hppa_elf_get_symbol_type): New function.
        (elf_backend_get_symbol_type): Define.
+       (elf64_hppa_object_p): Set architecture and machine from elf
+       header flags.
 
 2001-01-30  Curtis L. Janssen  <cljanss@ca.sandia.gov>
 
index 7aa4e18..1b3a548 100644 (file)
@@ -358,8 +358,21 @@ static boolean
 elf64_hppa_object_p (abfd)
      bfd *abfd;
 {
-  /* Set the right machine number for an HPPA ELF file.  */
-  return bfd_default_set_arch_mach (abfd, bfd_arch_hppa, 25);
+  unsigned int flags = elf_elfheader (abfd)->e_flags;
+
+  switch (flags & (EF_PARISC_ARCH | EF_PARISC_WIDE))
+    {
+    case EFA_PARISC_1_0:
+      return bfd_default_set_arch_mach (abfd, bfd_arch_hppa, 10);
+    case EFA_PARISC_1_1:
+      return bfd_default_set_arch_mach (abfd, bfd_arch_hppa, 11);
+    case EFA_PARISC_2_0:
+      return bfd_default_set_arch_mach (abfd, bfd_arch_hppa, 20);
+    case EFA_PARISC_2_0 | EF_PARISC_WIDE:
+      return bfd_default_set_arch_mach (abfd, bfd_arch_hppa, 25);
+    }
+  /* Don't be fussy.  */
+  return true;
 }
 
 /* Given section type (hdr->sh_type), return a boolean indicating