This is the mail archive of the libc-ports@sources.redhat.com mailing list for the libc-ports project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Fix libc-abis handling for MIPS


I've applied this patch to fix the build for MIPS by updating the 
abiversion handling for libc changes.

Note that for the ports libc-abis file to be *used* requires the libc 
patch <http://sourceware.org/ml/libc-alpha/2010-04/msg00004.html> (without 
it, glibc will still build, but will share the same ABI version for 
MIPS_PLT and UNIQUE).

diff --git a/ChangeLog b/ChangeLog
index fcd2011..135c1f8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-04-06  Joseph Myers  <joseph@codesourcery.com>
+
+	* libc-abis: New.
+
 2006-03-06  Roland McGrath  <roland@redhat.com>
 
 	* Makefile (%.bz2, %.gz): New pattern rules.
diff --git a/ChangeLog.mips b/ChangeLog.mips
index 58f0a34..4ac5871 100644
--- a/ChangeLog.mips
+++ b/ChangeLog.mips
@@ -1,3 +1,10 @@
+2010-04-06  Joseph Myers  <joseph@codesourcery.com>
+
+	* sysdeps/mips/dl-machine.h (VALID_ELF_ABIVERSION,
+	VALID_ELF_OSABI, VALID_ELF_HEADER): Remove.
+	* sysdeps/unix/sysv/linux/mips/ldsodefs.h (VALID_ELF_ABIVERSION):
+	Define.
+
 2010-03-30  Joseph Myers  <joseph@codesourcery.com>
 
 	* sysdeps/unix/sysv/linux/mips/bits/socket.h: Define
diff --git a/libc-abis b/libc-abis
new file mode 100644
index 0000000..a66a9ec
--- /dev/null
+++ b/libc-abis
@@ -0,0 +1,16 @@
+# See the copy of this file in libc for detailed explanations.  The
+# ports copy needs to include all libc definitions applicable to any
+# ports target; only one copy will be used.
+#
+# Feature Name	Configuration
+# ------------	-------------
+#
+# MIPS PLTs.
+MIPS_PLT	mips*-*-linux*
+#
+# Unique symbol definitions for C++.
+# Architecture independent, all ELF targets (== all targets)
+UNIQUE
+#
+# Indirect PLT relocations.  Architecture dependent.
+IFUNC		powerpc-*-linux*
diff --git a/sysdeps/mips/dl-machine.h b/sysdeps/mips/dl-machine.h
index ef088bf..123b4d6 100644
--- a/sysdeps/mips/dl-machine.h
+++ b/sysdeps/mips/dl-machine.h
@@ -75,15 +75,6 @@ do { if ((l)->l_info[DT_MIPS (RLD_MAP)]) \
        (ElfW(Addr)) (r); \
    } while (0)
 
-/* Allow ABIVERSION == 1, meaning PLTs and copy relocations are
-   required.  */
-#define VALID_ELF_ABIVERSION(ver)	(ver == 0 || ver == 2)
-#define VALID_ELF_OSABI(osabi)		(osabi == ELFOSABI_SYSV)
-#define VALID_ELF_HEADER(hdr,exp,size) \
-  memcmp (hdr,exp,size-2) == 0 \
-  && VALID_ELF_OSABI (hdr[EI_OSABI]) \
-  && VALID_ELF_ABIVERSION (hdr[EI_ABIVERSION])
-
 /* Return nonzero iff ELF header is compatible with the running host.  */
 static inline int __attribute_used__
 elf_machine_matches_host (const ElfW(Ehdr) *ehdr)
diff --git a/sysdeps/unix/sysv/linux/mips/ldsodefs.h b/sysdeps/unix/sysv/linux/mips/ldsodefs.h
index 8d5efec..2cb7db6 100644
--- a/sysdeps/unix/sysv/linux/mips/ldsodefs.h
+++ b/sysdeps/unix/sysv/linux/mips/ldsodefs.h
@@ -30,4 +30,12 @@ extern void _dl_static_init (struct link_map *map);
 #undef DL_STATIC_INIT
 #define DL_STATIC_INIT(map) _dl_static_init (map)
 
+/* Allow ABIVERSION == 1, meaning PLTs and copy relocations are
+   required, with ELFOSABI_SYSV.  */
+#undef VALID_ELF_ABIVERSION
+#define VALID_ELF_ABIVERSION(osabi,ver)			\
+  (ver == 0						\
+   || (osabi == ELFOSABI_SYSV && ver < 2)		\
+   || (osabi == ELFOSABI_LINUX && ver < LIBC_ABI_MAX))
+
 #endif /* ldsodefs.h */

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]