2001-04-05 Steven J. Hill <sjhill@cotw.com>

* config.bfd (mips*el*-*-linux-gnu*): Use traditional little
	endian MIPS ELF target.
	* config.bfd (mips*-*-linux-gnu*): Use traditional big endian
	MIPS ELF target.

	* configure.in (bfd_elf64_tradbigmips_vec): New. Traditional
	64bit big endian MIPS ELF target.
	(bfd_elf64_tradlittlemips_vec): New. Traditional 64bit little
	endian MIPS ELF target.
	* configure: Regenerated.

	* elf32-mips.c (IRIX_COMPAT): Handle traditional 64bit and
	little endian targets.
	(mips_elf_sym_is_global): Handle traditional targets.

	* elf64-mips.c (bfd_elf64_tradbigmips_vec): New. Traditional
	64bit big endian MIPS ELF target.
	(bfd_elf64_tradlittlemips_vec): New. Traditional 64bit little
	endian MIPS ELF target.

	* targets.c: (_bfd_target_vector): Add bfd_elf64_tradbigmips_vec
	and bfd_elf64_tradlittlemips_vec.
This commit is contained in:
H.J. Lu 2001-04-08 05:11:49 +00:00
parent af9539e4e5
commit fdbafa100f
7 changed files with 346 additions and 285 deletions

View File

@ -1,3 +1,28 @@
2001-04-05 Steven J. Hill <sjhill@cotw.com>
* config.bfd (mips*el*-*-linux-gnu*): Use traditional little
endian MIPS ELF target.
* config.bfd (mips*-*-linux-gnu*): Use traditional big endian
MIPS ELF target.
* configure.in (bfd_elf64_tradbigmips_vec): New. Traditional
64bit big endian MIPS ELF target.
(bfd_elf64_tradlittlemips_vec): New. Traditional 64bit little
endian MIPS ELF target.
* configure: Regenerated.
* elf32-mips.c (IRIX_COMPAT): Handle traditional 64bit and
little endian targets.
(mips_elf_sym_is_global): Handle traditional targets.
* elf64-mips.c (bfd_elf64_tradbigmips_vec): New. Traditional
64bit big endian MIPS ELF target.
(bfd_elf64_tradlittlemips_vec): New. Traditional 64bit little
endian MIPS ELF target.
* targets.c: (_bfd_target_vector): Add bfd_elf64_tradbigmips_vec
and bfd_elf64_tradlittlemips_vec.
2001-04-05 David Mosberger <davidm@hpl.hp.com>
* elf32-i386.c (elf_i386_fake_sections): Treat ".reloc" as an

View File

@ -663,15 +663,22 @@ case "${targ}" in
targ_defvec=bfd_elf32_bigmips_vec
targ_selvecs="bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec"
;;
mips*el*-*-linux-gnu* | mips*el*-*-openbsd*)
mips*el*-*-openbsd*)
targ_defvec=bfd_elf32_littlemips_vec
targ_selvecs="bfd_elf32_bigmips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec ecoff_little_vec ecoff_big_vec"
;;
mips*-*-linux-gnu* | mips*-*-openbsd*)
mips*el*-*-linux-gnu*)
targ_defvec=bfd_elf32_tradlittlemips_vec
targ_selvecs="bfd_elf32_tradbigmips_vec bfd_elf64_tradlittlemips_vec bfd_elf64_tradbigmips_vec ecoff_little_vec ecoff_big_vec"
;;
mips*-*-openbsd*)
targ_defvec=bfd_elf32_bigmips_vec
targ_selvecs="bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec ecoff_big_vec ecoff_little_vec"
;;
mips*-*-linux-gnu*)
targ_defvec=bfd_elf32_tradbigmips_vec
targ_selvecs="bfd_elf32_tradlittlemips_vec bfd_elf64_tradbigmips_vec bfd_elf64_tradlittlemips_vec ecoff_big_vec ecoff_little_vec"
;;
mn10200-*-*)
targ_defvec=bfd_elf32_mn10200_vec
;;

547
bfd/configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -561,6 +561,10 @@ do
target64=true ;;
bfd_elf64_sparc_vec) tb="$tb elf64-sparc.lo elf64.lo $elf"
target64=true ;;
bfd_elf64_tradbigmips_vec) tb="$tb elf64-mips.lo elf64.lo $elf ecofflink.lo"
target64=true ;;
bfd_elf64_tradlittlemips_vec) tb="$tb elf64-mips.lo elf64.lo $elf ecofflink.lo"
target64=true ;;
cisco_core_big_vec) tb="$tb cisco-core.lo" ;;
cisco_core_little_vec) tb="$tb cisco-core.lo" ;;
cris_aout_vec) tb="$tb aout-cris.lo" ;;

