Linux/mips is broken now

H. J. Lu hjl@lucon.org
Wed Jul 31 12:52:00 GMT 2002


On Wed, Jul 31, 2002 at 12:29:49PM -0700, Eric Christopher wrote:
> On Wed, 2002-07-31 at 12:27, H. J. Lu wrote:
> > The current binutils is broken on Linux/mips. There are at least 2
> > problems:
> > 
> > 1. mips*el-linux/mips*-linux are now 32bit by default in BFD. But ld
> > still includes 64bit ELF/MIPS emulations.
> > 2. Why aren't n32 included in mips*el-linux/mips*-linux when 64bit
> > BFD is selected?
> > 
> 
> I saw some of these the other day as well.
> 
> I'll see what I can do as far as patches...
> 

Here is what I got. Please take a look.

Thanks.


H.J.
-------------- next part --------------
bfd/

2002-07-31  H.J. Lu <hjl@gnu.org>

	* config.bfd: Add n32 vectors to 32bit Linux/mips if 64bit BFD
	is selected.

ld/

2002-07-31  H.J. Lu <hjl@gnu.org>

	* configure.tgt: Enable 64bit emulations for 32bit Linux/mips
	if 64bit BFD is selected.

--- binutils/bfd/config.bfd.mips	Wed Jul 31 08:53:23 2002
+++ binutils/bfd/config.bfd	Wed Jul 31 12:35:29 2002
@@ -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-*-*)
--- binutils/ld/configure.tgt.mips	Wed Jul 31 08:54:17 2002
+++ binutils/ld/configure.tgt	Wed Jul 31 12:38:29 2002
@@ -396,10 +396,16 @@ mips64*-*-linux-gnu*)	targ_emul=elf32bts
 			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 ;;


More information about the Binutils mailing list