Fix abiversion handling for MIPS.

This commit is contained in:
Joseph Myers 2010-04-06 20:26:22 +00:00
parent 3af825d53b
commit 1dbb4edc73
5 changed files with 35 additions and 9 deletions

View File

@ -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.

View File

@ -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

16
libc-abis Normal file
View File

@ -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*

View File

@ -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)

View File

@ -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 */