View File

@ -208,6 +208,9 @@ static int sort_dynamic_relocs
PARAMS ((const void *, const void *));
extern const bfd_target bfd_elf32_tradbigmips_vec;
extern const bfd_target bfd_elf32_tradlittlemips_vec;
extern const bfd_target bfd_elf64_tradbigmips_vec;
extern const bfd_target bfd_elf64_tradlittlemips_vec;
/* The level of IRIX compatibility we're striving for. */
@ -225,8 +228,7 @@ static bfd *reldyn_sorting_bfd;
#define ABI_N32_P(abfd) \
((elf_elfheader (abfd)->e_flags & EF_MIPS_ABI2) != 0)
/* Nonzero if ABFD is using the 64-bit ABI. FIXME: This is never
true, yet. */
/* Nonzero if ABFD is using the 64-bit ABI. */
#define ABI_64_P(abfd) \
((elf_elfheader (abfd)->e_ident[EI_CLASS] == ELFCLASS64) != 0)
@ -234,7 +236,10 @@ static bfd *reldyn_sorting_bfd;
executables or "normal" MIPS ELF ABI executables. */
#define IRIX_COMPAT(abfd) \
(abfd->xvec == &bfd_elf32_tradbigmips_vec ? ict_none : \
(((abfd->xvec == &bfd_elf64_tradbigmips_vec) || \
(abfd->xvec == &bfd_elf64_tradlittlemips_vec) || \
(abfd->xvec == &bfd_elf32_tradbigmips_vec) || \
(abfd->xvec == &bfd_elf32_tradlittlemips_vec)) ? ict_none : \
((ABI_N32_P (abfd) || ABI_64_P (abfd)) ? ict_irix6 : ict_irix5))
/* Whether we are trying to be compatible with IRIX at all. */
@ -2301,7 +2306,12 @@ mips_elf_sym_is_global (abfd, sym)
bfd *abfd ATTRIBUTE_UNUSED;
asymbol *sym;
{
return (sym->flags & BSF_SECTION_SYM) == 0 ? true : false;
if (SGI_COMPAT(abfd))
return (sym->flags & BSF_SECTION_SYM) == 0 ? true : false;
else
return ((sym->flags & (BSF_GLOBAL | BSF_WEAK)) != 0
|| bfd_is_und_section (bfd_get_section (sym))
|| bfd_is_com_section (bfd_get_section (sym)));
}
/* Set the right machine number for a MIPS ELF file. This is used for

View File

@ -2189,3 +2189,20 @@ const struct elf_size_info mips_elf64_size_info =
_bfd_archive_coff_update_armap_timestamp
#include "elf64-target.h"
/* Support for traditional mips targets */
#define INCLUDED_TARGET_FILE /* More a type of flag */
#undef TARGET_LITTLE_SYM
#undef TARGET_LITTLE_NAME
#undef TARGET_BIG_SYM
#undef TARGET_BIG_NAME
#define TARGET_LITTLE_SYM bfd_elf64_tradlittlemips_vec
#define TARGET_LITTLE_NAME "elf64-tradlittlemips"
#define TARGET_BIG_SYM bfd_elf64_tradbigmips_vec
#define TARGET_BIG_NAME "elf64-tradbigmips"
/* Include the target file again for this target */
#include "elf64-target.h"

View File

@ -564,6 +564,8 @@ extern const bfd_target bfd_elf64_ia64_big_vec;
extern const bfd_target bfd_elf64_ia64_little_vec;
extern const bfd_target bfd_elf64_little_generic_vec;
extern const bfd_target bfd_elf64_littlemips_vec;
extern const bfd_target bfd_elf64_tradbigmips_vec;
extern const bfd_target bfd_elf64_tradlittlemips_vec;
extern const bfd_target bfd_elf64_s390_vec;
extern const bfd_target bfd_elf64_sparc_vec;
extern const bfd_target bfd_elf64_x86_64_vec;
@ -781,7 +783,10 @@ static const bfd_target * const _bfd_target_vector[] = {
&bfd_elf32_mcore_little_vec,
&bfd_elf32_tradbigmips_vec,
&bfd_elf32_tradlittlemips_vec,
#ifdef BFD64 /* No one seems to use this. */
#ifdef BFD64
&bfd_elf64_tradbigmips_vec,
&bfd_elf64_tradlittlemips_vec,
/* No one seems to use this. */
&bfd_elf64_big_generic_vec,
&bfd_elf64_little_generic_vec,
#endif