From a0dfa6a8051fddc213ca7f466f77d5ccc63e65b6 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Wed, 31 Jul 2002 22:26:53 +0000
Subject: [PATCH] Enable 64bit emulations for Linux/mips if 64bit BFD is
 selected.

---
 bfd/ChangeLog    |  5 +++++
 bfd/config.bfd   |  4 ++--
 ld/ChangeLog     |  5 +++++
 ld/configure.tgt | 10 ++++++++--
 4 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 9b624e45089..51647a51e2d 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2002-07-31  H.J. Lu <hjl@gnu.org>
+
+	* config.bfd: Add n32 vectors to 32bit Linux/mips if 64bit BFD
+	is selected.
+
 2002-07-31  Jakub Jelinek  <jakub@redhat.com>
 
 	* elf32-i386.c (elf_i386_copy_indirect_symbol): Swap tls_type
diff --git a/bfd/config.bfd b/bfd/config.bfd
index 8461e790f8f..1974a385d6b 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -759,12 +759,12 @@ case "${targ}" in
   mips*el-*-linux*)
     targ_defvec=bfd_elf32_tradlittlemips_vec
     targ_selvecs="bfd_elf32_tradbigmips_vec ecoff_little_vec ecoff_big_vec"
-    targ64_selvecs="bfd_elf64_tradlittlemips_vec bfd_elf64_tradbigmips_vec"
+    targ64_selvecs="bfd_elf32_ntradlittlemips_vec bfd_elf64_tradlittlemips_vec bfd_elf32_ntradbigmips_vec bfd_elf64_tradbigmips_vec"
     ;;
   mips*-*-linux*)
     targ_defvec=bfd_elf32_tradbigmips_vec
     targ_selvecs="bfd_elf32_tradlittlemips_vec ecoff_big_vec ecoff_little_vec"
-    targ64_selvecs="bfd_elf64_tradbigmips_vec bfd_elf64_tradlittlemips_vec"
+    targ64_selvecs="bfd_elf32_ntradbigmips_vec bfd_elf64_tradbigmips_vec bfd_elf32_ntradlittlemips_vec bfd_elf64_tradlittlemips_vec"
     ;;
 #ifdef BFD64
   mmix-*-*)
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 87d6937a6a6..7ecca11c51f 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2002-07-31  H.J. Lu <hjl@gnu.org>
+
+	* configure.tgt: Enable 64bit emulations for 32bit Linux/mips
+	if 64bit BFD is selected.
+
 2002-07-31  Ian Dall  <ian@sibyl.beware.dropbear.id.au>
 
 	* emultempl/netbsd.em (LDEMUL_BEFORE_PARSE): New file to custom set
diff --git a/ld/configure.tgt b/ld/configure.tgt
index a1441233475..6217f65f15e 100644
--- a/ld/configure.tgt
+++ b/ld/configure.tgt
@@ -396,10 +396,16 @@ mips64*-*-linux-gnu*)	targ_emul=elf32btsmipn32
 			targ_extra_emuls="elf32ltsmipn32 elf32btsmip elf32ltsmip elf64btsmip elf64ltsmip"
 			;;
 mips*el-*-linux-gnu*)	targ_emul=elf32ltsmip
-			targ_extra_emuls="elf32btsmip elf64ltsmip elf64btsmip"
+			targ_extra_emuls="elf32btsmip"
+			if test x${want64} = xtrue; then
+			  targ_extra_emuls="$targ_extra_emuls elf32ltsmipn32 elf64ltsmip elf32btsmipn32 elf64btsmip"
+			fi
 			;;
 mips*-*-linux-gnu*)	targ_emul=elf32btsmip
-			targ_extra_emuls="elf32ltsmip elf64btsmip elf64ltsmip"
+			targ_extra_emuls="elf32ltsmip"
+			if test x${want64} = xtrue; then
+			  targ_extra_emuls="$targ_extra_emuls elf32btsmipn32 elf64btsmip elf32ltsmipn32 elf64ltsmip"
+			fi
 			;;
 mips*-*-lnews*)		targ_emul=mipslnews ;;
 mips*-*-sysv4*)         targ_emul=elf32btsmip ;;