OSDN Git Service

Add support for IA-64 specific elf header flags.
authorJim Wilson <wilson@tuliptree.org>
Mon, 14 Aug 2000 20:13:39 +0000 (20:13 +0000)
committerJim Wilson <wilson@tuliptree.org>
Mon, 14 Aug 2000 20:13:39 +0000 (20:13 +0000)
bfd/
2000-08-14  Jim Wilson  <wilson@cygnus.com>
* elf64-ia64.c (elf64_ia64_merge_private_bfd_data): Handle
EF_IA_64_REDUCEDFP, EF_IA_64_CONS_GP, and EF_IA_64_NOFUNCDESC_CONS_GP.
(elf64_ia64_print_private_bfd_data): Likewise.  Also handle
EF_IA_64_ABSOLUTE.
gas/
2000-08-14  Jim Wilson  <wilson@cygnus.com>
* config/tc-ia64.c (md_longopts): Add -mconstant-gp and -mauto-pic.
(md_parse_option):  Add OPTION_MCONSTANT_GP and OPTION_MAUTO_PIC.
(md_begin): Change assignment to md.flag to OR in the new bit.
include/elf/
2000-08-14  Jim Wilson  <wilson@cygnus.com>
* elf/ia64.h (EF_IA_64_REDUCEDFP, EF_IA_64_CONS_GP,
EF_IA_64_NOFUNCDESC_CONS_GP, EF_IA_64_ABSOLUTE): Define.

bfd/ChangeLog
bfd/elf64-ia64.c
include/elf/ChangeLog
include/elf/ia64.h

index 5f3534c..f58853d 100644 (file)
@@ -1,3 +1,10 @@
+2000-08-14  Jim Wilson  <wilson@cygnus.com>
+
+       * elf64-ia64.c (elf64_ia64_merge_private_bfd_data): Handle
+       EF_IA_64_REDUCEDFP, EF_IA_64_CONS_GP, and EF_IA_64_NOFUNCDESC_CONS_GP.
+       (elf64_ia64_print_private_bfd_data): Likewise.  Also handle
+       EF_IA_64_ABSOLUTE.
+
 2000-08-11  Alexandre Oliva  <aoliva@redhat.com>
 
        * elf32-sh.c (sh_elf_set_mach_from_flags): Make it static.
index 11704e5..f1ea331 100644 (file)
@@ -3974,6 +3974,10 @@ elf64_ia64_merge_private_bfd_data (ibfd, obfd)
   if (in_flags == out_flags)
     return true;
 
+  /* Output has EF_IA_64_REDUCEDFP set only if all inputs have it set.  */
+  if (!(in_flags & EF_IA_64_REDUCEDFP) && (out_flags & EF_IA_64_REDUCEDFP))
+    elf_elfheader (obfd)->e_flags &= ~EF_IA_64_REDUCEDFP;
+
   if ((in_flags & EF_IA_64_TRAPNIL) != (out_flags & EF_IA_64_TRAPNIL))
     {
       (*_bfd_error_handler)
@@ -4001,6 +4005,25 @@ elf64_ia64_merge_private_bfd_data (ibfd, obfd)
       bfd_set_error (bfd_error_bad_value);
       ok = false;
     }
+  if ((in_flags & EF_IA_64_CONS_GP) != (out_flags & EF_IA_64_CONS_GP))
+    {
+      (*_bfd_error_handler)
+       (_("%s: linking constant-gp files with non-constant-gp files"),
+        bfd_get_filename (ibfd));
+
+      bfd_set_error (bfd_error_bad_value);
+      ok = false;
+    }
+  if ((in_flags & EF_IA_64_NOFUNCDESC_CONS_GP)
+      != (out_flags & EF_IA_64_NOFUNCDESC_CONS_GP))
+    {
+      (*_bfd_error_handler)
+       (_("%s: linking auto-pic files with non-auto-pic files"),
+        bfd_get_filename (ibfd));
+
+      bfd_set_error (bfd_error_bad_value);
+      ok = false;
+    }
 
   return ok;
 }
@@ -4015,11 +4038,16 @@ elf64_ia64_print_private_bfd_data (abfd, ptr)
 
   BFD_ASSERT (abfd != NULL && ptr != NULL);
 
-  fprintf (file, "private flags = %s%s%s%s\n",
+  fprintf (file, "private flags = %s%s%s%s%s%s%s%s\n",
           (flags & EF_IA_64_TRAPNIL) ? "TRAPNIL, " : "",
           (flags & EF_IA_64_EXT) ? "EXT, " : "",
           (flags & EF_IA_64_BE) ? "BE, " : "LE, ",
+          (flags & EF_IA_64_REDUCEDFP) ? "REDUCEDFP, " : "",
+          (flags & EF_IA_64_CONS_GP) ? "CONS_GP, " : "",
+          (flags & EF_IA_64_NOFUNCDESC_CONS_GP) ? "NOFUNCDESC_CONS_GP, " : "",
+          (flags & EF_IA_64_ABSOLUTE) ? "ABSOLUTE, " : "",
           (flags & EF_IA_64_ABI64) ? "ABI64" : "ABI32");
+  
   _bfd_elf_print_private_bfd_data (abfd, ptr);
   return true;
 }
index 84ac1b1..b1f69f6 100644 (file)
@@ -1,3 +1,8 @@
+2000-08-14  Jim Wilson  <wilson@cygnus.com>
+
+       * elf/ia64.h (EF_IA_64_REDUCEDFP, EF_IA_64_CONS_GP,
+       EF_IA_64_NOFUNCDESC_CONS_GP, EF_IA_64_ABSOLUTE): Define.
+
 2000-08-07  Nick Clifton  <nickc@cygnus.com>
 
        * ppc.h: Remove spurious CYGNUS LOCAL comments.
index 15847c8..bd7dae5 100644 (file)
@@ -25,7 +25,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 /* Bits in the e_flags field of the Elf64_Ehdr:  */
 
 #define EF_IA_64_MASKOS         0x0000000f     /* os-specific flags */
-#define EF_IA_64_ABI64  (1 << 4)       /* 64-bit ABI */
 #define EF_IA_64_ARCH   0xff000000     /* arch. version mask */
 
 /* ??? These four definitions are not part of the SVR4 ABI.
@@ -36,6 +35,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #define EF_IA_64_BE     (1 << 3)       /* PSR BE bit set (big-endian) */
 #define EFA_IA_64_EAS2_3 0x23000000    /* ia64 EAS 2.3 */
 
+#define EF_IA_64_ABI64             (1 << 4) /* 64-bit ABI */
+/* Not used yet.  */
+#define EF_IA_64_REDUCEDFP         (1 << 5) /* Only FP6-FP11 used.  */
+#define EF_IA_64_CONS_GP           (1 << 6) /* gp as program wide constant. */
+#define EF_IA_64_NOFUNCDESC_CONS_GP (1 << 7) /* And no function descriptors. */
+/* Not used yet.  */
+#define EF_IA_64_ABSOLUTE          (1 << 8) /* Load at absolute addresses.  */
+
 #define ELF_STRING_ia64_archext                ".IA_64.archext"
 #define ELF_STRING_ia64_pltoff         ".IA_64.pltoff"
 #define ELF_STRING_ia64_unwind         ".IA_64.unwind"