MIPS/BFD: Use enumeration constants for EI_ABIVERSION
authorMaciej W. Rozycki <macro@mips.com>
Thu, 21 Jun 2018 20:40:56 +0000 (21:40 +0100)
committerMaciej W. Rozycki <macro@mips.com>
Thu, 21 Jun 2018 20:40:56 +0000 (21:40 +0100)
Define enumeration constants based on generated `libc-abis.h' from GNU
libc, adding a MIPS_ prefix as these are port-specific.  Use them to
replace magic numbers stored in the EI_ABIVERSION field of the ELF file
header.

bfd/
* elfxx-mips.c (MIPS_LIBC_ABI_DEFAULT, MIPS_LIBC_ABI_MIPS_PLT)
(MIPS_LIBC_ABI_UNIQUE, MIPS_LIBC_ABI_MIPS_O32_FP64)
(MIPS_LIBC_ABI_MAX): New enumeration constants.
(_bfd_mips_post_process_headers): Use them in place of magic
numbers.

bfd/ChangeLog
bfd/elfxx-mips.c

index e9628226b88895444844756c85b8e26dcf7a0672..68db522807093272d30d5e1dfaf6e874d65920bb 100644 (file)
@@ -1,3 +1,11 @@
+2018-06-21  Maciej W. Rozycki  <macro@mips.com>
+
+       * elfxx-mips.c (MIPS_LIBC_ABI_DEFAULT, MIPS_LIBC_ABI_MIPS_PLT)
+       (MIPS_LIBC_ABI_UNIQUE, MIPS_LIBC_ABI_MIPS_O32_FP64)
+       (MIPS_LIBC_ABI_MAX): New enumeration constants.
+       (_bfd_mips_post_process_headers): Use them in place of magic
+       numbers.
+
 2018-06-21  Jim Wilson  <jimw@sifive.com>
 
        * elfnn-riscv.c (riscv_elf_finish_dynamic_symbol): Update comment.
index 844750eb9a15d0a59c74c7e2767f21e253affcb9..f3a2d3ba0346f014cee13354c98f5f1fb220685d 100644 (file)
@@ -16230,6 +16230,18 @@ bfd_mips_elf_get_abiflags (bfd *abfd)
   return tdata->abiflags_valid ? &tdata->abiflags : NULL;
 }
 
+/* MIPS libc ABI versions, used with the EI_ABIVERSION ELF file header
+   field.  Taken from `libc-abis.h' generated at GNU libc build time.
+   Using a MIPS_ prefix as other libc targets use different values.  */
+enum
+{
+  MIPS_LIBC_ABI_DEFAULT = 0,
+  MIPS_LIBC_ABI_MIPS_PLT,
+  MIPS_LIBC_ABI_UNIQUE,
+  MIPS_LIBC_ABI_MIPS_O32_FP64,
+  MIPS_LIBC_ABI_MAX
+};
+
 void
 _bfd_mips_post_process_headers (bfd *abfd, struct bfd_link_info *link_info)
 {
@@ -16243,14 +16255,14 @@ _bfd_mips_post_process_headers (bfd *abfd, struct bfd_link_info *link_info)
       BFD_ASSERT (htab != NULL);
 
       if (htab->use_plts_and_copy_relocs && !htab->is_vxworks)
-       i_ehdrp->e_ident[EI_ABIVERSION] = 1;
+       i_ehdrp->e_ident[EI_ABIVERSION] = MIPS_LIBC_ABI_MIPS_PLT;
     }
 
   _bfd_elf_post_process_headers (abfd, link_info);
 
   if (mips_elf_tdata (abfd)->abiflags.fp_abi == Val_GNU_MIPS_ABI_FP_64
       || mips_elf_tdata (abfd)->abiflags.fp_abi == Val_GNU_MIPS_ABI_FP_64A)
-    i_ehdrp->e_ident[EI_ABIVERSION] = 3;
+    i_ehdrp->e_ident[EI_ABIVERSION] = MIPS_LIBC_ABI_MIPS_O32_FP64;
 }
 
 int