[committed] MIPS/BFD: Use enumeration constants for EI_ABIVERSION

Maciej W. Rozycki macro@mips.com
Thu Jun 21 20:44:00 GMT 2018


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/elfxx-mips.c |   16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

binutils-mips-bfd-libc-abis.diff
Index: binutils/bfd/elfxx-mips.c
===================================================================
--- binutils.orig/bfd/elfxx-mips.c	2018-06-20 15:05:33.000000000 +0100
+++ binutils/bfd/elfxx-mips.c	2018-06-21 19:34:59.960038746 +0100
@@ -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 *abf
       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



More information about the Binutils mailing list