public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
@ 2001-08-24 18:26 Thiemo Seufer
  2001-08-31  8:02 ` Richard Sandiford
  0 siblings, 1 reply; 62+ messages in thread
From: Thiemo Seufer @ 2001-08-24 18:26 UTC (permalink / raw)
  To: binutils

Hi All,

we can't have 64bit addresses in a 32bit object file format, so I
added a check for mips_64 to the relevant macro. This will fail for
o64 ABI and possibly for eabi64 too, but these are both virtually
unimplemented in gas. (I don't really know how eabi64 is defined.) 

Further testing exposed a bug in $gp loading (ld instead of lw),
I fixed this also.

Tested for mips-elf, mips64el-elf, mips64-linux.


Thiemo


2001-08-25  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	/gas/ChangeLog
	* tc_mips.c (HAVE_32BIT_ADDRESSES): Check for 64bit object file format
	also.
	(HAVE_64BIT_ADDRESSES): New define.
	(macro): Fix address load instruction.

	/gas/testsuite/ChangeLog
	* gas/mips/ld.d: Use 32bit instructions for addresses.
	* gas/mips/mips-gp64-fp32-pic.d: Likewise.
	* gas/mips/mips-gp64-fp32-pic.s: Likewise.
	* gas/mips/mips-gp64-fp32.d: Likewise.
	* gas/mips/mips-gp64-fp32.s: Likewise.
	* gas/mips/mips-gp64-fp64-pic.d: Likewise.
	* gas/mips/mips-gp64-fp64-pic.s: Likewise.
	* gas/mips/mips-gp64-fp64.d: Likewise.
	* gas/mips/mips-gp64-fp64.s: Likewise.
	* gas/mips/elempic.d: Likewise.
	* gas/mips/uld.d: Likewise.
	* gas/mips/usd.d: Likewise.


diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/config/tc-mips.c src/gas/config/tc-mips.c
--- src-orig/gas/config/tc-mips.c	Sat Aug 18 21:47:23 2001
+++ src/gas/config/tc-mips.c	Tue Aug 21 18:21:49 2001
@@ -270,9 +270,15 @@ static int mips_32bit_abi = 0;
 #define HAVE_64BIT_GPRS (! HAVE_32BIT_GPRS)
 #define HAVE_64BIT_FPRS (! HAVE_32BIT_FPRS)
 
-#define HAVE_32BIT_ADDRESSES                \
-   (HAVE_32BIT_GPRS                         \
-    || bfd_arch_bits_per_address (stdoutput) == 32)
+/* We can only have 64bit addresses if the object file format
+   supports it.  FIXME: We abuse mips_64 as a indicator for
+   such support.  */
+#define HAVE_32BIT_ADDRESSES                       \
+   (HAVE_32BIT_GPRS                                \
+    || bfd_arch_bits_per_address (stdoutput) == 32 \
+    || ! mips_64)
+
+#define HAVE_64BIT_ADDRESSES (! HAVE_32BIT_ADDRESSES)
 
 /* Whether the processor uses hardware interlocks to protect
    reads from the HI and LO registers, and thus does not
@@ -4288,7 +4458,7 @@ macro (ip)
 	  if (expr1.X_add_number == 0 && tempreg == PIC_CALL_REG)
 	    lw_reloc_type = (int) BFD_RELOC_MIPS_CALL16;
 	  macro_build ((char *) NULL, &icnt, &offset_expr,
-		       dbl ? "ld" : "lw",
+		       HAVE_32BIT_ADDRESSES ? "lw" : "ld",
 		       "t,o(b)", tempreg, lw_reloc_type, GP);
 	  if (expr1.X_add_number == 0)
 	    {
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/ld.d src/gas/testsuite/gas/mips/ld.d
--- src-orig/gas/testsuite/gas/mips/ld.d	Mon Jul  2 14:34:18 2001
+++ src/gas/testsuite/gas/mips/ld.d	Tue Aug 21 19:20:35 2001
@@ -628,12 +628,12 @@ Disassembly of section .text:
 0+05d0 <[^>]*> sw	a1,4\(zero\)
 0+05d4 <[^>]*> lui	a0,[-0-9x]+
 [ 	]*5d4: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+05d8 <[^>]*> daddu	a0,a0,a1
+0+05d8 <[^>]*> addu	a0,a0,a1
 0+05dc <[^>]*> ld	a0,[-0-9]+\(a0\)
 [ 	]*5dc: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+05e0 <[^>]*> lui	at,[-0-9x]+
 [ 	]*5e0: [A-Z0-9_]*HI[A-Z0-9_]*	.sbss.*
-0+05e4 <[^>]*> daddu	at,at,a1
+0+05e4 <[^>]*> addu	at,at,a1
 0+05e8 <[^>]*> sd	a0,[-0-9]+\(at\)
 [ 	]*5e8: [A-Z0-9_]*LO[A-Z0-9_]*	.sbss.*
 0+05ec <[^>]*> nop
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/mips-gp64-fp32-pic.d src/gas/testsuite/gas/mips/mips-gp64-fp32-pic.d
--- src-orig/gas/testsuite/gas/mips/mips-gp64-fp32-pic.d	Tue Aug  7 17:20:30 2001
+++ src/gas/testsuite/gas/mips/mips-gp64-fp32-pic.d	Tue Aug 21 19:20:35 2001
@@ -10,121 +10,121 @@ Disassembly of section .text:
    0:	3c1c0000 	lui	gp,0x0
    4:	279c0000 	addiu	gp,gp,0
    8:	0399e021 	addu	gp,gp,t9
-   c:	ffbc0008 	sd	gp,8\(sp\)
-  10:	009c202d 	daddu	a0,a0,gp
+   c:	afbc0008 	sw	gp,8\(sp\)
+  10:	009c2021 	addu	a0,a0,gp
   14:	3c041234 	lui	a0,0x1234
   18:	34845678 	ori	a0,a0,0x5678
   1c:	8f840000 	lw	a0,0\(gp\)
   20:	00000000 	nop
-  24:	64840000 	daddiu	a0,a0,0
+  24:	24840000 	addiu	a0,a0,0
   28:	8f840000 	lw	a0,0\(gp\)
   2c:	00000000 	nop
-  30:	64840000 	daddiu	a0,a0,0
+  30:	24840000 	addiu	a0,a0,0
   34:	8f840000 	lw	a0,0\(gp\)
   38:	00000000 	nop
-  3c:	64840228 	daddiu	a0,a0,552
+  3c:	24840228 	addiu	a0,a0,552
   40:	10000079 	b	228 <[^>]*>
   44:	00000000 	nop
-  48:	df990000 	ld	t9,0\(gp\)
+  48:	8f990000 	lw	t9,0\(gp\)
   4c:	00000000 	nop
-  50:	67390228 	daddiu	t9,t9,552
+  50:	27390228 	addiu	t9,t9,552
   54:	0320f809 	jalr	t9
   58:	00000000 	nop
-  5c:	dfbc0008 	ld	gp,8\(sp\)
-  60:	df840000 	ld	a0,0\(gp\)
+  5c:	8fbc0008 	lw	gp,8\(sp\)
+  60:	8f840000 	lw	a0,0\(gp\)
   64:	00000000 	nop
-  68:	64840000 	daddiu	a0,a0,0
+  68:	24840000 	addiu	a0,a0,0
   6c:	8c840000 	lw	a0,0\(a0\)
-  70:	df840000 	ld	a0,0\(gp\)
+  70:	8f840000 	lw	a0,0\(gp\)
   74:	00000000 	nop
-  78:	64840000 	daddiu	a0,a0,0
+  78:	24840000 	addiu	a0,a0,0
   7c:	8c840000 	lw	a0,0\(a0\)
-  80:	df840000 	ld	a0,0\(gp\)
+  80:	8f840000 	lw	a0,0\(gp\)
   84:	00000000 	nop
-  88:	64840228 	daddiu	a0,a0,552
+  88:	24840228 	addiu	a0,a0,552
   8c:	8c840000 	lw	a0,0\(a0\)
-  90:	df840000 	ld	a0,0\(gp\)
+  90:	8f840000 	lw	a0,0\(gp\)
   94:	00000000 	nop
-  98:	64840000 	daddiu	a0,a0,0
+  98:	24840000 	addiu	a0,a0,0
   9c:	dc840000 	ld	a0,0\(a0\)
-  a0:	df840000 	ld	a0,0\(gp\)
+  a0:	8f840000 	lw	a0,0\(gp\)
   a4:	00000000 	nop
-  a8:	64840000 	daddiu	a0,a0,0
+  a8:	24840000 	addiu	a0,a0,0
   ac:	dc840000 	ld	a0,0\(a0\)
-  b0:	df840000 	ld	a0,0\(gp\)
+  b0:	8f840000 	lw	a0,0\(gp\)
   b4:	00000000 	nop
-  b8:	64840228 	daddiu	a0,a0,552
+  b8:	24840228 	addiu	a0,a0,552
   bc:	dc840000 	ld	a0,0\(a0\)
-  c0:	df810000 	ld	at,0\(gp\)
+  c0:	8f810000 	lw	at,0\(gp\)
   c4:	00000000 	nop
-  c8:	64210000 	daddiu	at,at,0
+  c8:	24210000 	addiu	at,at,0
   cc:	ac240000 	sw	a0,0\(at\)
-  d0:	df810000 	ld	at,0\(gp\)
+  d0:	8f810000 	lw	at,0\(gp\)
   d4:	00000000 	nop
-  d8:	64210000 	daddiu	at,at,0
+  d8:	24210000 	addiu	at,at,0
   dc:	ac240000 	sw	a0,0\(at\)
-  e0:	df810000 	ld	at,0\(gp\)
+  e0:	8f810000 	lw	at,0\(gp\)
   e4:	00000000 	nop
-  e8:	64210000 	daddiu	at,at,0
+  e8:	24210000 	addiu	at,at,0
   ec:	fc240000 	sd	a0,0\(at\)
-  f0:	df810000 	ld	at,0\(gp\)
+  f0:	8f810000 	lw	at,0\(gp\)
   f4:	00000000 	nop
-  f8:	64210000 	daddiu	at,at,0
+  f8:	24210000 	addiu	at,at,0
   fc:	fc240000 	sd	a0,0\(at\)
- 100:	df810000 	ld	at,0\(gp\)
+ 100:	8f810000 	lw	at,0\(gp\)
  104:	00000000 	nop
- 108:	64210000 	daddiu	at,at,0
+ 108:	24210000 	addiu	at,at,0
  10c:	80240000 	lb	a0,0\(at\)
  110:	90210001 	lbu	at,1\(at\)
  114:	00042200 	sll	a0,a0,0x8
  118:	00812025 	or	a0,a0,at
- 11c:	df810000 	ld	at,0\(gp\)
+ 11c:	8f810000 	lw	at,0\(gp\)
  120:	00000000 	nop
- 124:	64210000 	daddiu	at,at,0
+ 124:	24210000 	addiu	at,at,0
  128:	a0240001 	sb	a0,1\(at\)
  12c:	00042202 	srl	a0,a0,0x8
  130:	a0240000 	sb	a0,0\(at\)
  134:	90210001 	lbu	at,1\(at\)
  138:	00042200 	sll	a0,a0,0x8
  13c:	00812025 	or	a0,a0,at
- 140:	df810000 	ld	at,0\(gp\)
+ 140:	8f810000 	lw	at,0\(gp\)
  144:	00000000 	nop
- 148:	64210000 	daddiu	at,at,0
+ 148:	24210000 	addiu	at,at,0
  14c:	88240000 	lwl	a0,0\(at\)
  150:	98240003 	lwr	a0,3\(at\)
- 154:	df810000 	ld	at,0\(gp\)
+ 154:	8f810000 	lw	at,0\(gp\)
  158:	00000000 	nop
- 15c:	64210000 	daddiu	at,at,0
+ 15c:	24210000 	addiu	at,at,0
  160:	a8240000 	swl	a0,0\(at\)
  164:	b8240003 	swr	a0,3\(at\)
  168:	3404ffc0 	li	a0,0xffc0
  16c:	000423bc 	dsll32	a0,a0,0xe
- 170:	df810000 	ld	at,0\(gp\)
+ 170:	8f810000 	lw	at,0\(gp\)
  174:	dc240000 	ld	a0,0\(at\)
  178:	3c013ff0 	lui	at,0x3ff0
  17c:	44810800 	mtc1	at,\$f1
  180:	44800000 	mtc1	zero,\$f0
- 184:	df810000 	ld	at,0\(gp\)
+ 184:	8f810000 	lw	at,0\(gp\)
  188:	d4200008 	ldc1	\$f0,8\(at\)
  18c:	64a40064 	daddiu	a0,a1,100
  190:	2c840001 	sltiu	a0,a0,1
  194:	64a40064 	daddiu	a0,a1,100
  198:	0004202b 	sltu	a0,zero,a0
  19c:	00a0202d 	move	a0,a1
- 1a0:	df840000 	ld	a0,0\(gp\)
+ 1a0:	8f840000 	lw	a0,0\(gp\)
  1a4:	00000000 	nop
- 1a8:	64840000 	daddiu	a0,a0,0
- 1ac:	df840000 	ld	a0,0\(gp\)
+ 1a8:	24840000 	addiu	a0,a0,0
+ 1ac:	8f840000 	lw	a0,0\(gp\)
  1b0:	00000000 	nop
- 1b4:	64840000 	daddiu	a0,a0,0
- 1b8:	df810000 	ld	at,0\(gp\)
+ 1b4:	24840000 	addiu	a0,a0,0
+ 1b8:	8f810000 	lw	at,0\(gp\)
  1bc:	00000000 	nop
- 1c0:	64210000 	daddiu	at,at,0
+ 1c0:	24210000 	addiu	at,at,0
  1c4:	68240000 	ldl	a0,0\(at\)
  1c8:	6c240007 	ldr	a0,7\(at\)
- 1cc:	df810000 	ld	at,0\(gp\)
+ 1cc:	8f810000 	lw	at,0\(gp\)
  1d0:	00000000 	nop
- 1d4:	64210000 	daddiu	at,at,0
+ 1d4:	24210000 	addiu	at,at,0
  1d8:	b0240000 	sdl	a0,0\(at\)
  1dc:	b4240007 	sdr	a0,7\(at\)
  1e0:	3c018000 	lui	at,0x8000
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/mips-gp64-fp32-pic.s src/gas/testsuite/gas/mips/mips-gp64-fp32-pic.s
--- src-orig/gas/testsuite/gas/mips/mips-gp64-fp32-pic.s	Tue Aug  7 17:20:30 2001
+++ src/gas/testsuite/gas/mips/mips-gp64-fp32-pic.s	Tue Aug 21 19:20:35 2001
@@ -19,101 +19,101 @@ func:
 				# 0004 addiu	gp,gp,lo(_gp_disp)
 				# 0008 addu	gp,gp,t9
 	.set reorder
-	.cprestore 8		# 000c sd	gp,8(sp)
-	.cpadd $4		# 0010 daddu	a0,a0,gp
+	.cprestore 8		# 000c sw	gp,8(sp)
+	.cpadd $4		# 0010 addu	a0,a0,gp
 	li	$4, 0x12345678	# 0014 lui	a0,0x1234
 				# 0018 ori	a0,a0,0x5678
 	la	$4, shared	# 001c lw	a0,got(.sdata)(gp)
 				# 0020 nop
-				# 0024 daddiu	a0,a0,lo(shared)
+				# 0024 addiu	a0,a0,lo(shared)
 	la	$4, unshared	# 0028 lw	a0,got(.data)(gp)
 				# 002c nop
-				# 0030 daddiu	a0,a0,lo(unshared)
+				# 0030 addiu	a0,a0,lo(unshared)
 	la	$4, end		# 0034 lw	a0,got(.text)(gp)
 				# 0038 nop
-				# 003c daddiu	a0,a0,lo(end)
+				# 003c addiu	a0,a0,lo(end)
 	j	end		# 0040 b	end
 				# 0044 nop
-	jal	end		# 0048 ld	t9,got(.text)(gp)
+	jal	end		# 0048 lw	t9,got(.text)(gp)
 				# 004c nop
-				# 0050 daddiu	t9,t9,lo(end)
+				# 0050 addiu	t9,t9,lo(end)
 				# 0054 jalr	t9
 				# 0058 nop
-				# 005c ld	gp,8(sp)
-	lw	$4, shared	# 0060 ld	a0,got(.sdata)(gp)
+				# 005c lw	gp,8(sp)
+	lw	$4, shared	# 0060 lw	a0,got(.sdata)(gp)
 				# 0064 nop
-				# 0068 daddiu	a0,a0,lo(shared)
+				# 0068 addiu	a0,a0,lo(shared)
 				# 006c lw	a0,(a0)
-	lw	$4, unshared	# 0070 ld	a0,got(.data)(gp)
+	lw	$4, unshared	# 0070 lw	a0,got(.data)(gp)
 				# 0074 nop
-				# 0078 daddiu	a0,a0,lo(unshared)
+				# 0078 addiu	a0,a0,lo(unshared)
 				# 007c lw	a0,(a0)
-	lw	$4, end		# 0080 ld	a0,got(.text)(gp)
+	lw	$4, end		# 0080 lw	a0,got(.text)(gp)
 				# 0084 nop
-				# 0088 daddiu	a0,a0,lo(end)
+				# 0088 addiu	a0,a0,lo(end)
 				# 008c lw	a0,(a0)
-	ld	$4, shared	# 0090 ld	a0,got(.sdata)(gp)
+	ld	$4, shared	# 0090 lw	a0,got(.sdata)(gp)
 				# 0094 nop
-				# 0098 daddiu	a0,a0,lo(shared)
+				# 0098 addiu	a0,a0,lo(shared)
 				# 009c ld	a0,(a0)
-	ld	$4, unshared	# 00a0 ld	a0,got(.data)(gp)
+	ld	$4, unshared	# 00a0 lw	a0,got(.data)(gp)
 				# 00a4 nop
-				# 00a8 daddiu	a0,a0,lo(unshared)
+				# 00a8 addiu	a0,a0,lo(unshared)
 				# 00ac ld	a0,(a0)
-	ld	$4, end		# 00b0 ld	a0,got(.text)(gp)
+	ld	$4, end		# 00b0 lw	a0,got(.text)(gp)
 				# 00b4 nop
-				# 00b8 daddiu	a0,a0,lo(end)
+				# 00b8 addiu	a0,a0,lo(end)
 				# 00bc ld	a0,(a0)
-	sw	$4, shared	# 00c0 ld	at,got(.sdata)(gp)
+	sw	$4, shared	# 00c0 lw	at,got(.sdata)(gp)
 				# 00c4 nop
-				# 00c8 daddiu	at,at,lo(shared)
+				# 00c8 addiu	at,at,lo(shared)
 				# 00cc sw	a0,0(at)
-	sw	$4, unshared	# 00d0 ld	at,got(.data)(gp)
+	sw	$4, unshared	# 00d0 lw	at,got(.data)(gp)
 				# 00d4 nop
-				# 00d8 daddiu	at,at,lo(unshared)
+				# 00d8 addiu	at,at,lo(unshared)
 				# 00dc sw	a0,0(at)
-	sd	$4, shared	# 00e0 ld	at,got(.sdata)(gp)
+	sd	$4, shared	# 00e0 lw	at,got(.sdata)(gp)
 				# 00e4 nop
-				# 00e8 daddiu	at,at,lo(shared)
+				# 00e8 addiu	at,at,lo(shared)
 				# 00ec sd	a0,(at)
-	sd	$4, unshared	# 00f0 ld	at,got(.data)(gp)
+	sd	$4, unshared	# 00f0 lw	at,got(.data)(gp)
 				# 00f4 nop
-				# 00f8 daddiu	at,at,lo(unshared)
+				# 00f8 addiu	at,at,lo(unshared)
 				# 00fc sd	a0,(at)
-	ulh	$4, unshared	# 0100 ld	at,got(.data)(gp)
+	ulh	$4, unshared	# 0100 lw	at,got(.data)(gp)
 				# 0104 nop
-				# 0108 daddiu	at,at,lo(unshared)
+				# 0108 addiu	at,at,lo(unshared)
 				# 010c lb	a0,0(at)
 				# 0110 lbu	at,1(at)
 				# 0114 sll	a0,a0,8
 				# 0118 or	a0,a0,at
-	ush	$4, unshared	# 011c ld	at,got(.data)(gp)
+	ush	$4, unshared	# 011c lw	at,got(.data)(gp)
 				# 0120 nop
-				# 0124 daddiu	at,at,lo(unshared)
+				# 0124 addiu	at,at,lo(unshared)
 				# 0128 sb	a0,0(at)
 				# 012c srl	a0,a0,8
 				# 0130 sb	a0,1(at)
 				# 0134 lbu	at,0(at)
 				# 0138 sll	a0,a0,8
 				# 013c or	a0,a0,at
-	ulw	$4, unshared	# 0140 ld	at,got(.data)(gp)
+	ulw	$4, unshared	# 0140 lw	at,got(.data)(gp)
 				# 0144 nop
-				# 0148 daddiu	at,at,lo(unshared)
+				# 0148 addiu	at,at,lo(unshared)
 				# 014c lwl	a0,0(at)
 				# 0150 lwr	a0,3(at)
-	usw	$4, unshared	# 0154 ld	at,got(.data)(gp)
+	usw	$4, unshared	# 0154 lw	at,got(.data)(gp)
 				# 0158 nop
-				# 015c daddiu	at,at,lo(unshared)
+				# 015c addiu	at,at,lo(unshared)
 				# 0160 swl	a0,0(at)
 				# 0164 swr	a0,3(at)
 	li.d	$4, 1.0		# 0168 li	a0,0xffc0
 				# 016c dsll32	a0,a0,14
-	li.d	$4, 1.9		# 0170 ld	at,got(.rodata)(gp)
+	li.d	$4, 1.9		# 0170 lw	at,got(.rodata)(gp)
 				# 0174 ld	a0,lo(F1.9)(at)
 	li.d	$f0, 1.0	# 0178 lui	at,0x3ff0
 				# 017c mtc1	at,$f1
 				# 0180 mtc1	zero,$f0
-	li.d	$f0, 1.9	# 0184 ld	at,got(.rodata)(gp)
+	li.d	$f0, 1.9	# 0184 lw	at,got(.rodata)(gp)
 				# 0188 ldc1	$f0,lo(L1.9)(at)
 	seq	$4, $5, -100	# 018c daddiu	a0,a1,100
 				# 0190 sltiu	a0,a0,1
@@ -121,20 +121,20 @@ func:
 				# 0198 sltu	a0,zero,a0
 	move	$4, $5		# 019c move	a0,a1
 
-	dla	$4, shared	# 01a0 ld	a0,got(.sdata)(gp)
+	dla	$4, shared	# 01a0 lw	a0,got(.sdata)(gp)
 				# 01a4 nop
-				# 01a8 daddiu	a0,a0,lo(shared) 
-	dla	$4, unshared	# 01ac ld	a0,got(.data)(gp)
+				# 01a8 addiu	a0,a0,lo(shared) 
+	dla	$4, unshared	# 01ac lw	a0,got(.data)(gp)
 				# 01b0 nop
-				# 01b4 daddiu	a0,a0,lo(unshared)
-	uld	$4, unshared	# 01b8 ld	at,got(.data)(gp)
+				# 01b4 addiu	a0,a0,lo(unshared)
+	uld	$4, unshared	# 01b8 lw	at,got(.data)(gp)
 				# 01bc nop
-				# 01c0 daddiu	at,at,lo(unshared)
+				# 01c0 addiu	at,at,lo(unshared)
 				# 01c4 ldl	a0,0(at)
 				# 01c8 ldr	a0,7(at)
-	usd	$4, unshared	# 01cc ld	at,got(.data)(gp)
+	usd	$4, unshared	# 01cc lw	at,got(.data)(gp)
 				# 01d0 nop
-				# 01d4 daddiu	at,at,lo(unshared)
+				# 01d4 addiu	at,at,lo(unshared)
 				# 01d8 sdl	a0,0(at)
 				# 01dc sdr	a0,7(at)
 
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/mips-gp64-fp32.d src/gas/testsuite/gas/mips/mips-gp64-fp32.d
--- src-orig/gas/testsuite/gas/mips/mips-gp64-fp32.d	Tue Aug  7 17:20:30 2001
+++ src/gas/testsuite/gas/mips/mips-gp64-fp32.d	Tue Aug 21 19:20:35 2001
@@ -9,11 +9,11 @@ Disassembly of section .text:
 0+000 <[^>]*>:
    0:	3c041234 	lui	a0,0x1234
    4:	34845678 	ori	a0,a0,0x5678
-   8:	6784c000 	daddiu	a0,gp,-16384
+   8:	2784c000 	addiu	a0,gp,-16384
    c:	3c040000 	lui	a0,0x0
-  10:	64840000 	daddiu	a0,a0,0
+  10:	24840000 	addiu	a0,a0,0
   14:	3c040000 	lui	a0,0x0
-  18:	64840154 	daddiu	a0,a0,340
+  18:	24840154 	addiu	a0,a0,340
   1c:	08000055 	j	154 <[^>]*>
   20:	0c000055 	jal	154 <[^>]*>
   24:	8f84c000 	lw	a0,-16384\(gp\)
@@ -33,13 +33,13 @@ Disassembly of section .text:
   5c:	3c010000 	lui	at,0x0
   60:	fc240000 	sd	a0,0\(at\)
   64:	3c010000 	lui	at,0x0
-  68:	64210000 	daddiu	at,at,0
+  68:	24210000 	addiu	at,at,0
   6c:	80240000 	lb	a0,0\(at\)
   70:	90210001 	lbu	at,1\(at\)
   74:	00042200 	sll	a0,a0,0x8
   78:	00812025 	or	a0,a0,at
   7c:	3c010000 	lui	at,0x0
-  80:	64210000 	daddiu	at,at,0
+  80:	24210000 	addiu	at,at,0
   84:	a0240001 	sb	a0,1\(at\)
   88:	00042202 	srl	a0,a0,0x8
   8c:	a0240000 	sb	a0,0\(at\)
@@ -47,11 +47,11 @@ Disassembly of section .text:
   94:	00042200 	sll	a0,a0,0x8
   98:	00812025 	or	a0,a0,at
   9c:	3c010000 	lui	at,0x0
-  a0:	64210000 	daddiu	at,at,0
+  a0:	24210000 	addiu	at,at,0
   a4:	88240000 	lwl	a0,0\(at\)
   a8:	98240003 	lwr	a0,3\(at\)
   ac:	3c010000 	lui	at,0x0
-  b0:	64210000 	daddiu	at,at,0
+  b0:	24210000 	addiu	at,at,0
   b4:	a8240000 	swl	a0,0\(at\)
   b8:	b8240003 	swr	a0,3\(at\)
   bc:	3404ffc0 	li	a0,0xffc0
@@ -67,15 +67,15 @@ Disassembly of section .text:
   e4:	64a40064 	daddiu	a0,a1,100
   e8:	0004202b 	sltu	a0,zero,a0
   ec:	00a0202d 	move	a0,a1
-  f0:	6784c000 	daddiu	a0,gp,-16384
+  f0:	2784c000 	addiu	a0,gp,-16384
   f4:	3c040000 	lui	a0,0x0
-  f8:	64840000 	daddiu	a0,a0,0
+  f8:	24840000 	addiu	a0,a0,0
   fc:	3c010000 	lui	at,0x0
- 100:	64210000 	daddiu	at,at,0
+ 100:	24210000 	addiu	at,at,0
  104:	68240000 	ldl	a0,0\(at\)
  108:	6c240007 	ldr	a0,7\(at\)
  10c:	3c010000 	lui	at,0x0
- 110:	64210000 	daddiu	at,at,0
+ 110:	24210000 	addiu	at,at,0
  114:	b0240000 	sdl	a0,0\(at\)
  118:	b4240007 	sdr	a0,7\(at\)
  11c:	3c018000 	lui	at,0x8000
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/mips-gp64-fp32.s src/gas/testsuite/gas/mips/mips-gp64-fp32.s
--- src-orig/gas/testsuite/gas/mips/mips-gp64-fp32.s	Tue Aug  7 17:20:30 2001
+++ src/gas/testsuite/gas/mips/mips-gp64-fp32.s	Tue Aug 21 19:20:35 2001
@@ -16,11 +16,11 @@ func:
 	.set mips4
 	li	$4, 0x12345678	# 0000 lui	a0,0x1234
 				# 0004 ori	a0,a0,0x5678
-	la	$4, shared	# 0008 daddiu	a0,gp,shared
+	la	$4, shared	# 0008 addiu	a0,gp,shared
 	la	$4, unshared	# 000c lui	a0,hi(unshared)
-				# 0010 daddiu	a0,a0,lo(unshared)
+				# 0010 addiu	a0,a0,lo(unshared)
 	la	$4, end		# 0014 lui	a0,hi(end)
-				# 0018 daddiu	a0,a0,lo(end)
+				# 0018 addiu	a0,a0,lo(end)
 	j	end		# 001c j	end
 	jal	end		# 0020 jal	end
 	lw	$4, shared	# 0024 lw	a0,shared(gp)
@@ -40,13 +40,13 @@ func:
 	sd	$4, unshared	# 005c lui	at,hi(unshared)
 				# 0060 sd	a0,lo(unshared)(at)
 	ulh	$4, unshared	# 0064 lui	at,hi(unshared)
-				# 0068 daddiu	at,at,lo(unshared)
+				# 0068 addiu	at,at,lo(unshared)
 				# 006c lb	a0,0(at)
 				# 0070 lbu	at,1(at)
 				# 0074 sll	a0,a0,8
 				# 0078 or	a0,a0,at
 	ush	$4, unshared	# 007c lui	at,hi(unshared)
-				# 0080 daddiu	at,at,lo(unshared)
+				# 0080 addiu	at,at,lo(unshared)
 				# 0084 sb	a0,1(at)
 				# 0088 srl	a0,a0,8
 				# 008c sb	a0,0(at)
@@ -54,11 +54,11 @@ func:
 				# 0094 sll	a0,a0,8
 				# 0098 or	a0,a0,at
 	ulw	$4, unshared	# 009c lui	at,hi(unshared)
-				# 00a0 daddiu	at,at,lo(unshared)
+				# 00a0 addiu	at,at,lo(unshared)
 				# 00a4 lwl	a0,0(at)
 				# 00a8 lwr	a0,3(at)
 	usw	$4, unshared	# 00ac lui	at,hi(unshared)
-				# 00b0 daddiu	at,at,lo(unshared)
+				# 00b0 addiu	at,at,lo(unshared)
 				# 00b4 swl	a0,0(at)
 				# 00b8 swr	a0,3(at)
 	li.d	$4, 1.0		# 00bc li	a0,0xffc0
@@ -75,15 +75,15 @@ func:
 				# 00e8 sltu	a0,zero,a0
 	move	$4, $5		# 00ec move	a0,a1
 
-	dla	$4, shared	# 00f0 daddiu	a0,gp,shared
+	dla	$4, shared	# 00f0 addiu	a0,gp,shared
 	dla	$4, unshared	# 00f4 lui	a0,hi(unshared)
-				# 00f8 daddiu	a0,a0,lo(unshared)
+				# 00f8 addiu	a0,a0,lo(unshared)
 	uld	$4, unshared	# 00fc lui	at,hi(unshared)
-				# 0100 daddiu	at,at,lo(unshared)
+				# 0100 addiu	at,at,lo(unshared)
 				# 0104 ldl	a0,0(at)
 				# 0108 ldr	a0,7(at)
 	usd	$4, unshared	# 010c lui	at,hi(unshared)
-				# 0110 daddiu	at,at,lo(unshared)
+				# 0110 addiu	at,at,lo(unshared)
 				# 0114 sdl	a0,0(at)
 				# 0118 sdr	a0,7(at)
 
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/mips-gp64-fp64-pic.d src/gas/testsuite/gas/mips/mips-gp64-fp64-pic.d
--- src-orig/gas/testsuite/gas/mips/mips-gp64-fp64-pic.d	Tue Aug  7 17:20:30 2001
+++ src/gas/testsuite/gas/mips/mips-gp64-fp64-pic.d	Tue Aug 21 19:20:35 2001
@@ -10,121 +10,121 @@ Disassembly of section .text:
    0:	3c1c0000 	lui	gp,0x0
    4:	279c0000 	addiu	gp,gp,0
    8:	0399e021 	addu	gp,gp,t9
-   c:	ffbc0008 	sd	gp,8\(sp\)
-  10:	009c202d 	daddu	a0,a0,gp
+   c:	afbc0008 	sw	gp,8\(sp\)
+  10:	009c2021 	addu	a0,a0,gp
   14:	3c041234 	lui	a0,0x1234
   18:	34845678 	ori	a0,a0,0x5678
   1c:	8f840000 	lw	a0,0\(gp\)
   20:	00000000 	nop
-  24:	64840000 	daddiu	a0,a0,0
+  24:	24840000 	addiu	a0,a0,0
   28:	8f840000 	lw	a0,0\(gp\)
   2c:	00000000 	nop
-  30:	64840000 	daddiu	a0,a0,0
+  30:	24840000 	addiu	a0,a0,0
   34:	8f840000 	lw	a0,0\(gp\)
   38:	00000000 	nop
-  3c:	6484022c 	daddiu	a0,a0,556
+  3c:	2484022c 	addiu	a0,a0,556
   40:	1000007a 	b	22c <[^>]*>
   44:	00000000 	nop
-  48:	df990000 	ld	t9,0\(gp\)
+  48:	8f990000 	lw	t9,0\(gp\)
   4c:	00000000 	nop
-  50:	6739022c 	daddiu	t9,t9,556
+  50:	2739022c 	addiu	t9,t9,556
   54:	0320f809 	jalr	t9
   58:	00000000 	nop
-  5c:	dfbc0008 	ld	gp,8\(sp\)
-  60:	df840000 	ld	a0,0\(gp\)
+  5c:	8fbc0008 	lw	gp,8\(sp\)
+  60:	8f840000 	lw	a0,0\(gp\)
   64:	00000000 	nop
-  68:	64840000 	daddiu	a0,a0,0
+  68:	24840000 	addiu	a0,a0,0
   6c:	8c840000 	lw	a0,0\(a0\)
-  70:	df840000 	ld	a0,0\(gp\)
+  70:	8f840000 	lw	a0,0\(gp\)
   74:	00000000 	nop
-  78:	64840000 	daddiu	a0,a0,0
+  78:	24840000 	addiu	a0,a0,0
   7c:	8c840000 	lw	a0,0\(a0\)
-  80:	df840000 	ld	a0,0\(gp\)
+  80:	8f840000 	lw	a0,0\(gp\)
   84:	00000000 	nop
-  88:	6484022c 	daddiu	a0,a0,556
+  88:	2484022c 	addiu	a0,a0,556
   8c:	8c840000 	lw	a0,0\(a0\)
-  90:	df840000 	ld	a0,0\(gp\)
+  90:	8f840000 	lw	a0,0\(gp\)
   94:	00000000 	nop
-  98:	64840000 	daddiu	a0,a0,0
+  98:	24840000 	addiu	a0,a0,0
   9c:	dc840000 	ld	a0,0\(a0\)
-  a0:	df840000 	ld	a0,0\(gp\)
+  a0:	8f840000 	lw	a0,0\(gp\)
   a4:	00000000 	nop
-  a8:	64840000 	daddiu	a0,a0,0
+  a8:	24840000 	addiu	a0,a0,0
   ac:	dc840000 	ld	a0,0\(a0\)
-  b0:	df840000 	ld	a0,0\(gp\)
+  b0:	8f840000 	lw	a0,0\(gp\)
   b4:	00000000 	nop
-  b8:	6484022c 	daddiu	a0,a0,556
+  b8:	2484022c 	addiu	a0,a0,556
   bc:	dc840000 	ld	a0,0\(a0\)
-  c0:	df810000 	ld	at,0\(gp\)
+  c0:	8f810000 	lw	at,0\(gp\)
   c4:	00000000 	nop
-  c8:	64210000 	daddiu	at,at,0
+  c8:	24210000 	addiu	at,at,0
   cc:	ac240000 	sw	a0,0\(at\)
-  d0:	df810000 	ld	at,0\(gp\)
+  d0:	8f810000 	lw	at,0\(gp\)
   d4:	00000000 	nop
-  d8:	64210000 	daddiu	at,at,0
+  d8:	24210000 	addiu	at,at,0
   dc:	ac240000 	sw	a0,0\(at\)
-  e0:	df810000 	ld	at,0\(gp\)
+  e0:	8f810000 	lw	at,0\(gp\)
   e4:	00000000 	nop
-  e8:	64210000 	daddiu	at,at,0
+  e8:	24210000 	addiu	at,at,0
   ec:	fc240000 	sd	a0,0\(at\)
-  f0:	df810000 	ld	at,0\(gp\)
+  f0:	8f810000 	lw	at,0\(gp\)
   f4:	00000000 	nop
-  f8:	64210000 	daddiu	at,at,0
+  f8:	24210000 	addiu	at,at,0
   fc:	fc240000 	sd	a0,0\(at\)
- 100:	df810000 	ld	at,0\(gp\)
+ 100:	8f810000 	lw	at,0\(gp\)
  104:	00000000 	nop
- 108:	64210000 	daddiu	at,at,0
+ 108:	24210000 	addiu	at,at,0
  10c:	80240000 	lb	a0,0\(at\)
  110:	90210001 	lbu	at,1\(at\)
  114:	00042200 	sll	a0,a0,0x8
  118:	00812025 	or	a0,a0,at
- 11c:	df810000 	ld	at,0\(gp\)
+ 11c:	8f810000 	lw	at,0\(gp\)
  120:	00000000 	nop
- 124:	64210000 	daddiu	at,at,0
+ 124:	24210000 	addiu	at,at,0
  128:	a0240001 	sb	a0,1\(at\)
  12c:	00042202 	srl	a0,a0,0x8
  130:	a0240000 	sb	a0,0\(at\)
  134:	90210001 	lbu	at,1\(at\)
  138:	00042200 	sll	a0,a0,0x8
  13c:	00812025 	or	a0,a0,at
- 140:	df810000 	ld	at,0\(gp\)
+ 140:	8f810000 	lw	at,0\(gp\)
  144:	00000000 	nop
- 148:	64210000 	daddiu	at,at,0
+ 148:	24210000 	addiu	at,at,0
  14c:	88240000 	lwl	a0,0\(at\)
  150:	98240003 	lwr	a0,3\(at\)
- 154:	df810000 	ld	at,0\(gp\)
+ 154:	8f810000 	lw	at,0\(gp\)
  158:	00000000 	nop
- 15c:	64210000 	daddiu	at,at,0
+ 15c:	24210000 	addiu	at,at,0
  160:	a8240000 	swl	a0,0\(at\)
  164:	b8240003 	swr	a0,3\(at\)
  168:	3404ffc0 	li	a0,0xffc0
  16c:	000423bc 	dsll32	a0,a0,0xe
- 170:	df810000 	ld	at,0\(gp\)
+ 170:	8f810000 	lw	at,0\(gp\)
  174:	dc240000 	ld	a0,0\(at\)
  178:	3401ffc0 	li	at,0xffc0
  17c:	00010bbc 	dsll32	at,at,0xe
  180:	44a10000 	dmtc1	at,\$f0
- 184:	df810000 	ld	at,0\(gp\)
+ 184:	8f810000 	lw	at,0\(gp\)
  188:	d4200008 	ldc1	\$f0,8\(at\)
  18c:	64a40064 	daddiu	a0,a1,100
  190:	2c840001 	sltiu	a0,a0,1
  194:	64a40064 	daddiu	a0,a1,100
  198:	0004202b 	sltu	a0,zero,a0
  19c:	00a0202d 	move	a0,a1
- 1a0:	df840000 	ld	a0,0\(gp\)
+ 1a0:	8f840000 	lw	a0,0\(gp\)
  1a4:	00000000 	nop
- 1a8:	64840000 	daddiu	a0,a0,0
- 1ac:	df840000 	ld	a0,0\(gp\)
+ 1a8:	24840000 	addiu	a0,a0,0
+ 1ac:	8f840000 	lw	a0,0\(gp\)
  1b0:	00000000 	nop
- 1b4:	64840000 	daddiu	a0,a0,0
- 1b8:	df810000 	ld	at,0\(gp\)
+ 1b4:	24840000 	addiu	a0,a0,0
+ 1b8:	8f810000 	lw	at,0\(gp\)
  1bc:	00000000 	nop
- 1c0:	64210000 	daddiu	at,at,0
+ 1c0:	24210000 	addiu	at,at,0
  1c4:	68240000 	ldl	a0,0\(at\)
  1c8:	6c240007 	ldr	a0,7\(at\)
- 1cc:	df810000 	ld	at,0\(gp\)
+ 1cc:	8f810000 	lw	at,0\(gp\)
  1d0:	00000000 	nop
- 1d4:	64210000 	daddiu	at,at,0
+ 1d4:	24210000 	addiu	at,at,0
  1d8:	b0240000 	sdl	a0,0\(at\)
  1dc:	b4240007 	sdr	a0,7\(at\)
  1e0:	3c018000 	lui	at,0x8000
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/mips-gp64-fp64-pic.s src/gas/testsuite/gas/mips/mips-gp64-fp64-pic.s
--- src-orig/gas/testsuite/gas/mips/mips-gp64-fp64-pic.s	Tue Aug  7 17:20:30 2001
+++ src/gas/testsuite/gas/mips/mips-gp64-fp64-pic.s	Tue Aug 21 19:20:35 2001
@@ -19,101 +19,101 @@ func:
 				# 0004 addiu	gp,gp,lo(_gp_disp)
 				# 0008 addu	gp,gp,t9
 	.set reorder
-	.cprestore 8		# 000c sd	gp,8(sp)
-	.cpadd $4		# 0010 daddu	a0,a0,gp
+	.cprestore 8		# 000c sw	gp,8(sp)
+	.cpadd $4		# 0010 addu	a0,a0,gp
 	li	$4, 0x12345678	# 0014 lui	a0,0x1234
 				# 0018 ori	a0,a0,0x5678
 	la	$4, shared	# 001c lw	a0,got(.sdata)(gp)
 				# 0020 nop
-				# 0024 daddiu	a0,a0,lo(shared)
+				# 0024 addiu	a0,a0,lo(shared)
 	la	$4, unshared	# 0028 lw	a0,got(.data)(gp)
 				# 002c nop
-				# 0030 daddiu	a0,a0,lo(unshared)
+				# 0030 addiu	a0,a0,lo(unshared)
 	la	$4, end		# 0034 lw	a0,got(.text)(gp)
 				# 0038 nop
-				# 003c daddiu	a0,a0,lo(end)
+				# 003c addiu	a0,a0,lo(end)
 	j	end		# 0040 b	end
 				# 0044 nop
-	jal	end		# 0048 ld	t9,got(.text)(gp)
+	jal	end		# 0048 lw	t9,got(.text)(gp)
 				# 004c nop
-				# 0050 daddiu	t9,t9,lo(end)
+				# 0050 addiu	t9,t9,lo(end)
 				# 0054 jalr	t9
 				# 0058 nop
-				# 005c ld	gp,8(sp)
-	lw	$4, shared	# 0060 ld	a0,got(.sdata)(gp)
+				# 005c lw	gp,8(sp)
+	lw	$4, shared	# 0060 lw	a0,got(.sdata)(gp)
 				# 0064 nop
-				# 0068 daddiu	a0,a0,lo(shared)
+				# 0068 addiu	a0,a0,lo(shared)
 				# 006c lw	a0,(a0)
-	lw	$4, unshared	# 0070 ld	a0,got(.data)(gp)
+	lw	$4, unshared	# 0070 lw	a0,got(.data)(gp)
 				# 0074 nop
-				# 0078 daddiu	a0,a0,lo(unshared)
+				# 0078 addiu	a0,a0,lo(unshared)
 				# 007c lw	a0,(a0)
-	lw	$4, end		# 0080 ld	a0,got(.text)(gp)
+	lw	$4, end		# 0080 lw	a0,got(.text)(gp)
 				# 0084 nop
-				# 0088 daddiu	a0,a0,lo(end)
+				# 0088 addiu	a0,a0,lo(end)
 				# 008c lw	a0,(a0)
-	ld	$4, shared	# 0090 ld	a0,got(.sdata)(gp)
+	ld	$4, shared	# 0090 lw	a0,got(.sdata)(gp)
 				# 0094 nop
-				# 0098 daddiu	a0,a0,lo(shared)
+				# 0098 addiu	a0,a0,lo(shared)
 				# 009c ld	a0,(a0)
-	ld	$4, unshared	# 00a0 ld	a0,got(.data)(gp)
+	ld	$4, unshared	# 00a0 lw	a0,got(.data)(gp)
 				# 00a4 nop
-				# 00a8 daddiu	a0,a0,lo(unshared)
+				# 00a8 addiu	a0,a0,lo(unshared)
 				# 00ac ld	a0,(a0)
-	ld	$4, end		# 00b0 ld	a0,got(.text)(gp)
+	ld	$4, end		# 00b0 lw	a0,got(.text)(gp)
 				# 00b4 nop
-				# 00b8 daddiu	a0,a0,lo(end)
+				# 00b8 addiu	a0,a0,lo(end)
 				# 00bc ld	a0,(a0)
-	sw	$4, shared	# 00c0 ld	at,got(.sdata)(gp)
+	sw	$4, shared	# 00c0 lw	at,got(.sdata)(gp)
 				# 00c4 nop
-				# 00c8 daddiu	at,at,lo(shared)
+				# 00c8 addiu	at,at,lo(shared)
 				# 00cc sw	a0,0(at)
-	sw	$4, unshared	# 00d0 ld	at,got(.data)(gp)
+	sw	$4, unshared	# 00d0 lw	at,got(.data)(gp)
 				# 00d4 nop
-				# 00d8 daddiu	at,at,lo(unshared)
+				# 00d8 addiu	at,at,lo(unshared)
 				# 00dc sw	a0,0(at)
-	sd	$4, shared	# 00e0 ld	at,got(.sdata)(gp)
+	sd	$4, shared	# 00e0 lw	at,got(.sdata)(gp)
 				# 00e4 nop
-				# 00e8 daddiu	at,at,lo(shared)
+				# 00e8 addiu	at,at,lo(shared)
 				# 00ec sd	a0,(at)
-	sd	$4, unshared	# 00f0 ld	at,got(.data)(gp)
+	sd	$4, unshared	# 00f0 lw	at,got(.data)(gp)
 				# 00f4 nop
-				# 00f8 daddiu	at,at,lo(unshared)
+				# 00f8 addiu	at,at,lo(unshared)
 				# 00fc sd	a0,(at)
-	ulh	$4, unshared	# 0100 ld	at,got(.data)(gp)
+	ulh	$4, unshared	# 0100 lw	at,got(.data)(gp)
 				# 0104 nop
-				# 0108 daddiu	at,at,lo(unshared)
+				# 0108 addiu	at,at,lo(unshared)
 				# 010c lb	a0,0(at)
 				# 0110 lbu	at,1(at)
 				# 0114 sll	a0,a0,8
 				# 0118 or	a0,a0,at
-	ush	$4, unshared	# 011c ld	at,got(.data)(gp)
+	ush	$4, unshared	# 011c lw	at,got(.data)(gp)
 				# 0120 nop
-				# 0124 daddiu	at,at,lo(unshared)
+				# 0124 addiu	at,at,lo(unshared)
 				# 0128 sb	a0,0(at)
 				# 012c srl	a0,a0,8
 				# 0130 sb	a0,1(at)
 				# 0134 lbu	at,0(at)
 				# 0138 sll	a0,a0,8
 				# 013c or	a0,a0,at
-	ulw	$4, unshared	# 0140 ld	at,got(.data)(gp)
+	ulw	$4, unshared	# 0140 lw	at,got(.data)(gp)
 				# 0144 nop
-				# 0148 daddiu	at,at,lo(unshared)
+				# 0148 addiu	at,at,lo(unshared)
 				# 014c lwl	a0,0(at)
 				# 0150 lwr	a0,3(at)
-	usw	$4, unshared	# 0154 ld	at,got(.data)(gp)
+	usw	$4, unshared	# 0154 lw	at,got(.data)(gp)
 				# 0158 nop
-				# 015c daddiu	at,at,lo(unshared)
+				# 015c addiu	at,at,lo(unshared)
 				# 0160 swl	a0,0(at)
 				# 0164 swr	a0,3(at)
 	li.d	$4, 1.0		# 0168 li	a0,0xffc0
 				# 016c dsll32	a0,a0,14
-	li.d	$4, 1.9		# 0170 ld	at,got(.rodata)(gp)
+	li.d	$4, 1.9		# 0170 lw	at,got(.rodata)(gp)
 				# 0174 ld	a0,lo(F1.9)(at)
 	li.d	$f0, 1.0	# 0178 li	at,0xffc0
 				# 017c dsll32	at,at,14
 				# 0180 dmtc1	at,$f0
-	li.d	$f0, 1.9	# 0184 ld	at,got(.rodata)(gp)
+	li.d	$f0, 1.9	# 0184 lw	at,got(.rodata)(gp)
 				# 0188 ldc1	$f0,lo(L1.9)(at)
 	seq	$4, $5, -100	# 018c daddiu	a0,a1,100
 				# 0190 sltiu	a0,a0,1
@@ -121,20 +121,20 @@ func:
 				# 0198 sltu	a0,zero,a0
 	move	$4, $5		# 019c move	a0,a1
 
-	dla	$4, shared	# 01a0 ld	a0,got(.sdata)(gp)
+	dla	$4, shared	# 01a0 lw	a0,got(.sdata)(gp)
 				# 01a4 nop
-				# 01a8 daddiu	a0,a0,lo(shared) 
-	dla	$4, unshared	# 01ac ld	a0,got(.data)(gp)
+				# 01a8 addiu	a0,a0,lo(shared) 
+	dla	$4, unshared	# 01ac lw	a0,got(.data)(gp)
 				# 01b0 nop
-				# 01b4 daddiu	a0,a0,lo(unshared)
-	uld	$4, unshared	# 01b8 ld	at,got(.data)(gp)
+				# 01b4 addiu	a0,a0,lo(unshared)
+	uld	$4, unshared	# 01b8 lw	at,got(.data)(gp)
 				# 01bc nop
-				# 01c0 daddiu	at,at,lo(unshared)
+				# 01c0 addiu	at,at,lo(unshared)
 				# 01c4 ldl	a0,0(at)
 				# 01c8 ldr	a0,7(at)
-	usd	$4, unshared	# 01cc ld	at,got(.data)(gp)
+	usd	$4, unshared	# 01cc lw	at,got(.data)(gp)
 				# 01d0 nop
-				# 01d4 daddiu	at,at,lo(unshared)
+				# 01d4 addiu	at,at,lo(unshared)
 				# 01d8 sdl	a0,0(at)
 				# 01dc sdr	a0,7(at)
 
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/mips-gp64-fp64.d src/gas/testsuite/gas/mips/mips-gp64-fp64.d
--- src-orig/gas/testsuite/gas/mips/mips-gp64-fp64.d	Tue Aug  7 17:20:30 2001
+++ src/gas/testsuite/gas/mips/mips-gp64-fp64.d	Tue Aug 21 19:20:35 2001
@@ -9,11 +9,11 @@ Disassembly of section .text:
 0+000 <[^>]*>:
    0:	3c041234 	lui	a0,0x1234
    4:	34845678 	ori	a0,a0,0x5678
-   8:	6784c000 	daddiu	a0,gp,-16384
+   8:	2784c000 	addiu	a0,gp,-16384
    c:	3c040000 	lui	a0,0x0
-  10:	64840000 	daddiu	a0,a0,0
+  10:	24840000 	addiu	a0,a0,0
   14:	3c040000 	lui	a0,0x0
-  18:	64840158 	daddiu	a0,a0,344
+  18:	24840158 	addiu	a0,a0,344
   1c:	08000056 	j	158 <[^>]*>
   20:	0c000056 	jal	158 <[^>]*>
   24:	8f84c000 	lw	a0,-16384\(gp\)
@@ -33,13 +33,13 @@ Disassembly of section .text:
   5c:	3c010000 	lui	at,0x0
   60:	fc240000 	sd	a0,0\(at\)
   64:	3c010000 	lui	at,0x0
-  68:	64210000 	daddiu	at,at,0
+  68:	24210000 	addiu	at,at,0
   6c:	80240000 	lb	a0,0\(at\)
   70:	90210001 	lbu	at,1\(at\)
   74:	00042200 	sll	a0,a0,0x8
   78:	00812025 	or	a0,a0,at
   7c:	3c010000 	lui	at,0x0
-  80:	64210000 	daddiu	at,at,0
+  80:	24210000 	addiu	at,at,0
   84:	a0240001 	sb	a0,1\(at\)
   88:	00042202 	srl	a0,a0,0x8
   8c:	a0240000 	sb	a0,0\(at\)
@@ -47,11 +47,11 @@ Disassembly of section .text:
   94:	00042200 	sll	a0,a0,0x8
   98:	00812025 	or	a0,a0,at
   9c:	3c010000 	lui	at,0x0
-  a0:	64210000 	daddiu	at,at,0
+  a0:	24210000 	addiu	at,at,0
   a4:	88240000 	lwl	a0,0\(at\)
   a8:	98240003 	lwr	a0,3\(at\)
   ac:	3c010000 	lui	at,0x0
-  b0:	64210000 	daddiu	at,at,0
+  b0:	24210000 	addiu	at,at,0
   b4:	a8240000 	swl	a0,0\(at\)
   b8:	b8240003 	swr	a0,3\(at\)
   bc:	3404ffc0 	li	a0,0xffc0
@@ -67,15 +67,15 @@ Disassembly of section .text:
   e4:	64a40064 	daddiu	a0,a1,100
   e8:	0004202b 	sltu	a0,zero,a0
   ec:	00a0202d 	move	a0,a1
-  f0:	6784c000 	daddiu	a0,gp,-16384
+  f0:	2784c000 	addiu	a0,gp,-16384
   f4:	3c040000 	lui	a0,0x0
-  f8:	64840000 	daddiu	a0,a0,0
+  f8:	24840000 	addiu	a0,a0,0
   fc:	3c010000 	lui	at,0x0
- 100:	64210000 	daddiu	at,at,0
+ 100:	24210000 	addiu	at,at,0
  104:	68240000 	ldl	a0,0\(at\)
  108:	6c240007 	ldr	a0,7\(at\)
  10c:	3c010000 	lui	at,0x0
- 110:	64210000 	daddiu	at,at,0
+ 110:	24210000 	addiu	at,at,0
  114:	b0240000 	sdl	a0,0\(at\)
  118:	b4240007 	sdr	a0,7\(at\)
  11c:	3c018000 	lui	at,0x8000
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/mips-gp64-fp64.s src/gas/testsuite/gas/mips/mips-gp64-fp64.s
--- src-orig/gas/testsuite/gas/mips/mips-gp64-fp64.s	Tue Aug  7 17:20:30 2001
+++ src/gas/testsuite/gas/mips/mips-gp64-fp64.s	Tue Aug 21 19:20:35 2001
@@ -16,11 +16,11 @@ func:
 	.set mips4
 	li	$4, 0x12345678	# 0000 lui	a0,0x1234
 				# 0004 ori	a0,a0,0x5678
-	la	$4, shared	# 0008 daddiu	a0,gp,shared
+	la	$4, shared	# 0008 addiu	a0,gp,shared
 	la	$4, unshared	# 000c lui	a0,hi(unshared)
-				# 0010 daddiu	a0,a0,lo(unshared)
+				# 0010 addiu	a0,a0,lo(unshared)
 	la	$4, end		# 0014 lui	a0,hi(end)
-				# 0018 daddiu	a0,a0,lo(end)
+				# 0018 addiu	a0,a0,lo(end)
 	j	end		# 001c j	end
 	jal	end		# 0020 jal	end
 	lw	$4, shared	# 0024 lw	a0,shared(gp)
@@ -40,13 +40,13 @@ func:
 	sd	$4, unshared	# 005c lui	at,hi(unshared)
 				# 0060 sd	a0,lo(unshared)(at)
 	ulh	$4, unshared	# 0064 lui	at,hi(unshared)
-				# 0068 daddiu	at,at,lo(unshared)
+				# 0068 addiu	at,at,lo(unshared)
 				# 006c lb	a0,0(at)
 				# 0070 lbu	at,1(at)
 				# 0074 sll	a0,a0,8
 				# 0078 or	a0,a0,at
 	ush	$4, unshared	# 007c lui	at,hi(unshared)
-				# 0080 daddiu	at,at,lo(unshared)
+				# 0080 addiu	at,at,lo(unshared)
 				# 0084 sb	a0,1(at)
 				# 0088 srl	a0,a0,8
 				# 008c sb	a0,0(at)
@@ -54,11 +54,11 @@ func:
 				# 0094 sll	a0,a0,8
 				# 0098 or	a0,a0,at
 	ulw	$4, unshared	# 009c lui	at,hi(unshared)
-				# 00a0 daddiu	at,at,lo(unshared)
+				# 00a0 addiu	at,at,lo(unshared)
 				# 00a4 lwl	a0,0(at)
 				# 00a8 lwr	a0,3(at)
 	usw	$4, unshared	# 00ac lui	at,hi(unshared)
-				# 00b0 daddiu	at,at,lo(unshared)
+				# 00b0 addiu	at,at,lo(unshared)
 				# 00b4 swl	a0,0(at)
 				# 00b8 swr	a0,3(at)
 	li.d	$4, 1.0		# 00bc li	a0,0xffc0
@@ -75,15 +75,15 @@ func:
 				# 00e8 sltu	a0,zero,a0
 	move	$4, $5		# 00ec move	a0,a1
 
-	dla	$4, shared	# 00f0 daddiu	a0,gp,shared
+	dla	$4, shared	# 00f0 addiu	a0,gp,shared
 	dla	$4, unshared	# 00f4 lui	a0,hi(unshared)
-				# 00f8 daddiu	a0,a0,lo(unshared)
+				# 00f8 addiu	a0,a0,lo(unshared)
 	uld	$4, unshared	# 00fc lui	at,hi(unshared)
-				# 0100 daddiu	at,at,lo(unshared)
+				# 0100 addiu	at,at,lo(unshared)
 				# 0104 ldl	a0,0(at)
 				# 0108 ldr	a0,7(at)
 	usd	$4, unshared	# 010c lui	at,hi(unshared)
-				# 0110 daddiu	at,at,lo(unshared)
+				# 0110 addiu	at,at,lo(unshared)
 				# 0114 sdl	a0,0(at)
 				# 0118 sdr	a0,7(at)
 
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/elf-rel4.d src/gas/testsuite/gas/mips/elf-rel4.d
--- src-orig/gas/testsuite/gas/mips/elf-rel4.d	Fri Aug  3 20:37:42 2001
+++ src/gas/testsuite/gas/mips/elf-rel4.d	Tue Aug 21 19:20:35 2001
@@ -4,11 +4,11 @@
 .*: +file format.*
 
 Disassembly of section .text:
-0+000 <[^>]*> daddiu	a0,gp,0
+0+000 <[^>]*> addiu	a0,gp,0
 			0: R_MIPS_GPREL16	a
-0+004 <[^>]*> daddiu	a0,gp,4
+0+004 <[^>]*> addiu	a0,gp,4
 			4: R_MIPS_GPREL16	a
-0+008 <[^>]*> daddiu	a0,gp,8
+0+008 <[^>]*> addiu	a0,gp,8
 			8: R_MIPS_GPREL16	a
-0+00c <[^>]*> daddiu	a0,gp,12
+0+00c <[^>]*> addiu	a0,gp,12
 			c: R_MIPS_GPREL16	a
--- src-orig/gas/testsuite/gas/mips/elempic.d	Sat Aug 25 01:28:15 2001
+++ src/gas/testsuite/gas/mips/elempic.d	Sat Aug 25 02:56:57 2001
@@ -120,7 +120,7 @@
  0070 00010000 00000000 04000000 00000000  .*
  0080 4c000000 00000000 54010000 00000000  .*
  0090 d0ffffff ffffffff 32000010 33000010  .*
- 00a0 0000033c d8006364 0000033c e8006364  .*
+ 00a0 0000033c d80063[26]4 0000033c e80063[26]4  .*
  00b0 cc000000 34000000 cc000000 00000000  .*
  00c0 34000000 00000000 00000000 32000010  .*
  00d0 33000010 34000324 3c000324 cc000000  .*
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/uld.d src/gas/testsuite/gas/mips/uld.d
--- src-orig/gas/testsuite/gas/mips/uld.d	Mon Jul  2 14:34:18 2001
+++ src/gas/testsuite/gas/mips/uld.d	Tue Aug 21 19:20:35 2001
@@ -29,241 +29,241 @@ Disassembly of section .text:
 0+004c <[^>]*> ldr	a0,[-0-9]+\(a1\)
 0+0050 <[^>]*> lui	at,[-0-9x]+
 [ 	]*50: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+0054 <[^>]*> daddiu	at,at,[-0-9]+
+0+0054 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*54: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0058 <[^>]*> ldl	a0,[07]\(at\)
 0+005c <[^>]*> ldr	a0,[07]\(at\)
 0+0060 <[^>]*> lui	at,0x0
 [ 	]*60: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+0064 <[^>]*> daddiu	at,at,[-0-9]+
+0+0064 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*64: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+0068 <[^>]*> ldl	a0,[07]\(at\)
 0+006c <[^>]*> ldr	a0,[07]\(at\)
-0+0070 <[^>]*> daddiu	at,gp,0
+0+0070 <[^>]*> addiu	at,gp,0
 [ 	]*70: [A-Z0-9_]*GPREL[A-Z0-9_]*	small_external_data_label
 0+0074 <[^>]*> ldl	a0,[07]\(at\)
 0+0078 <[^>]*> ldr	a0,[07]\(at\)
 0+007c <[^>]*> lui	at,0x0
 [ 	]*7c: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+0080 <[^>]*> daddiu	at,at,[-0-9]+
+0+0080 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*80: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+0084 <[^>]*> ldl	a0,[07]\(at\)
 0+0088 <[^>]*> ldr	a0,[07]\(at\)
-0+008c <[^>]*> daddiu	at,gp,0
+0+008c <[^>]*> addiu	at,gp,0
 [ 	]*8c: [A-Z0-9_]*GPREL[A-Z0-9_]*	small_external_common
 0+0090 <[^>]*> ldl	a0,[07]\(at\)
 0+0094 <[^>]*> ldr	a0,[07]\(at\)
 0+0098 <[^>]*> lui	at,[-0-9x]+
 [ 	]*98: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+009c <[^>]*> daddiu	at,at,[-0-9]+
+0+009c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*9c: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+00a0 <[^>]*> ldl	a0,[07]\(at\)
 0+00a4 <[^>]*> ldr	a0,[07]\(at\)
-0+00a8 <[^>]*> daddiu	at,gp,[-0-9]+
+0+00a8 <[^>]*> addiu	at,gp,[-0-9]+
 [ 	]*a8: [A-Z0-9_]*GPREL[A-Z0-9_]*	.sbss.*
 0+00ac <[^>]*> ldl	a0,[07]\(at\)
 0+00b0 <[^>]*> ldr	a0,[07]\(at\)
 0+00b4 <[^>]*> lui	at,0x0
 [ 	]*b4: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+00b8 <[^>]*> daddiu	at,at,[-0-9]+
+0+00b8 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*b8: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+00bc <[^>]*> ldl	a0,[07]\(at\)
 0+00c0 <[^>]*> ldr	a0,[07]\(at\)
 0+00c4 <[^>]*> lui	at,0x0
 [ 	]*c4: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+00c8 <[^>]*> daddiu	at,at,[-0-9]+
+0+00c8 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*c8: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+00cc <[^>]*> ldl	a0,[07]\(at\)
 0+00d0 <[^>]*> ldr	a0,[07]\(at\)
-0+00d4 <[^>]*> daddiu	at,gp,1
+0+00d4 <[^>]*> addiu	at,gp,1
 [ 	]*d4: [A-Z0-9_]*GPREL[A-Z0-9_]*	small_external_data_label
 0+00d8 <[^>]*> ldl	a0,[07]\(at\)
 0+00dc <[^>]*> ldr	a0,[07]\(at\)
 0+00e0 <[^>]*> lui	at,0x0
 [ 	]*e0: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+00e4 <[^>]*> daddiu	at,at,[-0-9]+
+0+00e4 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*e4: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+00e8 <[^>]*> ldl	a0,[07]\(at\)
 0+00ec <[^>]*> ldr	a0,[07]\(at\)
-0+00f0 <[^>]*> daddiu	at,gp,1
+0+00f0 <[^>]*> addiu	at,gp,1
 [ 	]*f0: [A-Z0-9_]*GPREL[A-Z0-9_]*	small_external_common
 0+00f4 <[^>]*> ldl	a0,[07]\(at\)
 0+00f8 <[^>]*> ldr	a0,[07]\(at\)
 0+00fc <[^>]*> lui	at,0x0
 [ 	]*fc: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+0100 <[^>]*> daddiu	at,at,[-0-9]+
+0+0100 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*100: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+0104 <[^>]*> ldl	a0,[07]\(at\)
 0+0108 <[^>]*> ldr	a0,[07]\(at\)
-0+010c <[^>]*> daddiu	at,gp,[-0-9]+
+0+010c <[^>]*> addiu	at,gp,[-0-9]+
 [ 	]*10c: [A-Z0-9_]*GPREL[A-Z0-9_]*	.sbss.*
 0+0110 <[^>]*> ldl	a0,[07]\(at\)
 0+0114 <[^>]*> ldr	a0,[07]\(at\)
 0+0118 <[^>]*> lui	at,[-0-9x]+
 [ 	]*118: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+011c <[^>]*> daddiu	at,at,[-0-9]+
+0+011c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*11c: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0120 <[^>]*> ldl	a0,[07]\(at\)
 0+0124 <[^>]*> ldr	a0,[07]\(at\)
 0+0128 <[^>]*> lui	at,[-0-9x]+
 [ 	]*128: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+012c <[^>]*> daddiu	at,at,[-0-9]+
+0+012c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*12c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+0130 <[^>]*> ldl	a0,[07]\(at\)
 0+0134 <[^>]*> ldr	a0,[07]\(at\)
 0+0138 <[^>]*> lui	at,[-0-9x]+
 [ 	]*138: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_data_label
-0+013c <[^>]*> daddiu	at,at,[-0-9]+
+0+013c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*13c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_data_label
 0+0140 <[^>]*> ldl	a0,[07]\(at\)
 0+0144 <[^>]*> ldr	a0,[07]\(at\)
 0+0148 <[^>]*> lui	at,[-0-9x]+
 [ 	]*148: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+014c <[^>]*> daddiu	at,at,[-0-9]+
+0+014c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*14c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+0150 <[^>]*> ldl	a0,[07]\(at\)
 0+0154 <[^>]*> ldr	a0,[07]\(at\)
 0+0158 <[^>]*> lui	at,[-0-9x]+
 [ 	]*158: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_common
-0+015c <[^>]*> daddiu	at,at,[-0-9]+
+0+015c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*15c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_common
 0+0160 <[^>]*> ldl	a0,[07]\(at\)
 0+0164 <[^>]*> ldr	a0,[07]\(at\)
 0+0168 <[^>]*> lui	at,[-0-9x]+
 [ 	]*168: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+016c <[^>]*> daddiu	at,at,[-0-9]+
+0+016c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*16c: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+0170 <[^>]*> ldl	a0,[07]\(at\)
 0+0174 <[^>]*> ldr	a0,[07]\(at\)
 0+0178 <[^>]*> lui	at,[-0-9x]+
 [ 	]*178: [A-Z0-9_]*HI[A-Z0-9_]*	.sbss.*
-0+017c <[^>]*> daddiu	at,at,[-0-9]+
+0+017c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*17c: [A-Z0-9_]*LO[A-Z0-9_]*	.sbss.*
 0+0180 <[^>]*> ldl	a0,[07]\(at\)
 0+0184 <[^>]*> ldr	a0,[07]\(at\)
 0+0188 <[^>]*> lui	at,0x0
 [ 	]*188: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+018c <[^>]*> daddiu	at,at,[-0-9]+
+0+018c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*18c: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0190 <[^>]*> ldl	a0,[07]\(at\)
 0+0194 <[^>]*> ldr	a0,[07]\(at\)
 0+0198 <[^>]*> lui	at,0x0
 [ 	]*198: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+019c <[^>]*> daddiu	at,at,[-0-9]+
+0+019c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*19c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+01a0 <[^>]*> ldl	a0,[07]\(at\)
 0+01a4 <[^>]*> ldr	a0,[07]\(at\)
 0+01a8 <[^>]*> lui	at,0x0
 [ 	]*1a8: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_data_label
-0+01ac <[^>]*> daddiu	at,at,[-0-9]+
+0+01ac <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1ac: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_data_label
 0+01b0 <[^>]*> ldl	a0,[07]\(at\)
 0+01b4 <[^>]*> ldr	a0,[07]\(at\)
 0+01b8 <[^>]*> lui	at,0x0
 [ 	]*1b8: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+01bc <[^>]*> daddiu	at,at,[-0-9]+
+0+01bc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1bc: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+01c0 <[^>]*> ldl	a0,[07]\(at\)
 0+01c4 <[^>]*> ldr	a0,[07]\(at\)
 0+01c8 <[^>]*> lui	at,0x0
 [ 	]*1c8: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_common
-0+01cc <[^>]*> daddiu	at,at,[-0-9]+
+0+01cc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1cc: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_common
 0+01d0 <[^>]*> ldl	a0,[07]\(at\)
 0+01d4 <[^>]*> ldr	a0,[07]\(at\)
 0+01d8 <[^>]*> lui	at,0x0
 [ 	]*1d8: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+01dc <[^>]*> daddiu	at,at,[-0-9]+
+0+01dc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1dc: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+01e0 <[^>]*> ldl	a0,[07]\(at\)
 0+01e4 <[^>]*> ldr	a0,[07]\(at\)
 0+01e8 <[^>]*> lui	at,0x0
 [ 	]*1e8: [A-Z0-9_]*HI[A-Z0-9_]*	.sbss.*
-0+01ec <[^>]*> daddiu	at,at,[-0-9]+
+0+01ec <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1ec: [A-Z0-9_]*LO[A-Z0-9_]*	.sbss.*
 0+01f0 <[^>]*> ldl	a0,[07]\(at\)
 0+01f4 <[^>]*> ldr	a0,[07]\(at\)
 0+01f8 <[^>]*> lui	at,[-0-9x]+
 [ 	]*1f8: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+01fc <[^>]*> daddiu	at,at,[-0-9]+
+0+01fc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1fc: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0200 <[^>]*> ldl	a0,[07]\(at\)
 0+0204 <[^>]*> ldr	a0,[07]\(at\)
 0+0208 <[^>]*> lui	at,[-0-9x]+
 [ 	]*208: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+020c <[^>]*> daddiu	at,at,0
+0+020c <[^>]*> addiu	at,at,0
 [ 	]*20c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+0210 <[^>]*> ldl	a0,[07]\(at\)
 0+0214 <[^>]*> ldr	a0,[07]\(at\)
 0+0218 <[^>]*> lui	at,[-0-9x]+
 [ 	]*218: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_data_label
-0+021c <[^>]*> daddiu	at,at,0
+0+021c <[^>]*> addiu	at,at,0
 [ 	]*21c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_data_label
 0+0220 <[^>]*> ldl	a0,[07]\(at\)
 0+0224 <[^>]*> ldr	a0,[07]\(at\)
 0+0228 <[^>]*> lui	at,[-0-9x]+
 [ 	]*228: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+022c <[^>]*> daddiu	at,at,0
+0+022c <[^>]*> addiu	at,at,0
 [ 	]*22c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+0230 <[^>]*> ldl	a0,[07]\(at\)
 0+0234 <[^>]*> ldr	a0,[07]\(at\)
 0+0238 <[^>]*> lui	at,[-0-9x]+
 [ 	]*238: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_common
-0+023c <[^>]*> daddiu	at,at,0
+0+023c <[^>]*> addiu	at,at,0
 [ 	]*23c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_common
 0+0240 <[^>]*> ldl	a0,[07]\(at\)
 0+0244 <[^>]*> ldr	a0,[07]\(at\)
 0+0248 <[^>]*> lui	at,[-0-9x]+
 [ 	]*248: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+024c <[^>]*> daddiu	at,at,[-0-9]+
+0+024c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*24c: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+0250 <[^>]*> ldl	a0,[07]\(at\)
 0+0254 <[^>]*> ldr	a0,[07]\(at\)
 0+0258 <[^>]*> lui	at,[-0-9x]+
 [ 	]*258: [A-Z0-9_]*HI[A-Z0-9_]*	.sbss.*
-0+025c <[^>]*> daddiu	at,at,[-0-9]+
+0+025c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*25c: [A-Z0-9_]*LO[A-Z0-9_]*	.sbss.*
 0+0260 <[^>]*> ldl	a0,[07]\(at\)
 0+0264 <[^>]*> ldr	a0,[07]\(at\)
 0+0268 <[^>]*> lui	at,[-0-9x]+
 [ 	]*268: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+026c <[^>]*> daddiu	at,at,[-0-9]+
+0+026c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*26c: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0270 <[^>]*> ldl	a0,[07]\(at\)
 0+0274 <[^>]*> ldr	a0,[07]\(at\)
 0+0278 <[^>]*> lui	at,[-0-9x]+
 [ 	]*278: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+027c <[^>]*> daddiu	at,at,[-0-9]+
+0+027c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*27c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+0280 <[^>]*> ldl	a0,[07]\(at\)
 0+0284 <[^>]*> ldr	a0,[07]\(at\)
 0+0288 <[^>]*> lui	at,[-0-9x]+
 [ 	]*288: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_data_label
-0+028c <[^>]*> daddiu	at,at,[-0-9]+
+0+028c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*28c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_data_label
 0+0290 <[^>]*> ldl	a0,[07]\(at\)
 0+0294 <[^>]*> ldr	a0,[07]\(at\)
 0+0298 <[^>]*> lui	at,[-0-9x]+
 [ 	]*298: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+029c <[^>]*> daddiu	at,at,[-0-9]+
+0+029c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*29c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+02a0 <[^>]*> ldl	a0,[07]\(at\)
 0+02a4 <[^>]*> ldr	a0,[07]\(at\)
 0+02a8 <[^>]*> lui	at,[-0-9x]+
 [ 	]*2a8: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_common
-0+02ac <[^>]*> daddiu	at,at,[-0-9]+
+0+02ac <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*2ac: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_common
 0+02b0 <[^>]*> ldl	a0,[07]\(at\)
 0+02b4 <[^>]*> ldr	a0,[07]\(at\)
 0+02b8 <[^>]*> lui	at,[-0-9x]+
 [ 	]*2b8: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+02bc <[^>]*> daddiu	at,at,[-0-9]+
+0+02bc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*2bc: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+02c0 <[^>]*> ldl	a0,[07]\(at\)
 0+02c4 <[^>]*> ldr	a0,[07]\(at\)
 0+02c8 <[^>]*> lui	at,[-0-9x]+
 [ 	]*2c8: [A-Z0-9_]*HI[A-Z0-9_]*	.sbss.*
-0+02cc <[^>]*> daddiu	at,at,[-0-9]+
+0+02cc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*2cc: [A-Z0-9_]*LO[A-Z0-9_]*	.sbss.*
 0+02d0 <[^>]*> ldl	a0,[07]\(at\)
 0+02d4 <[^>]*> ldr	a0,[07]\(at\)
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/usd.d src/gas/testsuite/gas/mips/usd.d
--- src-orig/gas/testsuite/gas/mips/usd.d	Mon Jul  2 14:34:18 2001
+++ src/gas/testsuite/gas/mips/usd.d	Tue Aug 21 19:20:35 2001
@@ -29,241 +29,241 @@ Disassembly of section .text:
 0+004c <[^>]*> sdr	a0,[-0-9]+\(a1\)
 0+0050 <[^>]*> lui	at,[-0-9x]+
 [ 	]*50: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+0054 <[^>]*> daddiu	at,at,[-0-9]+
+0+0054 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*54: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0058 <[^>]*> sdl	a0,[07]\(at\)
 0+005c <[^>]*> sdr	a0,[07]\(at\)
 0+0060 <[^>]*> lui	at,[-0-9x]+
 [ 	]*60: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+0064 <[^>]*> daddiu	at,at,[-0-9]+
+0+0064 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*64: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+0068 <[^>]*> sdl	a0,[07]\(at\)
 0+006c <[^>]*> sdr	a0,[07]\(at\)
-0+0070 <[^>]*> daddiu	at,gp,0
+0+0070 <[^>]*> addiu	at,gp,0
 [ 	]*70: [A-Z0-9_]*GPREL[A-Z0-9_]*	small_external_data_label
 0+0074 <[^>]*> sdl	a0,[07]\(at\)
 0+0078 <[^>]*> sdr	a0,[07]\(at\)
 0+007c <[^>]*> lui	at,0x0
 [ 	]*7c: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+0080 <[^>]*> daddiu	at,at,[-0-9]+
+0+0080 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*80: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+0084 <[^>]*> sdl	a0,[07]\(at\)
 0+0088 <[^>]*> sdr	a0,[07]\(at\)
-0+008c <[^>]*> daddiu	at,gp,0
+0+008c <[^>]*> addiu	at,gp,0
 [ 	]*8c: [A-Z0-9_]*GPREL[A-Z0-9_]*	small_external_common
 0+0090 <[^>]*> sdl	a0,[07]\(at\)
 0+0094 <[^>]*> sdr	a0,[07]\(at\)
 0+0098 <[^>]*> lui	at,[-0-9x]+
 [ 	]*98: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+009c <[^>]*> daddiu	at,at,[-0-9]+
+0+009c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*9c: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+00a0 <[^>]*> sdl	a0,[07]\(at\)
 0+00a4 <[^>]*> sdr	a0,[07]\(at\)
-0+00a8 <[^>]*> daddiu	at,gp,[-0-9]+
+0+00a8 <[^>]*> addiu	at,gp,[-0-9]+
 [ 	]*a8: [A-Z0-9_]*GPREL[A-Z0-9_]*	.sbss.*
 0+00ac <[^>]*> sdl	a0,[07]\(at\)
 0+00b0 <[^>]*> sdr	a0,[07]\(at\)
 0+00b4 <[^>]*> lui	at,0x0
 [ 	]*b4: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+00b8 <[^>]*> daddiu	at,at,[-0-9]+
+0+00b8 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*b8: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+00bc <[^>]*> sdl	a0,[07]\(at\)
 0+00c0 <[^>]*> sdr	a0,[07]\(at\)
 0+00c4 <[^>]*> lui	at,0x0
 [ 	]*c4: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+00c8 <[^>]*> daddiu	at,at,[-0-9]+
+0+00c8 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*c8: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+00cc <[^>]*> sdl	a0,[07]\(at\)
 0+00d0 <[^>]*> sdr	a0,[07]\(at\)
-0+00d4 <[^>]*> daddiu	at,gp,1
+0+00d4 <[^>]*> addiu	at,gp,1
 [ 	]*d4: [A-Z0-9_]*GPREL[A-Z0-9_]*	small_external_data_label
 0+00d8 <[^>]*> sdl	a0,[07]\(at\)
 0+00dc <[^>]*> sdr	a0,[07]\(at\)
 0+00e0 <[^>]*> lui	at,0x0
 [ 	]*e0: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+00e4 <[^>]*> daddiu	at,at,[-0-9]+
+0+00e4 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*e4: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+00e8 <[^>]*> sdl	a0,[07]\(at\)
 0+00ec <[^>]*> sdr	a0,[07]\(at\)
-0+00f0 <[^>]*> daddiu	at,gp,1
+0+00f0 <[^>]*> addiu	at,gp,1
 [ 	]*f0: [A-Z0-9_]*GPREL[A-Z0-9_]*	small_external_common
 0+00f4 <[^>]*> sdl	a0,[07]\(at\)
 0+00f8 <[^>]*> sdr	a0,[07]\(at\)
 0+00fc <[^>]*> lui	at,0x0
 [ 	]*fc: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+0100 <[^>]*> daddiu	at,at,[-0-9]+
+0+0100 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*100: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+0104 <[^>]*> sdl	a0,[07]\(at\)
 0+0108 <[^>]*> sdr	a0,[07]\(at\)
-0+010c <[^>]*> daddiu	at,gp,[-0-9]+
+0+010c <[^>]*> addiu	at,gp,[-0-9]+
 [ 	]*10c: [A-Z0-9_]*GPREL[A-Z0-9_]*	.sbss.*
 0+0110 <[^>]*> sdl	a0,[07]\(at\)
 0+0114 <[^>]*> sdr	a0,[07]\(at\)
 0+0118 <[^>]*> lui	at,[-0-9x]+
 [ 	]*118: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+011c <[^>]*> daddiu	at,at,[-0-9]+
+0+011c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*11c: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0120 <[^>]*> sdl	a0,[07]\(at\)
 0+0124 <[^>]*> sdr	a0,[07]\(at\)
 0+0128 <[^>]*> lui	at,[-0-9x]+
 [ 	]*128: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+012c <[^>]*> daddiu	at,at,[-0-9]+
+0+012c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*12c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+0130 <[^>]*> sdl	a0,[07]\(at\)
 0+0134 <[^>]*> sdr	a0,[07]\(at\)
 0+0138 <[^>]*> lui	at,[-0-9x]+
 [ 	]*138: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_data_label
-0+013c <[^>]*> daddiu	at,at,[-0-9]+
+0+013c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*13c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_data_label
 0+0140 <[^>]*> sdl	a0,[07]\(at\)
 0+0144 <[^>]*> sdr	a0,[07]\(at\)
 0+0148 <[^>]*> lui	at,[-0-9x]+
 [ 	]*148: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+014c <[^>]*> daddiu	at,at,[-0-9]+
+0+014c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*14c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+0150 <[^>]*> sdl	a0,[07]\(at\)
 0+0154 <[^>]*> sdr	a0,[07]\(at\)
 0+0158 <[^>]*> lui	at,[-0-9x]+
 [ 	]*158: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_common
-0+015c <[^>]*> daddiu	at,at,[-0-9]+
+0+015c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*15c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_common
 0+0160 <[^>]*> sdl	a0,[07]\(at\)
 0+0164 <[^>]*> sdr	a0,[07]\(at\)
 0+0168 <[^>]*> lui	at,[-0-9x]+
 [ 	]*168: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+016c <[^>]*> daddiu	at,at,[-0-9]+
+0+016c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*16c: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+0170 <[^>]*> sdl	a0,[07]\(at\)
 0+0174 <[^>]*> sdr	a0,[07]\(at\)
 0+0178 <[^>]*> lui	at,[-0-9x]+
 [ 	]*178: [A-Z0-9_]*HI[A-Z0-9_]*	.sbss.*
-0+017c <[^>]*> daddiu	at,at,[-0-9]+
+0+017c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*17c: [A-Z0-9_]*LO[A-Z0-9_]*	.sbss.*
 0+0180 <[^>]*> sdl	a0,[07]\(at\)
 0+0184 <[^>]*> sdr	a0,[07]\(at\)
 0+0188 <[^>]*> lui	at,0x0
 [ 	]*188: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+018c <[^>]*> daddiu	at,at,[-0-9]+
+0+018c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*18c: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0190 <[^>]*> sdl	a0,[07]\(at\)
 0+0194 <[^>]*> sdr	a0,[07]\(at\)
 0+0198 <[^>]*> lui	at,0x0
 [ 	]*198: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+019c <[^>]*> daddiu	at,at,[-0-9]+
+0+019c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*19c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+01a0 <[^>]*> sdl	a0,[07]\(at\)
 0+01a4 <[^>]*> sdr	a0,[07]\(at\)
 0+01a8 <[^>]*> lui	at,0x0
 [ 	]*1a8: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_data_label
-0+01ac <[^>]*> daddiu	at,at,[-0-9]+
+0+01ac <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1ac: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_data_label
 0+01b0 <[^>]*> sdl	a0,[07]\(at\)
 0+01b4 <[^>]*> sdr	a0,[07]\(at\)
 0+01b8 <[^>]*> lui	at,0x0
 [ 	]*1b8: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+01bc <[^>]*> daddiu	at,at,[-0-9]+
+0+01bc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1bc: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+01c0 <[^>]*> sdl	a0,[07]\(at\)
 0+01c4 <[^>]*> sdr	a0,[07]\(at\)
 0+01c8 <[^>]*> lui	at,0x0
 [ 	]*1c8: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_common
-0+01cc <[^>]*> daddiu	at,at,[-0-9]+
+0+01cc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1cc: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_common
 0+01d0 <[^>]*> sdl	a0,[07]\(at\)
 0+01d4 <[^>]*> sdr	a0,[07]\(at\)
 0+01d8 <[^>]*> lui	at,0x0
 [ 	]*1d8: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+01dc <[^>]*> daddiu	at,at,[-0-9]+
+0+01dc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1dc: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+01e0 <[^>]*> sdl	a0,[07]\(at\)
 0+01e4 <[^>]*> sdr	a0,[07]\(at\)
 0+01e8 <[^>]*> lui	at,0x0
 [ 	]*1e8: [A-Z0-9_]*HI[A-Z0-9_]*	.sbss.*
-0+01ec <[^>]*> daddiu	at,at,[-0-9]+
+0+01ec <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1ec: [A-Z0-9_]*LO[A-Z0-9_]*	.sbss.*
 0+01f0 <[^>]*> sdl	a0,[07]\(at\)
 0+01f4 <[^>]*> sdr	a0,[07]\(at\)
 0+01f8 <[^>]*> lui	at,[-0-9x]+
 [ 	]*1f8: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+01fc <[^>]*> daddiu	at,at,[-0-9]+
+0+01fc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1fc: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0200 <[^>]*> sdl	a0,[07]\(at\)
 0+0204 <[^>]*> sdr	a0,[07]\(at\)
 0+0208 <[^>]*> lui	at,[-0-9x]+
 [ 	]*208: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+020c <[^>]*> daddiu	at,at,0
+0+020c <[^>]*> addiu	at,at,0
 [ 	]*20c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+0210 <[^>]*> sdl	a0,[07]\(at\)
 0+0214 <[^>]*> sdr	a0,[07]\(at\)
 0+0218 <[^>]*> lui	at,[-0-9x]+
 [ 	]*218: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_data_label
-0+021c <[^>]*> daddiu	at,at,0
+0+021c <[^>]*> addiu	at,at,0
 [ 	]*21c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_data_label
 0+0220 <[^>]*> sdl	a0,[07]\(at\)
 0+0224 <[^>]*> sdr	a0,[07]\(at\)
 0+0228 <[^>]*> lui	at,[-0-9x]+
 [ 	]*228: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+022c <[^>]*> daddiu	at,at,0
+0+022c <[^>]*> addiu	at,at,0
 [ 	]*22c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+0230 <[^>]*> sdl	a0,[07]\(at\)
 0+0234 <[^>]*> sdr	a0,[07]\(at\)
 0+0238 <[^>]*> lui	at,[-0-9x]+
 [ 	]*238: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_common
-0+023c <[^>]*> daddiu	at,at,0
+0+023c <[^>]*> addiu	at,at,0
 [ 	]*23c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_common
 0+0240 <[^>]*> sdl	a0,[07]\(at\)
 0+0244 <[^>]*> sdr	a0,[07]\(at\)
 0+0248 <[^>]*> lui	at,[-0-9x]+
 [ 	]*248: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+024c <[^>]*> daddiu	at,at,[-0-9]+
+0+024c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*24c: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+0250 <[^>]*> sdl	a0,[07]\(at\)
 0+0254 <[^>]*> sdr	a0,[07]\(at\)
 0+0258 <[^>]*> lui	at,[-0-9x]+
 [ 	]*258: [A-Z0-9_]*HI[A-Z0-9_]*	.sbss.*
-0+025c <[^>]*> daddiu	at,at,[-0-9]+
+0+025c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*25c: [A-Z0-9_]*LO[A-Z0-9_]*	.sbss.*
 0+0260 <[^>]*> sdl	a0,[07]\(at\)
 0+0264 <[^>]*> sdr	a0,[07]\(at\)
 0+0268 <[^>]*> lui	at,[-0-9x]+
 [ 	]*268: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+026c <[^>]*> daddiu	at,at,[-0-9]+
+0+026c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*26c: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0270 <[^>]*> sdl	a0,[07]\(at\)
 0+0274 <[^>]*> sdr	a0,[07]\(at\)
 0+0278 <[^>]*> lui	at,[-0-9x]+
 [ 	]*278: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+027c <[^>]*> daddiu	at,at,[-0-9]+
+0+027c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*27c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+0280 <[^>]*> sdl	a0,[07]\(at\)
 0+0284 <[^>]*> sdr	a0,[07]\(at\)
 0+0288 <[^>]*> lui	at,[-0-9x]+
 [ 	]*288: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_data_label
-0+028c <[^>]*> daddiu	at,at,[-0-9]+
+0+028c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*28c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_data_label
 0+0290 <[^>]*> sdl	a0,[07]\(at\)
 0+0294 <[^>]*> sdr	a0,[07]\(at\)
 0+0298 <[^>]*> lui	at,[-0-9x]+
 [ 	]*298: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+029c <[^>]*> daddiu	at,at,[-0-9]+
+0+029c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*29c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+02a0 <[^>]*> sdl	a0,[07]\(at\)
 0+02a4 <[^>]*> sdr	a0,[07]\(at\)
 0+02a8 <[^>]*> lui	at,[-0-9x]+
 [ 	]*2a8: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_common
-0+02ac <[^>]*> daddiu	at,at,[-0-9]+
+0+02ac <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*2ac: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_common
 0+02b0 <[^>]*> sdl	a0,[07]\(at\)
 0+02b4 <[^>]*> sdr	a0,[07]\(at\)
 0+02b8 <[^>]*> lui	at,[-0-9x]+
 [ 	]*2b8: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+02bc <[^>]*> daddiu	at,at,[-0-9]+
+0+02bc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*2bc: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+02c0 <[^>]*> sdl	a0,[07]\(at\)
 0+02c4 <[^>]*> sdr	a0,[07]\(at\)
 0+02c8 <[^>]*> lui	at,[-0-9x]+
 [ 	]*2c8: [A-Z0-9_]*HI[A-Z0-9_]*	.sbss.*
-0+02cc <[^>]*> daddiu	at,at,[-0-9]+
+0+02cc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*2cc: [A-Z0-9_]*LO[A-Z0-9_]*	.sbss.*
 0+02d0 <[^>]*> sdl	a0,[07]\(at\)
 0+02d4 <[^>]*> sdr	a0,[07]\(at\)

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-24 18:26 [PATCH] Fix distinction of 32/64bit addresses in MIPS gas Thiemo Seufer
@ 2001-08-31  8:02 ` Richard Sandiford
  2001-08-31  8:28   ` H . J . Lu
  2001-08-31  9:17   ` Thiemo Seufer
  0 siblings, 2 replies; 62+ messages in thread
From: Richard Sandiford @ 2001-08-31  8:02 UTC (permalink / raw)
  To: Thiemo Seufer; +Cc: binutils

Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de> writes:

> we can't have 64bit addresses in a 32bit object file format,

I'm not sure what you mean.  I thought elf32 supported 64-bit addresses
through R_MIPS_64?  Besides, isn't the address size really decided by
the ABI?

> so I added a check for mips_64 to the relevant macro. This will fail
> for o64 ABI and possibly for eabi64 too, but these are both virtually
> unimplemented in gas. (I don't really know how eabi64 is defined.)

Richard

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31  8:02 ` Richard Sandiford
@ 2001-08-31  8:28   ` H . J . Lu
  2001-08-31  9:17   ` Thiemo Seufer
  1 sibling, 0 replies; 62+ messages in thread
From: H . J . Lu @ 2001-08-31  8:28 UTC (permalink / raw)
  To: Richard Sandiford; +Cc: Thiemo Seufer, binutils

On Fri, Aug 31, 2001 at 04:02:30PM +0100, Richard Sandiford wrote:
> Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de> writes:
> 
> > we can't have 64bit addresses in a 32bit object file format,
> 
> I'm not sure what you mean.  I thought elf32 supported 64-bit addresses
> through R_MIPS_64?  Besides, isn't the address size really decided by
> the ABI?
> 

I don't think you can use R_MIPS_64 for 32bit ELF.


H.J.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31  8:02 ` Richard Sandiford
  2001-08-31  8:28   ` H . J . Lu
@ 2001-08-31  9:17   ` Thiemo Seufer
  2001-08-31  9:53     ` Geoff Keating
  2001-08-31 10:04     ` Richard Sandiford
  1 sibling, 2 replies; 62+ messages in thread
From: Thiemo Seufer @ 2001-08-31  9:17 UTC (permalink / raw)
  To: binutils

Richard Sandiford wrote:
> Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de> writes:
> 
> > we can't have 64bit addresses in a 32bit object file format,
> 
> I'm not sure what you mean.  I thought elf32 supported 64-bit addresses
> through R_MIPS_64?

MIPS ELF32 has no R_MIPS_64, AFAIK it has no notion of 64bit
entities at all.

> Besides, isn't the address size really decided by
> the ABI?

Sure, and a ABI with 64bit addresses won't fit in a object format
restricted to 32bit.


Thiemo

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31  9:17   ` Thiemo Seufer
@ 2001-08-31  9:53     ` Geoff Keating
  2001-08-31 10:31       ` Thiemo Seufer
  2001-08-31 10:04     ` Richard Sandiford
  1 sibling, 1 reply; 62+ messages in thread
From: Geoff Keating @ 2001-08-31  9:53 UTC (permalink / raw)
  To: ica2_ts; +Cc: binutils

> Mailing-List: contact binutils-help@sourceware.cygnus.com; run by ezmlm
> List-Unsubscribe: < mailto:binutils-unsubscribe-geoffk=cygnus.com@sources.redhat.com >
> List-Subscribe: < mailto:binutils-subscribe@sources.redhat.com >
> List-Archive: < http://sources.redhat.com/ml/binutils/ >
> List-Post: < mailto:binutils@sources.redhat.com >
> List-Help: < mailto:binutils-help@sources.redhat.com >, < http://sources.redhat.com/ml/#faqs >
> Date: Fri, 31 Aug 2001 18:16:57 +0200
> Content-Disposition: inline
> User-Agent: Mutt/1.3.20i
> From: Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de>
> 
> Richard Sandiford wrote:
> > Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de> writes:
> > 
> > > we can't have 64bit addresses in a 32bit object file format,
> > 
> > I'm not sure what you mean.  I thought elf32 supported 64-bit addresses
> > through R_MIPS_64?
> 
> MIPS ELF32 has no R_MIPS_64, AFAIK it has no notion of 64bit
> entities at all.

Doesn't this work by R_MIPS_64 being a sign-extended 32-bit address?

You don't get real 64-bit addresses, but you can create 64-bit values
from 32-bit addresses, useful for a program running on a 64-bit chip
but being loaded in the 32-bit address space.

-- 
- Geoffrey Keating <geoffk@geoffk.org>

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31  9:17   ` Thiemo Seufer
  2001-08-31  9:53     ` Geoff Keating
@ 2001-08-31 10:04     ` Richard Sandiford
  2001-08-31 10:41       ` Thiemo Seufer
  1 sibling, 1 reply; 62+ messages in thread
From: Richard Sandiford @ 2001-08-31 10:04 UTC (permalink / raw)
  To: Thiemo Seufer; +Cc: binutils

Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de> writes:
> Richard Sandiford wrote:
> > Besides, isn't the address size really decided by
> > the ABI?
> 
> Sure, and a ABI with 64bit addresses won't fit in a object format
> restricted to 32bit.

But the register size is already determined by the ABI.  Isn't it more
consistent to do the same with the address size?

Richard

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31  9:53     ` Geoff Keating
@ 2001-08-31 10:31       ` Thiemo Seufer
       [not found]         ` <mailpost.999279120.2469@postal.sibyte.com>
  0 siblings, 1 reply; 62+ messages in thread
From: Thiemo Seufer @ 2001-08-31 10:31 UTC (permalink / raw)
  To: binutils

Geoff Keating wrote:
[snip]
> > > > we can't have 64bit addresses in a 32bit object file format,
> > > 
> > > I'm not sure what you mean.  I thought elf32 supported 64-bit addresses
> > > through R_MIPS_64?
> > 
> > MIPS ELF32 has no R_MIPS_64, AFAIK it has no notion of 64bit
> > entities at all.
> 
> Doesn't this work by R_MIPS_64 being a sign-extended 32-bit address?

Reiteration: MIPS ELF32 has no R_MIPS_64.

> You don't get real 64-bit addresses, but you can create 64-bit values
> from 32-bit addresses, useful for a program running on a 64-bit chip
> but being loaded in the 32-bit address space.

It's a property of all 64bit capable MIPS Hardware to sign-extend
32bit addresses, this has nothing to do with the object format.
Tools like gdb have to sign-extend the 32bit addresses theirselves
to keep in sync with the Hardware.


Thiemo

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
       [not found]         ` <mailpost.999279120.2469@postal.sibyte.com>
@ 2001-08-31 10:37           ` cgd
  2001-08-31 11:46             ` Thiemo Seufer
  0 siblings, 1 reply; 62+ messages in thread
From: cgd @ 2001-08-31 10:37 UTC (permalink / raw)
  To: ica2_ts; +Cc: binutils

ica2_ts@csv.ica.uni-stuttgart.de ("Thiemo Seufer") writes:
> Geoff Keating wrote:
> [snip]
> > > > > we can't have 64bit addresses in a 32bit object file format,
> > > > 
> > > > I'm not sure what you mean.  I thought elf32 supported 64-bit addresses
> > > > through R_MIPS_64?
> > > 
> > > MIPS ELF32 has no R_MIPS_64, AFAIK it has no notion of 64bit
> > > entities at all.
> > 
> > Doesn't this work by R_MIPS_64 being a sign-extended 32-bit address?
> 
> Reiteration: MIPS ELF32 has no R_MIPS_64.

Maybe i'm missing something in what you're saying but...

bfd's elf32-mips.c definitely has some amount of support for
R_MIPS_64...

As far as I know, we (SiByte) have been using it for ... a while now
in code that gets compiled with -mips[34] (or similar 8-) -mlong64,
into elf32 object files...



cgd

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 10:04     ` Richard Sandiford
@ 2001-08-31 10:41       ` Thiemo Seufer
  0 siblings, 0 replies; 62+ messages in thread
From: Thiemo Seufer @ 2001-08-31 10:41 UTC (permalink / raw)
  To: binutils

Richard Sandiford wrote:
> Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de> writes:
> > Richard Sandiford wrote:
> > > Besides, isn't the address size really decided by
> > > the ABI?
> > 
> > Sure, and a ABI with 64bit addresses won't fit in a object format
> > restricted to 32bit.
> 
> But the register size is already determined by the ABI.  Isn't it more
> consistent to do the same with the address size?

That's what it does. The mips_64 variable is set if ABI 64 is
specified. I don't know what to do with o64 or eabi64, there
isn't much implemented besides the header flag settings.


Thiemo

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 10:37           ` cgd
@ 2001-08-31 11:46             ` Thiemo Seufer
  2001-08-31 11:49               ` Ian Lance Taylor
                                 ` (3 more replies)
  0 siblings, 4 replies; 62+ messages in thread
From: Thiemo Seufer @ 2001-08-31 11:46 UTC (permalink / raw)
  To: binutils

cgd@broadcom.com wrote:
[snip]
> > > > > > we can't have 64bit addresses in a 32bit object file format,
> > > > > 
> > > > > I'm not sure what you mean.  I thought elf32 supported 64-bit addresses
> > > > > through R_MIPS_64?
> > > > 
> > > > MIPS ELF32 has no R_MIPS_64, AFAIK it has no notion of 64bit
> > > > entities at all.
> > > 
> > > Doesn't this work by R_MIPS_64 being a sign-extended 32-bit address?
> > 
> > Reiteration: MIPS ELF32 has no R_MIPS_64.
> 
> Maybe i'm missing something in what you're saying but...

I'm talking about:

SYSTEM V APPLICATION BINARY INTERFACE
MIPS RISC Processor Supplement
3rd Edition

where no such relocation is defined.

> bfd's elf32-mips.c definitely has some amount of support for
> R_MIPS_64...

It is a relocation from ABI 64, ABI N32 is a variation of it WRT.
Even n32 code does not use R_MIPS_64 or R_MIPS_SUB because it can't
hold a 64bit value in it's relocations (and it has no use for 64bit
anyway).

> As far as I know, we (SiByte) have been using it for ... a while now
> in code that gets compiled with -mips[34] (or similar 8-) -mlong64,
> into elf32 object files...

I saw the comments in elf32-mips.c and hoped nobody actually used
it anyway. It violates every applicable standard.

Can you give a example where R_MIPS_64 is actually needed instead
of R_MIPS_32? If the output is truncated I can't see why R_MIPS_32
(possibly with tweaked content) insn't enough.


Thiemo

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 11:46             ` Thiemo Seufer
@ 2001-08-31 11:49               ` Ian Lance Taylor
  2001-08-31 11:50               ` Ian Lance Taylor
                                 ` (2 subsequent siblings)
  3 siblings, 0 replies; 62+ messages in thread
From: Ian Lance Taylor @ 2001-08-31 11:49 UTC (permalink / raw)
  To: Thiemo Seufer; +Cc: binutils



^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 11:46             ` Thiemo Seufer
  2001-08-31 11:49               ` Ian Lance Taylor
@ 2001-08-31 11:50               ` Ian Lance Taylor
       [not found]               ` <mailpost.999283589.5294@postal.sibyte.com>
  2001-08-31 14:49               ` Andrew Cagney
  3 siblings, 0 replies; 62+ messages in thread
From: Ian Lance Taylor @ 2001-08-31 11:50 UTC (permalink / raw)
  To: Thiemo Seufer; +Cc: binutils

Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de> writes:

> > As far as I know, we (SiByte) have been using it for ... a while now
> > in code that gets compiled with -mips[34] (or similar 8-) -mlong64,
> > into elf32 object files...
> 
> I saw the comments in elf32-mips.c and hoped nobody actually used
> it anyway. It violates every applicable standard.

There is a difference between violating a standard and extending a
standard.  Violating a standard is generally a bad idea.  Extending a
standard is merely risky.

Ian

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
       [not found]               ` <mailpost.999283589.5294@postal.sibyte.com>
@ 2001-08-31 12:41                 ` cgd
  2001-08-31 14:31                   ` H . J . Lu
  2001-08-31 18:22                   ` Thiemo Seufer
  0 siblings, 2 replies; 62+ messages in thread
From: cgd @ 2001-08-31 12:41 UTC (permalink / raw)
  To: ica2_ts; +Cc: binutils

ica2_ts@csv.ica.uni-stuttgart.de ("Thiemo Seufer") writes:
> Can you give a example where R_MIPS_64 is actually needed instead
> of R_MIPS_32? If the output is truncated I can't see why R_MIPS_32
> (possibly with tweaked content) insn't enough.

cat > foo.c << __EOF__
extern int foo;

int *bar = &foo;
__EOF
mips-elf-gcc -mips4 -mlong64 -c foo.c


i believe that should be sufficient.  (certainly, it does the trick
here with both our mips-linux tools and mips-elf-variant tools... 8-)

yes, i know that the pointer is going to be constrainted to being a
sign-extended 32-bit value, but neither the compiler or any assembly
code that uses it needs to know that (or should).  As far as they're
concerned, pointers are 64-bit values and they're loaded with ld, etc.

yes, there's code that actually uses this.  why?  it's really nice to
have code that is linked into a 32-bit address space, but can have
'usable' 64-bit pointers in C code.  e.g. code that lives at the boot
vector, but wants to address data in xkphys...  One could use 64-bit
ELF for these programs, but that support is really new (does it even
work completely yet?), and, really, there's no reason for people doing
this to _want_ to switch to 64-bit ELF so why do it?



chris

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 12:41                 ` cgd
@ 2001-08-31 14:31                   ` H . J . Lu
  2001-09-03 23:07                     ` cgd
  2001-08-31 18:22                   ` Thiemo Seufer
  1 sibling, 1 reply; 62+ messages in thread
From: H . J . Lu @ 2001-08-31 14:31 UTC (permalink / raw)
  To: cgd; +Cc: ica2_ts, binutils

On Fri, Aug 31, 2001 at 12:41:37PM -0700, cgd@broadcom.com wrote:
> ica2_ts@csv.ica.uni-stuttgart.de ("Thiemo Seufer") writes:
> > Can you give a example where R_MIPS_64 is actually needed instead
> > of R_MIPS_32? If the output is truncated I can't see why R_MIPS_32
> > (possibly with tweaked content) insn't enough.
> 
> cat > foo.c << __EOF__
> extern int foo;
> 
> int *bar = &foo;
> __EOF
> mips-elf-gcc -mips4 -mlong64 -c foo.c
> 
> 
> i believe that should be sufficient.  (certainly, it does the trick
> here with both our mips-linux tools and mips-elf-variant tools... 8-)
> 
> yes, i know that the pointer is going to be constrainted to being a
> sign-extended 32-bit value, but neither the compiler or any assembly
> code that uses it needs to know that (or should).  As far as they're
> concerned, pointers are 64-bit values and they're loaded with ld, etc.

Why do you need R_MIPS_64 for that?

> 
> yes, there's code that actually uses this.  why?  it's really nice to
> have code that is linked into a 32-bit address space, but can have
> 'usable' 64-bit pointers in C code.  e.g. code that lives at the boot
> vector, but wants to address data in xkphys...  One could use 64-bit
> ELF for these programs, but that support is really new (does it even
> work completely yet?), and, really, there's no reason for people doing
> this to _want_ to switch to 64-bit ELF so why do it?

What is the 32bit address of `foo'?


H.J.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 11:46             ` Thiemo Seufer
                                 ` (2 preceding siblings ...)
       [not found]               ` <mailpost.999283589.5294@postal.sibyte.com>
@ 2001-08-31 14:49               ` Andrew Cagney
  2001-08-31 15:00                 ` H . J . Lu
  2001-08-31 18:25                 ` Thiemo Seufer
  3 siblings, 2 replies; 62+ messages in thread
From: Andrew Cagney @ 2001-08-31 14:49 UTC (permalink / raw)
  To: Thiemo Seufer; +Cc: binutils

> 
> I'm talking about:
> 
> SYSTEM V APPLICATION BINARY INTERFACE
> MIPS RISC Processor Supplement
> 3rd Edition
> 
> where no such relocation is defined.

Keep in mind that there is often a gap between a standard and the real 
(aka embedded) world.  I can't see how a non SysV MIPS ABI can be 
expected to comply with a SysV standard.

	Andrew


^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 14:49               ` Andrew Cagney
@ 2001-08-31 15:00                 ` H . J . Lu
  2001-08-31 16:30                   ` Eric Christopher
  2001-08-31 17:35                   ` matthew green
  2001-08-31 18:25                 ` Thiemo Seufer
  1 sibling, 2 replies; 62+ messages in thread
From: H . J . Lu @ 2001-08-31 15:00 UTC (permalink / raw)
  To: Andrew Cagney; +Cc: Thiemo Seufer, binutils

On Fri, Aug 31, 2001 at 05:49:22PM -0400, Andrew Cagney wrote:
> > 
> > I'm talking about:
> > 
> > SYSTEM V APPLICATION BINARY INTERFACE
> > MIPS RISC Processor Supplement
> > 3rd Edition
> > 
> > where no such relocation is defined.
> 
> Keep in mind that there is often a gap between a standard and the real 
> (aka embedded) world.  I can't see how a non SysV MIPS ABI can be 
> expected to comply with a SysV standard.
> 

If I am rightt, the main problem is Thiemo and I want to support a
real MIPS ELF ABI, which mostly means dynamic binaries. As the most
ELF ABI, the MIPS ABI doesn't really cover static binaries. You can
do whatever you want with static binaries. It doesn't really matter
if you follow an ABI or not since a static binary is a standalone
binary. Let me ask, how many binutils developers are using the
current binutils to generate mips dynamic binaries?


H.J.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 15:00                 ` H . J . Lu
@ 2001-08-31 16:30                   ` Eric Christopher
  2001-08-31 16:41                     ` Andrew Cagney
                                       ` (2 more replies)
  2001-08-31 17:35                   ` matthew green
  1 sibling, 3 replies; 62+ messages in thread
From: Eric Christopher @ 2001-08-31 16:30 UTC (permalink / raw)
  To: H . J . Lu; +Cc: Andrew Cagney, Thiemo Seufer, binutils

> If I am rightt, the main problem is Thiemo and I want to support a
> real MIPS ELF ABI, which mostly means dynamic binaries. As the most
> ELF ABI, the MIPS ABI doesn't really cover static binaries. You can
> do whatever you want with static binaries. It doesn't really matter
> if you follow an ABI or not since a static binary is a standalone
> binary. Let me ask, how many binutils developers are using the
> current binutils to generate mips dynamic binaries?
> 

What do you mean by MIPS ABI? There are:

o32
o64
n32
eabi
meabi

The last two are embedded.  The first, eabi, was designed mostly by
cygnus and is the abi for most embedded toolchains. The last is a new
abi designed by MIPS that is very close to n32, but also used for
embedded.

What we should probably do for linux (since that seems to be what you
really care about) is to do one of two things:

a) take n32, this will ensure that we can deal with sgi programs
b) take Sys V with the MIPS extensions this is also sane.

I'm open to discussion and other ideas, but you need to be _much_ more
specific about what you mean when discussing mips abis.

-eric

-- 
Look out behind you!

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 16:30                   ` Eric Christopher
@ 2001-08-31 16:41                     ` Andrew Cagney
  2001-08-31 16:46                       ` H . J . Lu
  2001-08-31 16:44                     ` H . J . Lu
  2001-08-31 18:49                     ` Thiemo Seufer
  2 siblings, 1 reply; 62+ messages in thread
From: Andrew Cagney @ 2001-08-31 16:41 UTC (permalink / raw)
  To: Eric Christopher; +Cc: H . J . Lu, Thiemo Seufer, binutils

> o32
> o64
> n32
> eabi
> meabi

And lets not forget that LE ABI that ran on DEC's MIPS machines (aka PMAX).

	Andrew


^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 16:30                   ` Eric Christopher
  2001-08-31 16:41                     ` Andrew Cagney
@ 2001-08-31 16:44                     ` H . J . Lu
  2001-08-31 17:42                       ` matthew green
  2001-08-31 18:49                     ` Thiemo Seufer
  2 siblings, 1 reply; 62+ messages in thread
From: H . J . Lu @ 2001-08-31 16:44 UTC (permalink / raw)
  To: Eric Christopher; +Cc: Andrew Cagney, Thiemo Seufer, binutils

On Fri, Aug 31, 2001 at 04:29:33PM -0700, Eric Christopher wrote:
> > If I am rightt, the main problem is Thiemo and I want to support a
> > real MIPS ELF ABI, which mostly means dynamic binaries. As the most
> > ELF ABI, the MIPS ABI doesn't really cover static binaries. You can
> > do whatever you want with static binaries. It doesn't really matter
> > if you follow an ABI or not since a static binary is a standalone
> > binary. Let me ask, how many binutils developers are using the
> > current binutils to generate mips dynamic binaries?
> > 
> 
> What do you mean by MIPS ABI? There are:
> 
> o32
> o64
> n32
> eabi
> meabi
> 
> The last two are embedded.  The first, eabi, was designed mostly by

For the embedded, I assume everything is static, you can do whatever
you want. As for the dynamic binaries, you have to do by the book,
at least, when you generate DSOs/executables.

> cygnus and is the abi for most embedded toolchains. The last is a new
> abi designed by MIPS that is very close to n32, but also used for
> embedded.
> 
> What we should probably do for linux (since that seems to be what you
> really care about) is to do one of two things:
> 
> a) take n32, this will ensure that we can deal with sgi programs
> b) take Sys V with the MIPS extensions this is also sane.
> 

n32 is a 32bit ABI for a kerrnel which supports 64bit registers. You
can only use n32 under a 64bit mips kernel or a mips kernel which
save/restore 64bit registers. I don't believe the 32bit Linux mips
kernel saves/restores 64bit registers. That means 32bit Linux/mips has
to use o32. Also I don't know if we want to support n32 in glibc. We
don't support it for ia64 and I doubt we will support it for mips.

If you take a close look at the mips linker codes, most of it is to
deal with dynamic binaries, which was rarely tested before. I guess
Linux/mips is the only platform on which the mips linker gets really
tested, just like the i386 ELF linker/assembler.


H.J.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 16:41                     ` Andrew Cagney
@ 2001-08-31 16:46                       ` H . J . Lu
  2001-08-31 17:45                         ` matthew green
  2001-09-02 19:25                         ` J Grant
  0 siblings, 2 replies; 62+ messages in thread
From: H . J . Lu @ 2001-08-31 16:46 UTC (permalink / raw)
  To: Andrew Cagney; +Cc: Eric Christopher, Thiemo Seufer, binutils

On Fri, Aug 31, 2001 at 07:41:27PM -0400, Andrew Cagney wrote:
> > o32
> > o64
> > n32
> > eabi
> > meabi
> 
> And lets not forget that LE ABI that ran on DEC's MIPS machines (aka PMAX).
> 

What is that? Is that ELF? Where can I find the spec for that?


H.J.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 15:00                 ` H . J . Lu
  2001-08-31 16:30                   ` Eric Christopher
@ 2001-08-31 17:35                   ` matthew green
  2001-08-31 19:05                     ` H . J . Lu
  1 sibling, 1 reply; 62+ messages in thread
From: matthew green @ 2001-08-31 17:35 UTC (permalink / raw)
  To: H . J . Lu; +Cc: Thiemo Seufer, binutils, Andrew Cagney

   
   binary. Let me ask, how many binutils developers are using the
   current binutils to generate mips dynamic binaries?


i have been for several years on netbsd/pmax.


.mrg.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 16:44                     ` H . J . Lu
@ 2001-08-31 17:42                       ` matthew green
  2001-08-31 19:06                         ` H . J . Lu
  0 siblings, 1 reply; 62+ messages in thread
From: matthew green @ 2001-08-31 17:42 UTC (permalink / raw)
  To: H . J . Lu; +Cc: Andrew Cagney, Thiemo Seufer, binutils, Eric Christopher

   
   If you take a close look at the mips linker codes, most of it is to
   deal with dynamic binaries, which was rarely tested before. I guess
   Linux/mips is the only platform on which the mips linker gets really
   tested, just like the i386 ELF linker/assembler.


hmm?  i don't recall exactly when i started using netbsd/pmax, but it
was over 3 years ago.  it was around the time they switched from ECOFF
to ELF (after NetBSD 1.3? i forget).

seems to have been working pretty well during this time.


.mrg.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 16:46                       ` H . J . Lu
@ 2001-08-31 17:45                         ` matthew green
  2001-09-02 19:25                         ` J Grant
  1 sibling, 0 replies; 62+ messages in thread
From: matthew green @ 2001-08-31 17:45 UTC (permalink / raw)
  To: H . J . Lu; +Cc: Eric Christopher, Thiemo Seufer, binutils, Andrew Cagney

   On Fri, Aug 31, 2001 at 07:41:27PM -0400, Andrew Cagney wrote:
   > > o32
   > > o64
   > > n32
   > > eabi
   > > meabi
   > 
   > And lets not forget that LE ABI that ran on DEC's MIPS machines (aka PMAX).
   > 
   
   What is that? Is that ELF? Where can I find the spec for that?


try: http://www.netbsd.org/Ports/pmax/

this is the oldest of the NetBSD/mips ports, but there are now 
i believe 7 NetBSD mips ports.


.mrg.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 12:41                 ` cgd
  2001-08-31 14:31                   ` H . J . Lu
@ 2001-08-31 18:22                   ` Thiemo Seufer
  2001-09-03  2:57                     ` Richard Sandiford
  1 sibling, 1 reply; 62+ messages in thread
From: Thiemo Seufer @ 2001-08-31 18:22 UTC (permalink / raw)
  To: binutils

cgd@broadcom.com wrote:
[snip]
> yes, i know that the pointer is going to be constrainted to being a
> sign-extended 32-bit value, but neither the compiler or any assembly
> code that uses it needs to know that (or should).  As far as they're
> concerned, pointers are 64-bit values and they're loaded with ld, etc.

I see. Btw, my patch actually doesn't change this behaviour, the
HAVE_32BIT_ADDRESSES macro cares about macro expansion, so it
changes an address load via immediates from a "lui; daddiu" sequence
to "lui; addiu", this makes no difference. An "ld" isn't changed.

> yes, there's code that actually uses this.  why?  it's really nice to
> have code that is linked into a 32-bit address space, but can have
> 'usable' 64-bit pointers in C code.  e.g. code that lives at the boot
> vector, but wants to address data in xkphys...

This is something similiar to the technique used for the current
mips64-linux kernels.


Thiemo

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 14:49               ` Andrew Cagney
  2001-08-31 15:00                 ` H . J . Lu
@ 2001-08-31 18:25                 ` Thiemo Seufer
  2001-08-31 20:46                   ` Ian Lance Taylor
  1 sibling, 1 reply; 62+ messages in thread
From: Thiemo Seufer @ 2001-08-31 18:25 UTC (permalink / raw)
  To: binutils

Andrew Cagney wrote:
> >
> >I'm talking about:
> >
> >SYSTEM V APPLICATION BINARY INTERFACE
> >MIPS RISC Processor Supplement
> >3rd Edition
> >
> >where no such relocation is defined.
> 
> Keep in mind that there is often a gap between a standard and the real 
> (aka embedded) world.

The embedded world isn't everything. :-)

> I can't see how a non SysV MIPS ABI can be 
> expected to comply with a SysV standard.

AFAICS this use of R_MIPS_64 isn't covered by any ABI.


Thiemo

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 16:30                   ` Eric Christopher
  2001-08-31 16:41                     ` Andrew Cagney
  2001-08-31 16:44                     ` H . J . Lu
@ 2001-08-31 18:49                     ` Thiemo Seufer
  2 siblings, 0 replies; 62+ messages in thread
From: Thiemo Seufer @ 2001-08-31 18:49 UTC (permalink / raw)
  To: binutils

Eric Christopher wrote:
[snip]
> What do you mean by MIPS ABI? There are:
> 
> o32
> o64
> n32
> eabi
> meabi

64 is missing here.

[snip]
> What we should probably do for linux (since that seems to be what you
> really care about) is to do one of two things:

mips-linux is very different from mips64-linux WRT.

> a) take n32, this will ensure that we can deal with sgi programs
> b) take Sys V with the MIPS extensions this is also sane.

mips-linux supports 32bit CPU's, so o32 is the only one of these
ABI's that is usable.

mips64-linux has currently a o32 ABI, too, because there is no
appropriate toolchain for something else. This is obviously not
what's desireable.

> I'm open to discussion and other ideas, but you need to be _much_ more
> specific about what you mean when discussing mips abis.

o64 is a low performance 64bit ABI which is AFAIK not even
documented.

Implementing the full n32 or 64 ABI as defined by SGI would e.g.
introduce Quickstart, which is rather weird and obsoleted by
libc prelinking.

I don't know if (m)eabi can replace n32 on linux, what are
the differences mtween these ABI's?


Thiemo

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 17:35                   ` matthew green
@ 2001-08-31 19:05                     ` H . J . Lu
  0 siblings, 0 replies; 62+ messages in thread
From: H . J . Lu @ 2001-08-31 19:05 UTC (permalink / raw)
  To: matthew green; +Cc: Thiemo Seufer, binutils, Andrew Cagney

On Sat, Sep 01, 2001 at 10:35:13AM +1000, matthew green wrote:
>    
>    binary. Let me ask, how many binutils developers are using the
>    current binutils to generate mips dynamic binaries?
> 
> 
> i have been for several years on netbsd/pmax.

I said `the current binutils'. As far as I know, the ELF mips
linker/assembler were broken for dynamic binaries only a few weeks
ago. I just fixed another linker bug yesterday. I doubt netbsd/pmax
uses the current binutils from CVS trunk.


H.J.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 17:42                       ` matthew green
@ 2001-08-31 19:06                         ` H . J . Lu
  2001-08-31 19:11                           ` matthew green
  0 siblings, 1 reply; 62+ messages in thread
From: H . J . Lu @ 2001-08-31 19:06 UTC (permalink / raw)
  To: matthew green; +Cc: Andrew Cagney, Thiemo Seufer, binutils, Eric Christopher

On Sat, Sep 01, 2001 at 10:41:41AM +1000, matthew green wrote:
>    
>    If you take a close look at the mips linker codes, most of it is to
>    deal with dynamic binaries, which was rarely tested before. I guess
>    Linux/mips is the only platform on which the mips linker gets really
>    tested, just like the i386 ELF linker/assembler.
> 
> 
> hmm?  i don't recall exactly when i started using netbsd/pmax, but it
> was over 3 years ago.  it was around the time they switched from ECOFF
> to ELF (after NetBSD 1.3? i forget).
> 
> seems to have been working pretty well during this time.

Not even close. Just check the recent ld/gas ChangeLog entries for
mips/ELF.


H.J.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 19:06                         ` H . J . Lu
@ 2001-08-31 19:11                           ` matthew green
       [not found]                             ` <mailpost.999310274.17560@postal.sibyte.com>
  0 siblings, 1 reply; 62+ messages in thread
From: matthew green @ 2001-08-31 19:11 UTC (permalink / raw)
  To: H . J . Lu; +Cc: Andrew Cagney, Thiemo Seufer, binutils, Eric Christopher

   > hmm?  i don't recall exactly when i started using netbsd/pmax, but it
   > was over 3 years ago.  it was around the time they switched from ECOFF
   > to ELF (after NetBSD 1.3? i forget).
   > 
   > seems to have been working pretty well during this time.
   
   Not even close. Just check the recent ld/gas ChangeLog entries for
   mips/ELF.


sure, there are bugs, but there's no ignoring the fact that these
tools have been used by a whole lot of people for a number of years
quite successfullly.  it's simply true.


.mrg.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 18:25                 ` Thiemo Seufer
@ 2001-08-31 20:46                   ` Ian Lance Taylor
  2001-08-31 21:04                     ` Thiemo Seufer
  0 siblings, 1 reply; 62+ messages in thread
From: Ian Lance Taylor @ 2001-08-31 20:46 UTC (permalink / raw)
  To: Thiemo Seufer; +Cc: binutils

Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de> writes:

> > I can't see how a non SysV MIPS ABI can be 
> > expected to comply with a SysV standard.
> 
> AFAICS this use of R_MIPS_64 isn't covered by any ABI.

To make my point in a different way, the GNU tools do a lot of things
which aren't covered by any ABI.  That doesn't make them wrong.

For example, the i386 ELF backend supports 8-bit and 16-bit
relocations.  They are not covered by any ABI, but they are required
to build 16-bit code used by PC bootstrap code.

Ian

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 20:46                   ` Ian Lance Taylor
@ 2001-08-31 21:04                     ` Thiemo Seufer
  0 siblings, 0 replies; 62+ messages in thread
From: Thiemo Seufer @ 2001-08-31 21:04 UTC (permalink / raw)
  To: binutils; +Cc: ica2_ts

Ian Lance Taylor wrote:
> Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de> writes:
> 
> > > I can't see how a non SysV MIPS ABI can be 
> > > expected to comply with a SysV standard.
> > 
> > AFAICS this use of R_MIPS_64 isn't covered by any ABI.
> 
> To make my point in a different way, the GNU tools do a lot of things
> which aren't covered by any ABI.  That doesn't make them wrong.

I agree.

> For example, the i386 ELF backend supports 8-bit and 16-bit
> relocations.  They are not covered by any ABI, but they are required
> to build 16-bit code used by PC bootstrap code.

The problem with R_MIPS_64 is that it is part of ABI 64 and ABI N32,
being unused in the latter. We now have a GNU extension which uses
this relocation with different semantics. As long as this extension
isn't used in n32 we are probably safe, otherwise it may break
linking. The clean way would have been to invent a R_MIPS_GNU_64
relocation for this purpose. Well, OTOH there's no urgent need
to change current behaviour.


Thiemo

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 16:46                       ` H . J . Lu
  2001-08-31 17:45                         ` matthew green
@ 2001-09-02 19:25                         ` J Grant
  1 sibling, 0 replies; 62+ messages in thread
From: J Grant @ 2001-09-02 19:25 UTC (permalink / raw)
  To: H . J . Lu; +Cc: Andrew Cagney, Eric Christopher, Thiemo Seufer, binutils

What happend to the n64 (new 64bit) ? is this not supported

JG

"H . J . Lu" wrote:
> 
> On Fri, Aug 31, 2001 at 07:41:27PM -0400, Andrew Cagney wrote:
> > > o32
> > > o64
> > > n32
> > > eabi
> > > meabi
> >
> > And lets not forget that LE ABI that ran on DEC's MIPS machines (aka PMAX).
> >
> 
> What is that? Is that ELF? Where can I find the spec for that?
> 
> H.J.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 18:22                   ` Thiemo Seufer
@ 2001-09-03  2:57                     ` Richard Sandiford
  2001-09-03 15:00                       ` Thiemo Seufer
  0 siblings, 1 reply; 62+ messages in thread
From: Richard Sandiford @ 2001-09-03  2:57 UTC (permalink / raw)
  To: binutils

Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de> writes:
> cgd@broadcom.com wrote:
> [snip]
> > yes, i know that the pointer is going to be constrainted to being a
> > sign-extended 32-bit value, but neither the compiler or any assembly
> > code that uses it needs to know that (or should).  As far as they're
> > concerned, pointers are 64-bit values and they're loaded with ld, etc.
> 
> I see. Btw, my patch actually doesn't change this behaviour, the
> HAVE_32BIT_ADDRESSES macro cares about macro expansion, so it
> changes an address load via immediates from a "lui; daddiu" sequence
> to "lui; addiu", this makes no difference. An "ld" isn't changed.

But HAVE_32BIT_ADDRESSES controls all the address calcuations done by
macros, not just those that are guaranteed to be 32-bit values.  To take
one example, if "foo" is in .sdata, won't:

	la $4,foo

use

	addiu $4,$gp,foo

after your patch?  Is $gp guaranteed to be a 32-bit value when 64-bit
pointers are being used?

Richard

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-03  2:57                     ` Richard Sandiford
@ 2001-09-03 15:00                       ` Thiemo Seufer
  0 siblings, 0 replies; 62+ messages in thread
From: Thiemo Seufer @ 2001-09-03 15:00 UTC (permalink / raw)
  To: binutils

Richard Sandiford wrote:
> Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de> writes:
> > cgd@broadcom.com wrote:
> > [snip]
> > > yes, i know that the pointer is going to be constrainted to being a
> > > sign-extended 32-bit value, but neither the compiler or any assembly
> > > code that uses it needs to know that (or should).  As far as they're
> > > concerned, pointers are 64-bit values and they're loaded with ld, etc.
> > 
> > I see. Btw, my patch actually doesn't change this behaviour, the
> > HAVE_32BIT_ADDRESSES macro cares about macro expansion, so it
> > changes an address load via immediates from a "lui; daddiu" sequence
> > to "lui; addiu", this makes no difference. An "ld" isn't changed.
> 
> But HAVE_32BIT_ADDRESSES controls all the address calcuations done by
> macros, not just those that are guaranteed to be 32-bit values.  To take
> one example, if "foo" is in .sdata, won't:
> 	la $4,foo
> 
> use
> 
> 	addiu $4,$gp,foo

currently "la $4, foo" becomes with

CNU as:
   0:   3c040000        lui     a0,0x0
                        0: R_MIPS_HI16  foo
   4:   64840000        daddiu  a0,a0,0
                        4: R_MIPS_LO16  foo

GNU as with my patch:
   0:   3c040000        lui     a0,0x0
                        0: R_MIPS_HI16  foo
   4:   24840000        addiu   a0,a0,0
                        4: R_MIPS_LO16  foo

this is the same than o32 and the n32 SGI as do. It doesn't make a
difference, both are equivalent on a 64bit capable processor.
With "la" and -KPIC, there is no difference at all, but with "dla"
we have this:

GNU as with -KPIC:
   c:   df840000        ld      a0,0(gp)
                        c: R_MIPS_GOT16 foo

GNU as with my patch and -KPIC:
   c:   8f840000        lw      a0,0(gp)
                        c: R_MIPS_GOT16 foo

SGI as with -n32 -non_shared:
   0:   8f840000        lw      a0,0(gp)
                        0: R_MIPS_GOT_DISP      foo

For reference I also tried

SGI as with -64:
   0:   df840000        ld      a0,0(gp)
                        0: R_MIPS_GOT_DISP      foo

SGI as with -64 -non_shared:
   0:   3c040000        lui     a0,0x0
                        0: R_MIPS_HIGHEST       foo
   4:   64840000        daddiu  a0,a0,0
                        4: R_MIPS_HIGHER        foo
   8:   00042438        dsll    a0,a0,0x10
   c:   64840000        daddiu  a0,a0,0
                        c: R_MIPS_HI16  foo
  10:   00042438        dsll    a0,a0,0x10
  14:   64840000        daddiu  a0,a0,0
                        14: R_MIPS_LO16 foo

If somebody uses gas to address memory in 64bit space with a $gp
relative address model, this would fail with my patch (It's the
small part where I replaced "dbl" by "HAVE_32BIT_ADDRESS").
Is such a use of gas realistic?

> after your patch?  Is $gp guaranteed to be a 32-bit value when 64-bit
> pointers are being used?

In this scenario, $gp is a sign-extended 32bit value.


Thiemo

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-08-31 14:31                   ` H . J . Lu
@ 2001-09-03 23:07                     ` cgd
  2001-09-06 10:50                       ` H . J . Lu
  0 siblings, 1 reply; 62+ messages in thread
From: cgd @ 2001-09-03 23:07 UTC (permalink / raw)
  To: H . J . Lu; +Cc: ica2_ts, binutils

"H . J . Lu" <hjl@lucon.org> writes:
> > yes, i know that the pointer is going to be constrainted to being a
> > sign-extended 32-bit value, but neither the compiler or any assembly
> > code that uses it needs to know that (or should).  As far as they're
> > concerned, pointers are 64-bit values and they're loaded with ld, etc.
> 
> Why do you need R_MIPS_64 for that?

Don't really know that that specific reloc is necessary... but that
_is_ what the tools seem to generate, no?

However no matter how you cut it, you still need a reloc that "32 bit
address, plus 32 bits of sign extension."


> What is the 32bit address of `foo'?

bit 31 may or may not be set, depending on what exactly you're
compiling.

(I've personally used that type of construction for both things that
live at the boot address, and things which live down in (k)useg, and
we contanute to use that on a daily basis.)



cgd

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
       [not found]                             ` <mailpost.999310274.17560@postal.sibyte.com>
@ 2001-09-03 23:18                               ` cgd
  2001-09-06 11:00                                 ` H . J . Lu
  0 siblings, 1 reply; 62+ messages in thread
From: cgd @ 2001-09-03 23:18 UTC (permalink / raw)
  To: mrg; +Cc: binutils, thorpej, simonb

mrg@cygnus.com ("matthew green") writes:
> sure, there are bugs, but there's no ignoring the fact that these
> tools have been used by a whole lot of people for a number of years
> quite successfullly.  it's simply true.

I don't believe the current versions will, even disregarding
unintentional issues which have cropped up over the past couple of
weeks or months.

I'm using a version of binutils a couple of months old to generate
(dynamically-linked) NetBSD/mips binaries, but alas there is an
intentional change in the ABI of the binaries generated by binutils,
which breaks compatibility with existing NetBSD/mips ELF binaries and
the existing NetBSD/mips shared loader (which, AFAICT, would have
worked with minimal configury tweaking, previously).


To go back through my notes, it was caused by one or the combination
of:

2000-10-13  Ulf Carlsson  <ulfc@engr.sgi.com>

        From  Ralf Baechle  <ralf@gnu.org>
        * elf32-mips.c (mips_elf_create_dynamic_relocation): New argument
        local_p.  Add symbol value only for non-R_MIPS_REL32 relocations
        against local symbols.
        (_bfd_mips_elf_finish_dynamic_sections): Undo patch from 2000-10-01.

2001-01-18  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

        * elf32-mips.c (mips_elf_create_dynamic_relocation): Undo patch
        from 2000-10-13.  Do not add the symbol's value for R_MIPS_REL32
        relocations against dynsym symbols.

but it's been a couple of months since I looked into it, and I don't
have all of my notes and source trees handy to tell which it was.  (I
pointed it out to a few NetBSD folks back in early July.)



cgd

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-03 23:07                     ` cgd
@ 2001-09-06 10:50                       ` H . J . Lu
  2001-09-06 10:59                         ` cgd
  2001-09-06 11:08                         ` Thiemo Seufer
  0 siblings, 2 replies; 62+ messages in thread
From: H . J . Lu @ 2001-09-06 10:50 UTC (permalink / raw)
  To: cgd; +Cc: ica2_ts, binutils

On Mon, Sep 03, 2001 at 11:07:50PM -0700, cgd@broadcom.com wrote:
> "H . J . Lu" <hjl@lucon.org> writes:
> > > yes, i know that the pointer is going to be constrainted to being a
> > > sign-extended 32-bit value, but neither the compiler or any assembly
> > > code that uses it needs to know that (or should).  As far as they're
> > > concerned, pointers are 64-bit values and they're loaded with ld, etc.
> > 
> > Why do you need R_MIPS_64 for that?
> 
> Don't really know that that specific reloc is necessary... but that
> _is_ what the tools seem to generate, no?
> 
> However no matter how you cut it, you still need a reloc that "32 bit
> address, plus 32 bits of sign extension."
> 
> 
> > What is the 32bit address of `foo'?
> 
> bit 31 may or may not be set, depending on what exactly you're
> compiling.

Let me get this. Correct me if I am wrong. It seems that you want
to use 64bit registers in an o32 binary. Am I right?


H.J.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-06 10:50                       ` H . J . Lu
@ 2001-09-06 10:59                         ` cgd
  2001-09-06 11:07                           ` H . J . Lu
  2001-09-06 11:14                           ` Thiemo Seufer
  2001-09-06 11:08                         ` Thiemo Seufer
  1 sibling, 2 replies; 62+ messages in thread
From: cgd @ 2001-09-06 10:59 UTC (permalink / raw)
  To: H . J . Lu; +Cc: ica2_ts, binutils

"H . J . Lu" <hjl@lucon.org> writes:
> > > What is the 32bit address of `foo'?
> > 
> > bit 31 may or may not be set, depending on what exactly you're
> > compiling.
> 
> Let me get this. Correct me if I am wrong. It seems that you want
> to use 64bit registers in an o32 binary. Am I right?

Uh, the way you phrase that, i get the feeling that you think i'm
silly for saying "yes."  But I think that's probably only because you
structure the question unfavforably.  I don't think I said anything
about "an o32 binary," just a 32-bit ELF binary.


"mips64-elf" tools have, historically, generated:

	* 32-bit ELF

	* mips3-compatible code (including use of full 64-bit GPRs).

Unless you say -mlong64, pointers and longs will be 32-bit, but you'll
use full 64-bit GPRs for 'long long'.

If you do say -mlong64, you'll get 64-bit pointers and longs, in your
64-bit GPRs.

All with a 32-bit ELF format.  (And, using R_MIPS_64 to represent
pointers in the object files.)

I don't really _know_ what ABI it uses.  I had always thought of it as
"o64", which in my mind was "o32 naively extended for 64-bit GPRs,"
but really i don't know that that's correct.  In fact, I don't really
_care_ what ABI it uses.  We understand the calling conventions well
enough for embedded development use, which is where we're using it.

In any case, it _does_ work (or did until recently -- i've not really
tried in the last few months with a truly vanilla mips64-elf
configuration, since we've got a clone of mips64-elf with a few minor
mods which are irrelevant for the purposes of this discussion 8-).

You can be sure that if we are, there's no shortage of others doing so
as well...




cgd

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-03 23:18                               ` cgd
@ 2001-09-06 11:00                                 ` H . J . Lu
  2001-09-06 11:38                                   ` cgd
  0 siblings, 1 reply; 62+ messages in thread
From: H . J . Lu @ 2001-09-06 11:00 UTC (permalink / raw)
  To: cgd; +Cc: mrg, binutils, thorpej, simonb

On Mon, Sep 03, 2001 at 11:18:02PM -0700, cgd@broadcom.com wrote:
> mrg@cygnus.com ("matthew green") writes:
> > sure, there are bugs, but there's no ignoring the fact that these
> > tools have been used by a whole lot of people for a number of years
> > quite successfullly.  it's simply true.
> 
> I don't believe the current versions will, even disregarding
> unintentional issues which have cropped up over the past couple of
> weeks or months.
> 
> I'm using a version of binutils a couple of months old to generate
> (dynamically-linked) NetBSD/mips binaries, but alas there is an
> intentional change in the ABI of the binaries generated by binutils,
> which breaks compatibility with existing NetBSD/mips ELF binaries and
> the existing NetBSD/mips shared loader (which, AFAICT, would have
> worked with minimal configury tweaking, previously).
> 

Here is the thing. "make check" in binutils doesn't do much on
NetBSD/mips. It also used to be the case for Linux/mips until I turned
on them for Linux/mips. I also added a few new mips testcases. Quite
a few serious mips bugs have been identified/fixed since then. Without
active participation from NetBSD/mips, we have no idea if the current
toolchain works, which also include gcc and gdb, on NetBSD/mips or not.
The only mips testsuite results for gcc I can find are Irix and Linux.
It won't surprise me that the next release of gcc/binutils won't work
on NetBSD/mips, out of box.


H.J.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-06 10:59                         ` cgd
@ 2001-09-06 11:07                           ` H . J . Lu
  2001-09-06 11:35                             ` Thiemo Seufer
                                               ` (2 more replies)
  2001-09-06 11:14                           ` Thiemo Seufer
  1 sibling, 3 replies; 62+ messages in thread
From: H . J . Lu @ 2001-09-06 11:07 UTC (permalink / raw)
  To: cgd; +Cc: ica2_ts, binutils

On Thu, Sep 06, 2001 at 10:59:29AM -0700, cgd@broadcom.com wrote:
> "H . J . Lu" <hjl@lucon.org> writes:
> > > > What is the 32bit address of `foo'?
> > > 
> > > bit 31 may or may not be set, depending on what exactly you're
> > > compiling.
> > 
> > Let me get this. Correct me if I am wrong. It seems that you want
> > to use 64bit registers in an o32 binary. Am I right?
> 
> Uh, the way you phrase that, i get the feeling that you think i'm
> silly for saying "yes."  But I think that's probably only because you

I won't call it silly.

> structure the question unfavforably.  I don't think I said anything
> about "an o32 binary," just a 32-bit ELF binary.
> 

I just want to make sure we are on the same page.

> 
> "mips64-elf" tools have, historically, generated:
> 
> 	* 32-bit ELF
> 
> 	* mips3-compatible code (including use of full 64-bit GPRs).
> 
> Unless you say -mlong64, pointers and longs will be 32-bit, but you'll
> use full 64-bit GPRs for 'long long'.
> 
> If you do say -mlong64, you'll get 64-bit pointers and longs, in your
> 64-bit GPRs.
> 
> All with a 32-bit ELF format.  (And, using R_MIPS_64 to represent
> pointers in the object files.)
> 
> I don't really _know_ what ABI it uses.  I had always thought of it as
> "o64", which in my mind was "o32 naively extended for 64-bit GPRs,"
> but really i don't know that that's correct.  In fact, I don't really
> _care_ what ABI it uses.  We understand the calling conventions well
> enough for embedded development use, which is where we're using it.

I think that is ok as long as R_MIPS_64 is not used for o32 binaries.
Maybe it is time to give a new BFD target for mips64-elf since it does
represent a different ABI which includes R_MIPS_64. R_MIPS_64 should be
forbidden for o32 binaries.


H.J.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-06 10:50                       ` H . J . Lu
  2001-09-06 10:59                         ` cgd
@ 2001-09-06 11:08                         ` Thiemo Seufer
  1 sibling, 0 replies; 62+ messages in thread
From: Thiemo Seufer @ 2001-09-06 11:08 UTC (permalink / raw)
  To: binutils

H . J . Lu wrote:
[snip]
> > > What is the 32bit address of `foo'?
> > 
> > bit 31 may or may not be set, depending on what exactly you're
> > compiling.
> 
> Let me get this. Correct me if I am wrong. It seems that you want
> to use 64bit registers in an o32 binary. Am I right?

1/2. They take o32 as a hull and fill it with 64bit code. There is
no ABI conformance at all.


Thiemo

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-06 10:59                         ` cgd
  2001-09-06 11:07                           ` H . J . Lu
@ 2001-09-06 11:14                           ` Thiemo Seufer
  1 sibling, 0 replies; 62+ messages in thread
From: Thiemo Seufer @ 2001-09-06 11:14 UTC (permalink / raw)
  To: binutils

cgd@broadcom.com wrote:
[snip]
> "mips64-elf" tools have, historically, generated:
> 
> 	* 32-bit ELF
> 
> 	* mips3-compatible code (including use of full 64-bit GPRs).
> 
> Unless you say -mlong64, pointers and longs will be 32-bit, but you'll
> use full 64-bit GPRs for 'long long'.
> 
> If you do say -mlong64, you'll get 64-bit pointers and longs, in your
> 64-bit GPRs.
> 
> All with a 32-bit ELF format.  (And, using R_MIPS_64 to represent
> pointers in the object files.)
> 
> I don't really _know_ what ABI it uses.  I had always thought of it as
> "o64", which in my mind was "o32 naively extended for 64-bit GPRs,"
> but really i don't know that that's correct.

Does this mean o64 doesn't allow 64bit addressing?
Btw, is there _any_ description/pamphlet/whatever about what o64 is?

> In fact, I don't really
> _care_ what ABI it uses.  We understand the calling conventions well
> enough for embedded development use, which is where we're using it.

What calling convention does it use?


Thiemo

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-06 11:07                           ` H . J . Lu
@ 2001-09-06 11:35                             ` Thiemo Seufer
  2001-09-06 11:39                             ` cgd
  2001-09-06 11:57                             ` Richard Sandiford
  2 siblings, 0 replies; 62+ messages in thread
From: Thiemo Seufer @ 2001-09-06 11:35 UTC (permalink / raw)
  To: binutils

H . J . Lu wrote:
[snip]
> > I don't really _know_ what ABI it uses.  I had always thought of it as
> > "o64", which in my mind was "o32 naively extended for 64-bit GPRs,"
> > but really i don't know that that's correct.

It doesn't use the O64 header flag, so there's probably a difference.

> > In fact, I don't really
> > _care_ what ABI it uses.  We understand the calling conventions well
> > enough for embedded development use, which is where we're using it.
> 
> I think that is ok as long as R_MIPS_64 is not used for o32 binaries.
> Maybe it is time to give a new BFD target for mips64-elf since it does
> represent a different ABI which includes R_MIPS_64.

How would you distinguish these object files? The O32 header flag
isn't mandatory for o32, and I don't think introducing a new one for
this yet-unnamed ABI makes thing better.

> R_MIPS_64 should be
> forbidden for o32 binaries.

It is only used with -mlong64, which kills ABI conformance anyway.
It might be a good idea to clear any ABI header flag when such
an option is in effect, It might also be a good thing to remove
the O32 flag completely, since it can't denote a ABI conformant
o32 binary. However, I don't know what tools will get broken then.


Thiemo

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-06 11:00                                 ` H . J . Lu
@ 2001-09-06 11:38                                   ` cgd
  2001-09-06 12:09                                     ` H . J . Lu
  0 siblings, 1 reply; 62+ messages in thread
From: cgd @ 2001-09-06 11:38 UTC (permalink / raw)
  To: H . J . Lu; +Cc: mrg, binutils, thorpej, simonb

"H . J . Lu" <hjl@lucon.org> writes:
> Here is the thing. "make check" in binutils doesn't do much on
> NetBSD/mips. It also used to be the case for Linux/mips until I turned
> on them for Linux/mips. I also added a few new mips testcases. Quite
> a few serious mips bugs have been identified/fixed since then. 

Oh, I understand that.  The problem becomes, what's a bug and what's
a feature?  8-)

Yes, something might be a bug w.r.t. an ABI standard that nobody
started following until 6 months ago.  But e.g. some of the changes to
binutils will cause binary compatibility for NetBSD/mips binaries,
which have been using the old MIPS ELF ABI implemented by binutils for
... 3+ years.

I don't disagree that bugs need to be fixed, but some of the fixes
will cause some groups real pain.

(No, there's no real point there.  8-)


> Without
> active participation from NetBSD/mips, we have no idea if the current
> toolchain works, which also include gcc and gdb, on NetBSD/mips or not.

Agreed.  I've advocated for ... years that NetBSD should do Better
Things than it historically has, w.r.t. toolchain stuff.

But i'm not really in a position to do them myself since for the most
part I'm not paid to work on NetBSD and I have limited time outside of
work for such hacking.

It's getting better, but is a long way from good.


> The only mips testsuite results for gcc I can find are Irix and Linux.
> It won't surprise me that the next release of gcc/binutils won't work
> on NetBSD/mips, out of box.

GCC isn't relevant here, is it?  I mean, binutils is supposed to be a
usable compiler with gcc, without gcc, and also with random
(not-current) versions of gcc.  NetBSD is ... much less likely to
upgrade to a new version of gcc than to a new version of binutils.

Indeed, it's almost certain that the next release of binutils won't
work on NetBSD/mips.  Even if the trivial things were fixed (and they
could be, and i plan to work on them to the extent that I can),
there's still this non-trivial (to my eyes, at least) ABI change.


The point of my message was mostly informational: i think the list
should be aware that there are issues re: MIPS ABIs, current binutils,
and compatibility with a system that's been using binutils to generate
dynamically-linked MIPS ELF binaries for years.

It's going to crop up again in the future, and I thought i'd put
something down on record so that when it does people would have
something to look at.  8-)



chris

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-06 11:07                           ` H . J . Lu
  2001-09-06 11:35                             ` Thiemo Seufer
@ 2001-09-06 11:39                             ` cgd
  2001-09-06 11:40                               ` cgd
  2001-09-08 12:03                               ` Andrew Cagney
  2001-09-06 11:57                             ` Richard Sandiford
  2 siblings, 2 replies; 62+ messages in thread
From: cgd @ 2001-09-06 11:39 UTC (permalink / raw)
  To: H . J . Lu; +Cc: ica2_ts, binutils

"H . J . Lu" <hjl@lucon.org> writes:
> I think that is ok as long as R_MIPS_64 is not used for o32 binaries.
> Maybe it is time to give a new BFD target for mips64-elf since it does
> represent a different ABI which includes R_MIPS_64. R_MIPS_64 should be
> forbidden for o32 binaries.

What harm is there in allowing it, as an extension?

Only 'broken' code will generate them to begin with...



chris

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-06 11:39                             ` cgd
@ 2001-09-06 11:40                               ` cgd
  2001-09-08 12:03                               ` Andrew Cagney
  1 sibling, 0 replies; 62+ messages in thread
From: cgd @ 2001-09-06 11:40 UTC (permalink / raw)
  To: H . J . Lu; +Cc: ica2_ts, binutils

cgd@broadcom.com (Chris G. Demetriou) writes:
> "H . J . Lu" <hjl@lucon.org> writes:
> > I think that is ok as long as R_MIPS_64 is not used for o32 binaries.
> > Maybe it is time to give a new BFD target for mips64-elf since it does
> > represent a different ABI which includes R_MIPS_64. R_MIPS_64 should be
> > forbidden for o32 binaries.
> 
> What harm is there in allowing it, as an extension?
> 
> Only 'broken' code will generate them to begin with...

to be clearer: "... if that code's intent is to generate binaries
which follow 'standard' o32."




chris

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-06 11:07                           ` H . J . Lu
  2001-09-06 11:35                             ` Thiemo Seufer
  2001-09-06 11:39                             ` cgd
@ 2001-09-06 11:57                             ` Richard Sandiford
  2001-09-06 20:53                               ` Thiemo Seufer
  2 siblings, 1 reply; 62+ messages in thread
From: Richard Sandiford @ 2001-09-06 11:57 UTC (permalink / raw)
  To: H . J . Lu; +Cc: cgd, ica2_ts, binutils

"H . J . Lu" <hjl@lucon.org> writes:
> I think that is ok as long as R_MIPS_64 is not used for o32 binaries.
> Maybe it is time to give a new BFD target for mips64-elf since it does
> represent a different ABI which includes R_MIPS_64. R_MIPS_64 should be
> forbidden for o32 binaries.

I feel I'm missing something here, so sorry if I'm going round in
circles.  I'm just not sure I understand what the problem is.

AFAIK, R_MIPS_64 won't be used unless you have 64-bit addresses (and
hence 64-bit registers), or if you have an explicit pseudo-op like
.8byte.  o32 binaries wouldn't be using either of those things anyway,
would they?

I thought the consensus some time ago was that o32 implied 32-bit
registers, and therefore 32-bit addresses.  The HAVE_??BIT_ macros are
already set up like that as long as you specify -mabi=32 on the command
line.

So AFAICT the current set-up supports what I think of as "o32 binaries"
-- with the appropriate command-line switches -- and it also (hopefully)
supports the more ad-hoc ABIs that were supported by earlier versions.

Richard

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-06 11:38                                   ` cgd
@ 2001-09-06 12:09                                     ` H . J . Lu
  0 siblings, 0 replies; 62+ messages in thread
From: H . J . Lu @ 2001-09-06 12:09 UTC (permalink / raw)
  To: cgd; +Cc: mrg, binutils, thorpej, simonb

On Thu, Sep 06, 2001 at 11:38:31AM -0700, cgd@broadcom.com wrote:

> Yes, something might be a bug w.r.t. an ABI standard that nobody
> started following until 6 months ago.  But e.g. some of the changes to

That is why I said the mips ELF implementation in binutils was only
really tested on Linux/mips :-).

> binutils will cause binary compatibility for NetBSD/mips binaries,
> which have been using the old MIPS ELF ABI implemented by binutils for
> ... 3+ years.
> 
> I don't disagree that bugs need to be fixed, but some of the fixes
> will cause some groups real pain.
> 

Been there, done that. It happened quite a few times on some Linux
platforms. Sorry, I can't help on that.

> > The only mips testsuite results for gcc I can find are Irix and Linux.
> > It won't surprise me that the next release of gcc/binutils won't work
> > on NetBSD/mips, out of box.
> 
> GCC isn't relevant here, is it?  I mean, binutils is supposed to be a
> usable compiler with gcc, without gcc, and also with random
> (not-current) versions of gcc.  NetBSD is ... much less likely to
> upgrade to a new version of gcc than to a new version of binutils.

It depends on how you see it. In my view, a toolchain should at least
include binutils and gcc. They should be compatible with each other.

> The point of my message was mostly informational: i think the list
> should be aware that there are issues re: MIPS ABIs, current binutils,
> and compatibility with a system that's been using binutils to generate
> dynamically-linked MIPS ELF binaries for years.
> 

Well, it is not an excuse not to have a good implementation of the SVR4
MIPS ABI.

BTW, "make check" in binutils checks the SVR4 ELF ABI implementation on
Linux/mips. Linux/mips also has its own testsuite for the SVR4 ELF ABI
implementation in glibc. Does NetBSD/mips have similar tests?


H.J.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-06 11:57                             ` Richard Sandiford
@ 2001-09-06 20:53                               ` Thiemo Seufer
  2001-09-06 21:09                                 ` Thiemo Seufer
                                                   ` (2 more replies)
  0 siblings, 3 replies; 62+ messages in thread
From: Thiemo Seufer @ 2001-09-06 20:53 UTC (permalink / raw)
  To: binutils

Richard Sandiford wrote:
[snip]
> I feel I'm missing something here, so sorry if I'm going round in
> circles.  I'm just not sure I understand what the problem is.
> 
> AFAIK, R_MIPS_64 won't be used unless you have 64-bit addresses (and
> hence 64-bit registers), or if you have an explicit pseudo-op like
> .8byte.  o32 binaries wouldn't be using either of those things anyway,
> would they?

That's right, but you can't tell if it is actually o32 conformant
by looking at the ELF header. There is no flag which says
"Warning! This object does not conform to any established ABI".
It would be nice to have one.

> I thought the consensus some time ago was that o32 implied 32-bit
> registers, and therefore 32-bit addresses.  The HAVE_??BIT_ macros are
> already set up like that as long as you specify -mabi=32 on the command
> line.

That's all fine for 32bit, but I needed a way to check if 64bit
addresses can be used generally (e.g. for dli). Something like
! HAVE_32BIT_ADDRESSES won't do that, because full 64bit support
needs a 64bit object format. Having a HAVE_64BIT_ADDRESSES macro
which is _not_ the inverse of HAVE_32BIT_ADDRESSES is ugly. I also
found no reason why there is made use of 64bit instructions like
daddiu for a 32bit load. It makes the code look different from
o32 while doing the same.

This was the one part of my patch. The other was to change (d)la to
chose it's expansion in dependency of the address model instead of
the insn name. That's the way the SGI assembler behaves, and this
is the useful behaviour for ABI conformance. For 64bit code in an
32bit object file this may have side effects (the usability of
R_MIPS_64 is not affected).

I split up my patch in two parts, the dla change is appended below.


Thiemo


2001-09-07  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	/gas/ChangeLog
	* tc_mips.c
	(macro): Fix address load instruction.

	/gas/testsuite/ChangeLog
	* gas/mips/ld.d: Use 32bit instructions for addresses.
	* gas/mips/mips-gp64-fp32-pic.d: Likewise.
	* gas/mips/mips-gp64-fp32-pic.s: Likewise.
	* gas/mips/mips-gp64-fp32.d: Likewise.
	* gas/mips/mips-gp64-fp32.s: Likewise.
	* gas/mips/mips-gp64-fp64-pic.d: Likewise.
	* gas/mips/mips-gp64-fp64-pic.s: Likewise.
	* gas/mips/mips-gp64-fp64.d: Likewise.
	* gas/mips/mips-gp64-fp64.s: Likewise.
	* gas/mips/elempic.d: Likewise.
	* gas/mips/uld.d: Likewise.
	* gas/mips/usd.d: Likewise.


diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/config/tc-mips.c src/gas/config/tc-mips.c
--- src-orig/gas/config/tc-mips.c	Sat Aug 18 21:47:23 2001
+++ src/gas/config/tc-mips.c	Tue Aug 21 18:21:49 2001
@@ -4288,7 +4458,7 @@ macro (ip)
 	  if (expr1.X_add_number == 0 && tempreg == PIC_CALL_REG)
 	    lw_reloc_type = (int) BFD_RELOC_MIPS_CALL16;
 	  macro_build ((char *) NULL, &icnt, &offset_expr,
-		       dbl ? "ld" : "lw",
+		       HAVE_32BIT_ADDRESSES ? "lw" : "ld",
 		       "t,o(b)", tempreg, lw_reloc_type, GP);
 	  if (expr1.X_add_number == 0)
 	    {
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/ld.d src/gas/testsuite/gas/mips/ld.d
--- src-orig/gas/testsuite/gas/mips/ld.d	Mon Jul  2 14:34:18 2001
+++ src/gas/testsuite/gas/mips/ld.d	Tue Aug 21 19:20:35 2001
@@ -628,12 +628,12 @@ Disassembly of section .text:
 0+05d0 <[^>]*> sw	a1,4\(zero\)
 0+05d4 <[^>]*> lui	a0,[-0-9x]+
 [ 	]*5d4: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+05d8 <[^>]*> daddu	a0,a0,a1
+0+05d8 <[^>]*> addu	a0,a0,a1
 0+05dc <[^>]*> ld	a0,[-0-9]+\(a0\)
 [ 	]*5dc: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+05e0 <[^>]*> lui	at,[-0-9x]+
 [ 	]*5e0: [A-Z0-9_]*HI[A-Z0-9_]*	.sbss.*
-0+05e4 <[^>]*> daddu	at,at,a1
+0+05e4 <[^>]*> addu	at,at,a1
 0+05e8 <[^>]*> sd	a0,[-0-9]+\(at\)
 [ 	]*5e8: [A-Z0-9_]*LO[A-Z0-9_]*	.sbss.*
 0+05ec <[^>]*> nop

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-06 20:53                               ` Thiemo Seufer
@ 2001-09-06 21:09                                 ` Thiemo Seufer
  2001-09-06 21:12                                 ` Thiemo Seufer
  2001-09-07  4:10                                 ` Richard Sandiford
  2 siblings, 0 replies; 62+ messages in thread
From: Thiemo Seufer @ 2001-09-06 21:09 UTC (permalink / raw)
  To: binutils

Thiemo Seufer wrote:
[snip]
> I split up my patch in two parts, the dla change is appended below.

As announced, the other part with the HAVE_32BIT_ADDRESSES change.


Thiemo


2001-09-07  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	/gas/ChangeLog
	* tc_mips.c (HAVE_32BIT_ADDRESSES): Check for 64bit object file format
	also.
	(HAVE_64BIT_ADDRESSES): New define.

	/gas/testsuite/ChangeLog
	* gas/mips/mips-gp64-fp32-pic.d: Use 32bit instructions for addresses.
	* gas/mips/mips-gp64-fp32-pic.s: Likewise.
	* gas/mips/mips-gp64-fp32.d: Likewise.
	* gas/mips/mips-gp64-fp32.s: Likewise.
	* gas/mips/mips-gp64-fp64-pic.d: Likewise.
	* gas/mips/mips-gp64-fp64-pic.s: Likewise.
	* gas/mips/mips-gp64-fp64.d: Likewise.
	* gas/mips/mips-gp64-fp64.s: Likewise.
	* gas/mips/elempic.d: Likewise.
	* gas/mips/uld.d: Likewise.
	* gas/mips/usd.d: Likewise.


diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/config/tc-mips.c src/gas/config/tc-mips.c
--- src-orig/gas/config/tc-mips.c	Sat Aug 18 21:47:23 2001
+++ src/gas/config/tc-mips.c	Tue Aug 21 18:21:49 2001
@@ -270,9 +270,15 @@ static int mips_32bit_abi = 0;
 #define HAVE_64BIT_GPRS (! HAVE_32BIT_GPRS)
 #define HAVE_64BIT_FPRS (! HAVE_32BIT_FPRS)
 
-#define HAVE_32BIT_ADDRESSES                \
-   (HAVE_32BIT_GPRS                         \
-    || bfd_arch_bits_per_address (stdoutput) == 32)
+/* We can only have 64bit addresses if the object file format
+   supports it.  FIXME: We abuse mips_64 as a indicator for
+   such support.  */
+#define HAVE_32BIT_ADDRESSES                       \
+   (HAVE_32BIT_GPRS                                \
+    || bfd_arch_bits_per_address (stdoutput) == 32 \
+    || ! mips_64)
+
+#define HAVE_64BIT_ADDRESSES (! HAVE_32BIT_ADDRESSES)
 
 /* Whether the processor uses hardware interlocks to protect
    reads from the HI and LO registers, and thus does not
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/mips-gp64-fp32-pic.d src/gas/testsuite/gas/mips/mips-gp64-fp32-pic.d
--- src-orig/gas/testsuite/gas/mips/mips-gp64-fp32-pic.d	Tue Aug  7 17:20:30 2001
+++ src/gas/testsuite/gas/mips/mips-gp64-fp32-pic.d	Tue Aug 21 19:20:35 2001
@@ -10,121 +10,121 @@ Disassembly of section .text:
    0:	3c1c0000 	lui	gp,0x0
    4:	279c0000 	addiu	gp,gp,0
    8:	0399e021 	addu	gp,gp,t9
-   c:	ffbc0008 	sd	gp,8\(sp\)
-  10:	009c202d 	daddu	a0,a0,gp
+   c:	afbc0008 	sw	gp,8\(sp\)
+  10:	009c2021 	addu	a0,a0,gp
   14:	3c041234 	lui	a0,0x1234
   18:	34845678 	ori	a0,a0,0x5678
   1c:	8f840000 	lw	a0,0\(gp\)
   20:	00000000 	nop
-  24:	64840000 	daddiu	a0,a0,0
+  24:	24840000 	addiu	a0,a0,0
   28:	8f840000 	lw	a0,0\(gp\)
   2c:	00000000 	nop
-  30:	64840000 	daddiu	a0,a0,0
+  30:	24840000 	addiu	a0,a0,0
   34:	8f840000 	lw	a0,0\(gp\)
   38:	00000000 	nop
-  3c:	64840228 	daddiu	a0,a0,552
+  3c:	24840228 	addiu	a0,a0,552
   40:	10000079 	b	228 <[^>]*>
   44:	00000000 	nop
-  48:	df990000 	ld	t9,0\(gp\)
+  48:	8f990000 	lw	t9,0\(gp\)
   4c:	00000000 	nop
-  50:	67390228 	daddiu	t9,t9,552
+  50:	27390228 	addiu	t9,t9,552
   54:	0320f809 	jalr	t9
   58:	00000000 	nop
-  5c:	dfbc0008 	ld	gp,8\(sp\)
-  60:	df840000 	ld	a0,0\(gp\)
+  5c:	8fbc0008 	lw	gp,8\(sp\)
+  60:	8f840000 	lw	a0,0\(gp\)
   64:	00000000 	nop
-  68:	64840000 	daddiu	a0,a0,0
+  68:	24840000 	addiu	a0,a0,0
   6c:	8c840000 	lw	a0,0\(a0\)
-  70:	df840000 	ld	a0,0\(gp\)
+  70:	8f840000 	lw	a0,0\(gp\)
   74:	00000000 	nop
-  78:	64840000 	daddiu	a0,a0,0
+  78:	24840000 	addiu	a0,a0,0
   7c:	8c840000 	lw	a0,0\(a0\)
-  80:	df840000 	ld	a0,0\(gp\)
+  80:	8f840000 	lw	a0,0\(gp\)
   84:	00000000 	nop
-  88:	64840228 	daddiu	a0,a0,552
+  88:	24840228 	addiu	a0,a0,552
   8c:	8c840000 	lw	a0,0\(a0\)
-  90:	df840000 	ld	a0,0\(gp\)
+  90:	8f840000 	lw	a0,0\(gp\)
   94:	00000000 	nop
-  98:	64840000 	daddiu	a0,a0,0
+  98:	24840000 	addiu	a0,a0,0
   9c:	dc840000 	ld	a0,0\(a0\)
-  a0:	df840000 	ld	a0,0\(gp\)
+  a0:	8f840000 	lw	a0,0\(gp\)
   a4:	00000000 	nop
-  a8:	64840000 	daddiu	a0,a0,0
+  a8:	24840000 	addiu	a0,a0,0
   ac:	dc840000 	ld	a0,0\(a0\)
-  b0:	df840000 	ld	a0,0\(gp\)
+  b0:	8f840000 	lw	a0,0\(gp\)
   b4:	00000000 	nop
-  b8:	64840228 	daddiu	a0,a0,552
+  b8:	24840228 	addiu	a0,a0,552
   bc:	dc840000 	ld	a0,0\(a0\)
-  c0:	df810000 	ld	at,0\(gp\)
+  c0:	8f810000 	lw	at,0\(gp\)
   c4:	00000000 	nop
-  c8:	64210000 	daddiu	at,at,0
+  c8:	24210000 	addiu	at,at,0
   cc:	ac240000 	sw	a0,0\(at\)
-  d0:	df810000 	ld	at,0\(gp\)
+  d0:	8f810000 	lw	at,0\(gp\)
   d4:	00000000 	nop
-  d8:	64210000 	daddiu	at,at,0
+  d8:	24210000 	addiu	at,at,0
   dc:	ac240000 	sw	a0,0\(at\)
-  e0:	df810000 	ld	at,0\(gp\)
+  e0:	8f810000 	lw	at,0\(gp\)
   e4:	00000000 	nop
-  e8:	64210000 	daddiu	at,at,0
+  e8:	24210000 	addiu	at,at,0
   ec:	fc240000 	sd	a0,0\(at\)
-  f0:	df810000 	ld	at,0\(gp\)
+  f0:	8f810000 	lw	at,0\(gp\)
   f4:	00000000 	nop
-  f8:	64210000 	daddiu	at,at,0
+  f8:	24210000 	addiu	at,at,0
   fc:	fc240000 	sd	a0,0\(at\)
- 100:	df810000 	ld	at,0\(gp\)
+ 100:	8f810000 	lw	at,0\(gp\)
  104:	00000000 	nop
- 108:	64210000 	daddiu	at,at,0
+ 108:	24210000 	addiu	at,at,0
  10c:	80240000 	lb	a0,0\(at\)
  110:	90210001 	lbu	at,1\(at\)
  114:	00042200 	sll	a0,a0,0x8
  118:	00812025 	or	a0,a0,at
- 11c:	df810000 	ld	at,0\(gp\)
+ 11c:	8f810000 	lw	at,0\(gp\)
  120:	00000000 	nop
- 124:	64210000 	daddiu	at,at,0
+ 124:	24210000 	addiu	at,at,0
  128:	a0240001 	sb	a0,1\(at\)
  12c:	00042202 	srl	a0,a0,0x8
  130:	a0240000 	sb	a0,0\(at\)
  134:	90210001 	lbu	at,1\(at\)
  138:	00042200 	sll	a0,a0,0x8
  13c:	00812025 	or	a0,a0,at
- 140:	df810000 	ld	at,0\(gp\)
+ 140:	8f810000 	lw	at,0\(gp\)
  144:	00000000 	nop
- 148:	64210000 	daddiu	at,at,0
+ 148:	24210000 	addiu	at,at,0
  14c:	88240000 	lwl	a0,0\(at\)
  150:	98240003 	lwr	a0,3\(at\)
- 154:	df810000 	ld	at,0\(gp\)
+ 154:	8f810000 	lw	at,0\(gp\)
  158:	00000000 	nop
- 15c:	64210000 	daddiu	at,at,0
+ 15c:	24210000 	addiu	at,at,0
  160:	a8240000 	swl	a0,0\(at\)
  164:	b8240003 	swr	a0,3\(at\)
  168:	3404ffc0 	li	a0,0xffc0
  16c:	000423bc 	dsll32	a0,a0,0xe
- 170:	df810000 	ld	at,0\(gp\)
+ 170:	8f810000 	lw	at,0\(gp\)
  174:	dc240000 	ld	a0,0\(at\)
  178:	3c013ff0 	lui	at,0x3ff0
  17c:	44810800 	mtc1	at,\$f1
  180:	44800000 	mtc1	zero,\$f0
- 184:	df810000 	ld	at,0\(gp\)
+ 184:	8f810000 	lw	at,0\(gp\)
  188:	d4200008 	ldc1	\$f0,8\(at\)
  18c:	64a40064 	daddiu	a0,a1,100
  190:	2c840001 	sltiu	a0,a0,1
  194:	64a40064 	daddiu	a0,a1,100
  198:	0004202b 	sltu	a0,zero,a0
  19c:	00a0202d 	move	a0,a1
- 1a0:	df840000 	ld	a0,0\(gp\)
+ 1a0:	8f840000 	lw	a0,0\(gp\)
  1a4:	00000000 	nop
- 1a8:	64840000 	daddiu	a0,a0,0
- 1ac:	df840000 	ld	a0,0\(gp\)
+ 1a8:	24840000 	addiu	a0,a0,0
+ 1ac:	8f840000 	lw	a0,0\(gp\)
  1b0:	00000000 	nop
- 1b4:	64840000 	daddiu	a0,a0,0
- 1b8:	df810000 	ld	at,0\(gp\)
+ 1b4:	24840000 	addiu	a0,a0,0
+ 1b8:	8f810000 	lw	at,0\(gp\)
  1bc:	00000000 	nop
- 1c0:	64210000 	daddiu	at,at,0
+ 1c0:	24210000 	addiu	at,at,0
  1c4:	68240000 	ldl	a0,0\(at\)
  1c8:	6c240007 	ldr	a0,7\(at\)
- 1cc:	df810000 	ld	at,0\(gp\)
+ 1cc:	8f810000 	lw	at,0\(gp\)
  1d0:	00000000 	nop
- 1d4:	64210000 	daddiu	at,at,0
+ 1d4:	24210000 	addiu	at,at,0
  1d8:	b0240000 	sdl	a0,0\(at\)
  1dc:	b4240007 	sdr	a0,7\(at\)
  1e0:	3c018000 	lui	at,0x8000
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/mips-gp64-fp32-pic.s src/gas/testsuite/gas/mips/mips-gp64-fp32-pic.s
--- src-orig/gas/testsuite/gas/mips/mips-gp64-fp32-pic.s	Tue Aug  7 17:20:30 2001
+++ src/gas/testsuite/gas/mips/mips-gp64-fp32-pic.s	Tue Aug 21 19:20:35 2001
@@ -19,101 +19,101 @@ func:
 				# 0004 addiu	gp,gp,lo(_gp_disp)
 				# 0008 addu	gp,gp,t9
 	.set reorder
-	.cprestore 8		# 000c sd	gp,8(sp)
-	.cpadd $4		# 0010 daddu	a0,a0,gp
+	.cprestore 8		# 000c sw	gp,8(sp)
+	.cpadd $4		# 0010 addu	a0,a0,gp
 	li	$4, 0x12345678	# 0014 lui	a0,0x1234
 				# 0018 ori	a0,a0,0x5678
 	la	$4, shared	# 001c lw	a0,got(.sdata)(gp)
 				# 0020 nop
-				# 0024 daddiu	a0,a0,lo(shared)
+				# 0024 addiu	a0,a0,lo(shared)
 	la	$4, unshared	# 0028 lw	a0,got(.data)(gp)
 				# 002c nop
-				# 0030 daddiu	a0,a0,lo(unshared)
+				# 0030 addiu	a0,a0,lo(unshared)
 	la	$4, end		# 0034 lw	a0,got(.text)(gp)
 				# 0038 nop
-				# 003c daddiu	a0,a0,lo(end)
+				# 003c addiu	a0,a0,lo(end)
 	j	end		# 0040 b	end
 				# 0044 nop
-	jal	end		# 0048 ld	t9,got(.text)(gp)
+	jal	end		# 0048 lw	t9,got(.text)(gp)
 				# 004c nop
-				# 0050 daddiu	t9,t9,lo(end)
+				# 0050 addiu	t9,t9,lo(end)
 				# 0054 jalr	t9
 				# 0058 nop
-				# 005c ld	gp,8(sp)
-	lw	$4, shared	# 0060 ld	a0,got(.sdata)(gp)
+				# 005c lw	gp,8(sp)
+	lw	$4, shared	# 0060 lw	a0,got(.sdata)(gp)
 				# 0064 nop
-				# 0068 daddiu	a0,a0,lo(shared)
+				# 0068 addiu	a0,a0,lo(shared)
 				# 006c lw	a0,(a0)
-	lw	$4, unshared	# 0070 ld	a0,got(.data)(gp)
+	lw	$4, unshared	# 0070 lw	a0,got(.data)(gp)
 				# 0074 nop
-				# 0078 daddiu	a0,a0,lo(unshared)
+				# 0078 addiu	a0,a0,lo(unshared)
 				# 007c lw	a0,(a0)
-	lw	$4, end		# 0080 ld	a0,got(.text)(gp)
+	lw	$4, end		# 0080 lw	a0,got(.text)(gp)
 				# 0084 nop
-				# 0088 daddiu	a0,a0,lo(end)
+				# 0088 addiu	a0,a0,lo(end)
 				# 008c lw	a0,(a0)
-	ld	$4, shared	# 0090 ld	a0,got(.sdata)(gp)
+	ld	$4, shared	# 0090 lw	a0,got(.sdata)(gp)
 				# 0094 nop
-				# 0098 daddiu	a0,a0,lo(shared)
+				# 0098 addiu	a0,a0,lo(shared)
 				# 009c ld	a0,(a0)
-	ld	$4, unshared	# 00a0 ld	a0,got(.data)(gp)
+	ld	$4, unshared	# 00a0 lw	a0,got(.data)(gp)
 				# 00a4 nop
-				# 00a8 daddiu	a0,a0,lo(unshared)
+				# 00a8 addiu	a0,a0,lo(unshared)
 				# 00ac ld	a0,(a0)
-	ld	$4, end		# 00b0 ld	a0,got(.text)(gp)
+	ld	$4, end		# 00b0 lw	a0,got(.text)(gp)
 				# 00b4 nop
-				# 00b8 daddiu	a0,a0,lo(end)
+				# 00b8 addiu	a0,a0,lo(end)
 				# 00bc ld	a0,(a0)
-	sw	$4, shared	# 00c0 ld	at,got(.sdata)(gp)
+	sw	$4, shared	# 00c0 lw	at,got(.sdata)(gp)
 				# 00c4 nop
-				# 00c8 daddiu	at,at,lo(shared)
+				# 00c8 addiu	at,at,lo(shared)
 				# 00cc sw	a0,0(at)
-	sw	$4, unshared	# 00d0 ld	at,got(.data)(gp)
+	sw	$4, unshared	# 00d0 lw	at,got(.data)(gp)
 				# 00d4 nop
-				# 00d8 daddiu	at,at,lo(unshared)
+				# 00d8 addiu	at,at,lo(unshared)
 				# 00dc sw	a0,0(at)
-	sd	$4, shared	# 00e0 ld	at,got(.sdata)(gp)
+	sd	$4, shared	# 00e0 lw	at,got(.sdata)(gp)
 				# 00e4 nop
-				# 00e8 daddiu	at,at,lo(shared)
+				# 00e8 addiu	at,at,lo(shared)
 				# 00ec sd	a0,(at)
-	sd	$4, unshared	# 00f0 ld	at,got(.data)(gp)
+	sd	$4, unshared	# 00f0 lw	at,got(.data)(gp)
 				# 00f4 nop
-				# 00f8 daddiu	at,at,lo(unshared)
+				# 00f8 addiu	at,at,lo(unshared)
 				# 00fc sd	a0,(at)
-	ulh	$4, unshared	# 0100 ld	at,got(.data)(gp)
+	ulh	$4, unshared	# 0100 lw	at,got(.data)(gp)
 				# 0104 nop
-				# 0108 daddiu	at,at,lo(unshared)
+				# 0108 addiu	at,at,lo(unshared)
 				# 010c lb	a0,0(at)
 				# 0110 lbu	at,1(at)
 				# 0114 sll	a0,a0,8
 				# 0118 or	a0,a0,at
-	ush	$4, unshared	# 011c ld	at,got(.data)(gp)
+	ush	$4, unshared	# 011c lw	at,got(.data)(gp)
 				# 0120 nop
-				# 0124 daddiu	at,at,lo(unshared)
+				# 0124 addiu	at,at,lo(unshared)
 				# 0128 sb	a0,0(at)
 				# 012c srl	a0,a0,8
 				# 0130 sb	a0,1(at)
 				# 0134 lbu	at,0(at)
 				# 0138 sll	a0,a0,8
 				# 013c or	a0,a0,at
-	ulw	$4, unshared	# 0140 ld	at,got(.data)(gp)
+	ulw	$4, unshared	# 0140 lw	at,got(.data)(gp)
 				# 0144 nop
-				# 0148 daddiu	at,at,lo(unshared)
+				# 0148 addiu	at,at,lo(unshared)
 				# 014c lwl	a0,0(at)
 				# 0150 lwr	a0,3(at)
-	usw	$4, unshared	# 0154 ld	at,got(.data)(gp)
+	usw	$4, unshared	# 0154 lw	at,got(.data)(gp)
 				# 0158 nop
-				# 015c daddiu	at,at,lo(unshared)
+				# 015c addiu	at,at,lo(unshared)
 				# 0160 swl	a0,0(at)
 				# 0164 swr	a0,3(at)
 	li.d	$4, 1.0		# 0168 li	a0,0xffc0
 				# 016c dsll32	a0,a0,14
-	li.d	$4, 1.9		# 0170 ld	at,got(.rodata)(gp)
+	li.d	$4, 1.9		# 0170 lw	at,got(.rodata)(gp)
 				# 0174 ld	a0,lo(F1.9)(at)
 	li.d	$f0, 1.0	# 0178 lui	at,0x3ff0
 				# 017c mtc1	at,$f1
 				# 0180 mtc1	zero,$f0
-	li.d	$f0, 1.9	# 0184 ld	at,got(.rodata)(gp)
+	li.d	$f0, 1.9	# 0184 lw	at,got(.rodata)(gp)
 				# 0188 ldc1	$f0,lo(L1.9)(at)
 	seq	$4, $5, -100	# 018c daddiu	a0,a1,100
 				# 0190 sltiu	a0,a0,1
@@ -121,20 +121,20 @@ func:
 				# 0198 sltu	a0,zero,a0
 	move	$4, $5		# 019c move	a0,a1
 
-	dla	$4, shared	# 01a0 ld	a0,got(.sdata)(gp)
+	dla	$4, shared	# 01a0 lw	a0,got(.sdata)(gp)
 				# 01a4 nop
-				# 01a8 daddiu	a0,a0,lo(shared) 
-	dla	$4, unshared	# 01ac ld	a0,got(.data)(gp)
+				# 01a8 addiu	a0,a0,lo(shared) 
+	dla	$4, unshared	# 01ac lw	a0,got(.data)(gp)
 				# 01b0 nop
-				# 01b4 daddiu	a0,a0,lo(unshared)
-	uld	$4, unshared	# 01b8 ld	at,got(.data)(gp)
+				# 01b4 addiu	a0,a0,lo(unshared)
+	uld	$4, unshared	# 01b8 lw	at,got(.data)(gp)
 				# 01bc nop
-				# 01c0 daddiu	at,at,lo(unshared)
+				# 01c0 addiu	at,at,lo(unshared)
 				# 01c4 ldl	a0,0(at)
 				# 01c8 ldr	a0,7(at)
-	usd	$4, unshared	# 01cc ld	at,got(.data)(gp)
+	usd	$4, unshared	# 01cc lw	at,got(.data)(gp)
 				# 01d0 nop
-				# 01d4 daddiu	at,at,lo(unshared)
+				# 01d4 addiu	at,at,lo(unshared)
 				# 01d8 sdl	a0,0(at)
 				# 01dc sdr	a0,7(at)
 
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/mips-gp64-fp32.d src/gas/testsuite/gas/mips/mips-gp64-fp32.d
--- src-orig/gas/testsuite/gas/mips/mips-gp64-fp32.d	Tue Aug  7 17:20:30 2001
+++ src/gas/testsuite/gas/mips/mips-gp64-fp32.d	Tue Aug 21 19:20:35 2001
@@ -9,11 +9,11 @@ Disassembly of section .text:
 0+000 <[^>]*>:
    0:	3c041234 	lui	a0,0x1234
    4:	34845678 	ori	a0,a0,0x5678
-   8:	6784c000 	daddiu	a0,gp,-16384
+   8:	2784c000 	addiu	a0,gp,-16384
    c:	3c040000 	lui	a0,0x0
-  10:	64840000 	daddiu	a0,a0,0
+  10:	24840000 	addiu	a0,a0,0
   14:	3c040000 	lui	a0,0x0
-  18:	64840154 	daddiu	a0,a0,340
+  18:	24840154 	addiu	a0,a0,340
   1c:	08000055 	j	154 <[^>]*>
   20:	0c000055 	jal	154 <[^>]*>
   24:	8f84c000 	lw	a0,-16384\(gp\)
@@ -33,13 +33,13 @@ Disassembly of section .text:
   5c:	3c010000 	lui	at,0x0
   60:	fc240000 	sd	a0,0\(at\)
   64:	3c010000 	lui	at,0x0
-  68:	64210000 	daddiu	at,at,0
+  68:	24210000 	addiu	at,at,0
   6c:	80240000 	lb	a0,0\(at\)
   70:	90210001 	lbu	at,1\(at\)
   74:	00042200 	sll	a0,a0,0x8
   78:	00812025 	or	a0,a0,at
   7c:	3c010000 	lui	at,0x0
-  80:	64210000 	daddiu	at,at,0
+  80:	24210000 	addiu	at,at,0
   84:	a0240001 	sb	a0,1\(at\)
   88:	00042202 	srl	a0,a0,0x8
   8c:	a0240000 	sb	a0,0\(at\)
@@ -47,11 +47,11 @@ Disassembly of section .text:
   94:	00042200 	sll	a0,a0,0x8
   98:	00812025 	or	a0,a0,at
   9c:	3c010000 	lui	at,0x0
-  a0:	64210000 	daddiu	at,at,0
+  a0:	24210000 	addiu	at,at,0
   a4:	88240000 	lwl	a0,0\(at\)
   a8:	98240003 	lwr	a0,3\(at\)
   ac:	3c010000 	lui	at,0x0
-  b0:	64210000 	daddiu	at,at,0
+  b0:	24210000 	addiu	at,at,0
   b4:	a8240000 	swl	a0,0\(at\)
   b8:	b8240003 	swr	a0,3\(at\)
   bc:	3404ffc0 	li	a0,0xffc0
@@ -67,15 +67,15 @@ Disassembly of section .text:
   e4:	64a40064 	daddiu	a0,a1,100
   e8:	0004202b 	sltu	a0,zero,a0
   ec:	00a0202d 	move	a0,a1
-  f0:	6784c000 	daddiu	a0,gp,-16384
+  f0:	2784c000 	addiu	a0,gp,-16384
   f4:	3c040000 	lui	a0,0x0
-  f8:	64840000 	daddiu	a0,a0,0
+  f8:	24840000 	addiu	a0,a0,0
   fc:	3c010000 	lui	at,0x0
- 100:	64210000 	daddiu	at,at,0
+ 100:	24210000 	addiu	at,at,0
  104:	68240000 	ldl	a0,0\(at\)
  108:	6c240007 	ldr	a0,7\(at\)
  10c:	3c010000 	lui	at,0x0
- 110:	64210000 	daddiu	at,at,0
+ 110:	24210000 	addiu	at,at,0
  114:	b0240000 	sdl	a0,0\(at\)
  118:	b4240007 	sdr	a0,7\(at\)
  11c:	3c018000 	lui	at,0x8000
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/mips-gp64-fp32.s src/gas/testsuite/gas/mips/mips-gp64-fp32.s
--- src-orig/gas/testsuite/gas/mips/mips-gp64-fp32.s	Tue Aug  7 17:20:30 2001
+++ src/gas/testsuite/gas/mips/mips-gp64-fp32.s	Tue Aug 21 19:20:35 2001
@@ -16,11 +16,11 @@ func:
 	.set mips4
 	li	$4, 0x12345678	# 0000 lui	a0,0x1234
 				# 0004 ori	a0,a0,0x5678
-	la	$4, shared	# 0008 daddiu	a0,gp,shared
+	la	$4, shared	# 0008 addiu	a0,gp,shared
 	la	$4, unshared	# 000c lui	a0,hi(unshared)
-				# 0010 daddiu	a0,a0,lo(unshared)
+				# 0010 addiu	a0,a0,lo(unshared)
 	la	$4, end		# 0014 lui	a0,hi(end)
-				# 0018 daddiu	a0,a0,lo(end)
+				# 0018 addiu	a0,a0,lo(end)
 	j	end		# 001c j	end
 	jal	end		# 0020 jal	end
 	lw	$4, shared	# 0024 lw	a0,shared(gp)
@@ -40,13 +40,13 @@ func:
 	sd	$4, unshared	# 005c lui	at,hi(unshared)
 				# 0060 sd	a0,lo(unshared)(at)
 	ulh	$4, unshared	# 0064 lui	at,hi(unshared)
-				# 0068 daddiu	at,at,lo(unshared)
+				# 0068 addiu	at,at,lo(unshared)
 				# 006c lb	a0,0(at)
 				# 0070 lbu	at,1(at)
 				# 0074 sll	a0,a0,8
 				# 0078 or	a0,a0,at
 	ush	$4, unshared	# 007c lui	at,hi(unshared)
-				# 0080 daddiu	at,at,lo(unshared)
+				# 0080 addiu	at,at,lo(unshared)
 				# 0084 sb	a0,1(at)
 				# 0088 srl	a0,a0,8
 				# 008c sb	a0,0(at)
@@ -54,11 +54,11 @@ func:
 				# 0094 sll	a0,a0,8
 				# 0098 or	a0,a0,at
 	ulw	$4, unshared	# 009c lui	at,hi(unshared)
-				# 00a0 daddiu	at,at,lo(unshared)
+				# 00a0 addiu	at,at,lo(unshared)
 				# 00a4 lwl	a0,0(at)
 				# 00a8 lwr	a0,3(at)
 	usw	$4, unshared	# 00ac lui	at,hi(unshared)
-				# 00b0 daddiu	at,at,lo(unshared)
+				# 00b0 addiu	at,at,lo(unshared)
 				# 00b4 swl	a0,0(at)
 				# 00b8 swr	a0,3(at)
 	li.d	$4, 1.0		# 00bc li	a0,0xffc0
@@ -75,15 +75,15 @@ func:
 				# 00e8 sltu	a0,zero,a0
 	move	$4, $5		# 00ec move	a0,a1
 
-	dla	$4, shared	# 00f0 daddiu	a0,gp,shared
+	dla	$4, shared	# 00f0 addiu	a0,gp,shared
 	dla	$4, unshared	# 00f4 lui	a0,hi(unshared)
-				# 00f8 daddiu	a0,a0,lo(unshared)
+				# 00f8 addiu	a0,a0,lo(unshared)
 	uld	$4, unshared	# 00fc lui	at,hi(unshared)
-				# 0100 daddiu	at,at,lo(unshared)
+				# 0100 addiu	at,at,lo(unshared)
 				# 0104 ldl	a0,0(at)
 				# 0108 ldr	a0,7(at)
 	usd	$4, unshared	# 010c lui	at,hi(unshared)
-				# 0110 daddiu	at,at,lo(unshared)
+				# 0110 addiu	at,at,lo(unshared)
 				# 0114 sdl	a0,0(at)
 				# 0118 sdr	a0,7(at)
 
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/mips-gp64-fp64-pic.d src/gas/testsuite/gas/mips/mips-gp64-fp64-pic.d
--- src-orig/gas/testsuite/gas/mips/mips-gp64-fp64-pic.d	Tue Aug  7 17:20:30 2001
+++ src/gas/testsuite/gas/mips/mips-gp64-fp64-pic.d	Tue Aug 21 19:20:35 2001
@@ -10,121 +10,121 @@ Disassembly of section .text:
    0:	3c1c0000 	lui	gp,0x0
    4:	279c0000 	addiu	gp,gp,0
    8:	0399e021 	addu	gp,gp,t9
-   c:	ffbc0008 	sd	gp,8\(sp\)
-  10:	009c202d 	daddu	a0,a0,gp
+   c:	afbc0008 	sw	gp,8\(sp\)
+  10:	009c2021 	addu	a0,a0,gp
   14:	3c041234 	lui	a0,0x1234
   18:	34845678 	ori	a0,a0,0x5678
   1c:	8f840000 	lw	a0,0\(gp\)
   20:	00000000 	nop
-  24:	64840000 	daddiu	a0,a0,0
+  24:	24840000 	addiu	a0,a0,0
   28:	8f840000 	lw	a0,0\(gp\)
   2c:	00000000 	nop
-  30:	64840000 	daddiu	a0,a0,0
+  30:	24840000 	addiu	a0,a0,0
   34:	8f840000 	lw	a0,0\(gp\)
   38:	00000000 	nop
-  3c:	6484022c 	daddiu	a0,a0,556
+  3c:	2484022c 	addiu	a0,a0,556
   40:	1000007a 	b	22c <[^>]*>
   44:	00000000 	nop
-  48:	df990000 	ld	t9,0\(gp\)
+  48:	8f990000 	lw	t9,0\(gp\)
   4c:	00000000 	nop
-  50:	6739022c 	daddiu	t9,t9,556
+  50:	2739022c 	addiu	t9,t9,556
   54:	0320f809 	jalr	t9
   58:	00000000 	nop
-  5c:	dfbc0008 	ld	gp,8\(sp\)
-  60:	df840000 	ld	a0,0\(gp\)
+  5c:	8fbc0008 	lw	gp,8\(sp\)
+  60:	8f840000 	lw	a0,0\(gp\)
   64:	00000000 	nop
-  68:	64840000 	daddiu	a0,a0,0
+  68:	24840000 	addiu	a0,a0,0
   6c:	8c840000 	lw	a0,0\(a0\)
-  70:	df840000 	ld	a0,0\(gp\)
+  70:	8f840000 	lw	a0,0\(gp\)
   74:	00000000 	nop
-  78:	64840000 	daddiu	a0,a0,0
+  78:	24840000 	addiu	a0,a0,0
   7c:	8c840000 	lw	a0,0\(a0\)
-  80:	df840000 	ld	a0,0\(gp\)
+  80:	8f840000 	lw	a0,0\(gp\)
   84:	00000000 	nop
-  88:	6484022c 	daddiu	a0,a0,556
+  88:	2484022c 	addiu	a0,a0,556
   8c:	8c840000 	lw	a0,0\(a0\)
-  90:	df840000 	ld	a0,0\(gp\)
+  90:	8f840000 	lw	a0,0\(gp\)
   94:	00000000 	nop
-  98:	64840000 	daddiu	a0,a0,0
+  98:	24840000 	addiu	a0,a0,0
   9c:	dc840000 	ld	a0,0\(a0\)
-  a0:	df840000 	ld	a0,0\(gp\)
+  a0:	8f840000 	lw	a0,0\(gp\)
   a4:	00000000 	nop
-  a8:	64840000 	daddiu	a0,a0,0
+  a8:	24840000 	addiu	a0,a0,0
   ac:	dc840000 	ld	a0,0\(a0\)
-  b0:	df840000 	ld	a0,0\(gp\)
+  b0:	8f840000 	lw	a0,0\(gp\)
   b4:	00000000 	nop
-  b8:	6484022c 	daddiu	a0,a0,556
+  b8:	2484022c 	addiu	a0,a0,556
   bc:	dc840000 	ld	a0,0\(a0\)
-  c0:	df810000 	ld	at,0\(gp\)
+  c0:	8f810000 	lw	at,0\(gp\)
   c4:	00000000 	nop
-  c8:	64210000 	daddiu	at,at,0
+  c8:	24210000 	addiu	at,at,0
   cc:	ac240000 	sw	a0,0\(at\)
-  d0:	df810000 	ld	at,0\(gp\)
+  d0:	8f810000 	lw	at,0\(gp\)
   d4:	00000000 	nop
-  d8:	64210000 	daddiu	at,at,0
+  d8:	24210000 	addiu	at,at,0
   dc:	ac240000 	sw	a0,0\(at\)
-  e0:	df810000 	ld	at,0\(gp\)
+  e0:	8f810000 	lw	at,0\(gp\)
   e4:	00000000 	nop
-  e8:	64210000 	daddiu	at,at,0
+  e8:	24210000 	addiu	at,at,0
   ec:	fc240000 	sd	a0,0\(at\)
-  f0:	df810000 	ld	at,0\(gp\)
+  f0:	8f810000 	lw	at,0\(gp\)
   f4:	00000000 	nop
-  f8:	64210000 	daddiu	at,at,0
+  f8:	24210000 	addiu	at,at,0
   fc:	fc240000 	sd	a0,0\(at\)
- 100:	df810000 	ld	at,0\(gp\)
+ 100:	8f810000 	lw	at,0\(gp\)
  104:	00000000 	nop
- 108:	64210000 	daddiu	at,at,0
+ 108:	24210000 	addiu	at,at,0
  10c:	80240000 	lb	a0,0\(at\)
  110:	90210001 	lbu	at,1\(at\)
  114:	00042200 	sll	a0,a0,0x8
  118:	00812025 	or	a0,a0,at
- 11c:	df810000 	ld	at,0\(gp\)
+ 11c:	8f810000 	lw	at,0\(gp\)
  120:	00000000 	nop
- 124:	64210000 	daddiu	at,at,0
+ 124:	24210000 	addiu	at,at,0
  128:	a0240001 	sb	a0,1\(at\)
  12c:	00042202 	srl	a0,a0,0x8
  130:	a0240000 	sb	a0,0\(at\)
  134:	90210001 	lbu	at,1\(at\)
  138:	00042200 	sll	a0,a0,0x8
  13c:	00812025 	or	a0,a0,at
- 140:	df810000 	ld	at,0\(gp\)
+ 140:	8f810000 	lw	at,0\(gp\)
  144:	00000000 	nop
- 148:	64210000 	daddiu	at,at,0
+ 148:	24210000 	addiu	at,at,0
  14c:	88240000 	lwl	a0,0\(at\)
  150:	98240003 	lwr	a0,3\(at\)
- 154:	df810000 	ld	at,0\(gp\)
+ 154:	8f810000 	lw	at,0\(gp\)
  158:	00000000 	nop
- 15c:	64210000 	daddiu	at,at,0
+ 15c:	24210000 	addiu	at,at,0
  160:	a8240000 	swl	a0,0\(at\)
  164:	b8240003 	swr	a0,3\(at\)
  168:	3404ffc0 	li	a0,0xffc0
  16c:	000423bc 	dsll32	a0,a0,0xe
- 170:	df810000 	ld	at,0\(gp\)
+ 170:	8f810000 	lw	at,0\(gp\)
  174:	dc240000 	ld	a0,0\(at\)
  178:	3401ffc0 	li	at,0xffc0
  17c:	00010bbc 	dsll32	at,at,0xe
  180:	44a10000 	dmtc1	at,\$f0
- 184:	df810000 	ld	at,0\(gp\)
+ 184:	8f810000 	lw	at,0\(gp\)
  188:	d4200008 	ldc1	\$f0,8\(at\)
  18c:	64a40064 	daddiu	a0,a1,100
  190:	2c840001 	sltiu	a0,a0,1
  194:	64a40064 	daddiu	a0,a1,100
  198:	0004202b 	sltu	a0,zero,a0
  19c:	00a0202d 	move	a0,a1
- 1a0:	df840000 	ld	a0,0\(gp\)
+ 1a0:	8f840000 	lw	a0,0\(gp\)
  1a4:	00000000 	nop
- 1a8:	64840000 	daddiu	a0,a0,0
- 1ac:	df840000 	ld	a0,0\(gp\)
+ 1a8:	24840000 	addiu	a0,a0,0
+ 1ac:	8f840000 	lw	a0,0\(gp\)
  1b0:	00000000 	nop
- 1b4:	64840000 	daddiu	a0,a0,0
- 1b8:	df810000 	ld	at,0\(gp\)
+ 1b4:	24840000 	addiu	a0,a0,0
+ 1b8:	8f810000 	lw	at,0\(gp\)
  1bc:	00000000 	nop
- 1c0:	64210000 	daddiu	at,at,0
+ 1c0:	24210000 	addiu	at,at,0
  1c4:	68240000 	ldl	a0,0\(at\)
  1c8:	6c240007 	ldr	a0,7\(at\)
- 1cc:	df810000 	ld	at,0\(gp\)
+ 1cc:	8f810000 	lw	at,0\(gp\)
  1d0:	00000000 	nop
- 1d4:	64210000 	daddiu	at,at,0
+ 1d4:	24210000 	addiu	at,at,0
  1d8:	b0240000 	sdl	a0,0\(at\)
  1dc:	b4240007 	sdr	a0,7\(at\)
  1e0:	3c018000 	lui	at,0x8000
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/mips-gp64-fp64-pic.s src/gas/testsuite/gas/mips/mips-gp64-fp64-pic.s
--- src-orig/gas/testsuite/gas/mips/mips-gp64-fp64-pic.s	Tue Aug  7 17:20:30 2001
+++ src/gas/testsuite/gas/mips/mips-gp64-fp64-pic.s	Tue Aug 21 19:20:35 2001
@@ -19,101 +19,101 @@ func:
 				# 0004 addiu	gp,gp,lo(_gp_disp)
 				# 0008 addu	gp,gp,t9
 	.set reorder
-	.cprestore 8		# 000c sd	gp,8(sp)
-	.cpadd $4		# 0010 daddu	a0,a0,gp
+	.cprestore 8		# 000c sw	gp,8(sp)
+	.cpadd $4		# 0010 addu	a0,a0,gp
 	li	$4, 0x12345678	# 0014 lui	a0,0x1234
 				# 0018 ori	a0,a0,0x5678
 	la	$4, shared	# 001c lw	a0,got(.sdata)(gp)
 				# 0020 nop
-				# 0024 daddiu	a0,a0,lo(shared)
+				# 0024 addiu	a0,a0,lo(shared)
 	la	$4, unshared	# 0028 lw	a0,got(.data)(gp)
 				# 002c nop
-				# 0030 daddiu	a0,a0,lo(unshared)
+				# 0030 addiu	a0,a0,lo(unshared)
 	la	$4, end		# 0034 lw	a0,got(.text)(gp)
 				# 0038 nop
-				# 003c daddiu	a0,a0,lo(end)
+				# 003c addiu	a0,a0,lo(end)
 	j	end		# 0040 b	end
 				# 0044 nop
-	jal	end		# 0048 ld	t9,got(.text)(gp)
+	jal	end		# 0048 lw	t9,got(.text)(gp)
 				# 004c nop
-				# 0050 daddiu	t9,t9,lo(end)
+				# 0050 addiu	t9,t9,lo(end)
 				# 0054 jalr	t9
 				# 0058 nop
-				# 005c ld	gp,8(sp)
-	lw	$4, shared	# 0060 ld	a0,got(.sdata)(gp)
+				# 005c lw	gp,8(sp)
+	lw	$4, shared	# 0060 lw	a0,got(.sdata)(gp)
 				# 0064 nop
-				# 0068 daddiu	a0,a0,lo(shared)
+				# 0068 addiu	a0,a0,lo(shared)
 				# 006c lw	a0,(a0)
-	lw	$4, unshared	# 0070 ld	a0,got(.data)(gp)
+	lw	$4, unshared	# 0070 lw	a0,got(.data)(gp)
 				# 0074 nop
-				# 0078 daddiu	a0,a0,lo(unshared)
+				# 0078 addiu	a0,a0,lo(unshared)
 				# 007c lw	a0,(a0)
-	lw	$4, end		# 0080 ld	a0,got(.text)(gp)
+	lw	$4, end		# 0080 lw	a0,got(.text)(gp)
 				# 0084 nop
-				# 0088 daddiu	a0,a0,lo(end)
+				# 0088 addiu	a0,a0,lo(end)
 				# 008c lw	a0,(a0)
-	ld	$4, shared	# 0090 ld	a0,got(.sdata)(gp)
+	ld	$4, shared	# 0090 lw	a0,got(.sdata)(gp)
 				# 0094 nop
-				# 0098 daddiu	a0,a0,lo(shared)
+				# 0098 addiu	a0,a0,lo(shared)
 				# 009c ld	a0,(a0)
-	ld	$4, unshared	# 00a0 ld	a0,got(.data)(gp)
+	ld	$4, unshared	# 00a0 lw	a0,got(.data)(gp)
 				# 00a4 nop
-				# 00a8 daddiu	a0,a0,lo(unshared)
+				# 00a8 addiu	a0,a0,lo(unshared)
 				# 00ac ld	a0,(a0)
-	ld	$4, end		# 00b0 ld	a0,got(.text)(gp)
+	ld	$4, end		# 00b0 lw	a0,got(.text)(gp)
 				# 00b4 nop
-				# 00b8 daddiu	a0,a0,lo(end)
+				# 00b8 addiu	a0,a0,lo(end)
 				# 00bc ld	a0,(a0)
-	sw	$4, shared	# 00c0 ld	at,got(.sdata)(gp)
+	sw	$4, shared	# 00c0 lw	at,got(.sdata)(gp)
 				# 00c4 nop
-				# 00c8 daddiu	at,at,lo(shared)
+				# 00c8 addiu	at,at,lo(shared)
 				# 00cc sw	a0,0(at)
-	sw	$4, unshared	# 00d0 ld	at,got(.data)(gp)
+	sw	$4, unshared	# 00d0 lw	at,got(.data)(gp)
 				# 00d4 nop
-				# 00d8 daddiu	at,at,lo(unshared)
+				# 00d8 addiu	at,at,lo(unshared)
 				# 00dc sw	a0,0(at)
-	sd	$4, shared	# 00e0 ld	at,got(.sdata)(gp)
+	sd	$4, shared	# 00e0 lw	at,got(.sdata)(gp)
 				# 00e4 nop
-				# 00e8 daddiu	at,at,lo(shared)
+				# 00e8 addiu	at,at,lo(shared)
 				# 00ec sd	a0,(at)
-	sd	$4, unshared	# 00f0 ld	at,got(.data)(gp)
+	sd	$4, unshared	# 00f0 lw	at,got(.data)(gp)
 				# 00f4 nop
-				# 00f8 daddiu	at,at,lo(unshared)
+				# 00f8 addiu	at,at,lo(unshared)
 				# 00fc sd	a0,(at)
-	ulh	$4, unshared	# 0100 ld	at,got(.data)(gp)
+	ulh	$4, unshared	# 0100 lw	at,got(.data)(gp)
 				# 0104 nop
-				# 0108 daddiu	at,at,lo(unshared)
+				# 0108 addiu	at,at,lo(unshared)
 				# 010c lb	a0,0(at)
 				# 0110 lbu	at,1(at)
 				# 0114 sll	a0,a0,8
 				# 0118 or	a0,a0,at
-	ush	$4, unshared	# 011c ld	at,got(.data)(gp)
+	ush	$4, unshared	# 011c lw	at,got(.data)(gp)
 				# 0120 nop
-				# 0124 daddiu	at,at,lo(unshared)
+				# 0124 addiu	at,at,lo(unshared)
 				# 0128 sb	a0,0(at)
 				# 012c srl	a0,a0,8
 				# 0130 sb	a0,1(at)
 				# 0134 lbu	at,0(at)
 				# 0138 sll	a0,a0,8
 				# 013c or	a0,a0,at
-	ulw	$4, unshared	# 0140 ld	at,got(.data)(gp)
+	ulw	$4, unshared	# 0140 lw	at,got(.data)(gp)
 				# 0144 nop
-				# 0148 daddiu	at,at,lo(unshared)
+				# 0148 addiu	at,at,lo(unshared)
 				# 014c lwl	a0,0(at)
 				# 0150 lwr	a0,3(at)
-	usw	$4, unshared	# 0154 ld	at,got(.data)(gp)
+	usw	$4, unshared	# 0154 lw	at,got(.data)(gp)
 				# 0158 nop
-				# 015c daddiu	at,at,lo(unshared)
+				# 015c addiu	at,at,lo(unshared)
 				# 0160 swl	a0,0(at)
 				# 0164 swr	a0,3(at)
 	li.d	$4, 1.0		# 0168 li	a0,0xffc0
 				# 016c dsll32	a0,a0,14
-	li.d	$4, 1.9		# 0170 ld	at,got(.rodata)(gp)
+	li.d	$4, 1.9		# 0170 lw	at,got(.rodata)(gp)
 				# 0174 ld	a0,lo(F1.9)(at)
 	li.d	$f0, 1.0	# 0178 li	at,0xffc0
 				# 017c dsll32	at,at,14
 				# 0180 dmtc1	at,$f0
-	li.d	$f0, 1.9	# 0184 ld	at,got(.rodata)(gp)
+	li.d	$f0, 1.9	# 0184 lw	at,got(.rodata)(gp)
 				# 0188 ldc1	$f0,lo(L1.9)(at)
 	seq	$4, $5, -100	# 018c daddiu	a0,a1,100
 				# 0190 sltiu	a0,a0,1
@@ -121,20 +121,20 @@ func:
 				# 0198 sltu	a0,zero,a0
 	move	$4, $5		# 019c move	a0,a1
 
-	dla	$4, shared	# 01a0 ld	a0,got(.sdata)(gp)
+	dla	$4, shared	# 01a0 lw	a0,got(.sdata)(gp)
 				# 01a4 nop
-				# 01a8 daddiu	a0,a0,lo(shared) 
-	dla	$4, unshared	# 01ac ld	a0,got(.data)(gp)
+				# 01a8 addiu	a0,a0,lo(shared) 
+	dla	$4, unshared	# 01ac lw	a0,got(.data)(gp)
 				# 01b0 nop
-				# 01b4 daddiu	a0,a0,lo(unshared)
-	uld	$4, unshared	# 01b8 ld	at,got(.data)(gp)
+				# 01b4 addiu	a0,a0,lo(unshared)
+	uld	$4, unshared	# 01b8 lw	at,got(.data)(gp)
 				# 01bc nop
-				# 01c0 daddiu	at,at,lo(unshared)
+				# 01c0 addiu	at,at,lo(unshared)
 				# 01c4 ldl	a0,0(at)
 				# 01c8 ldr	a0,7(at)
-	usd	$4, unshared	# 01cc ld	at,got(.data)(gp)
+	usd	$4, unshared	# 01cc lw	at,got(.data)(gp)
 				# 01d0 nop
-				# 01d4 daddiu	at,at,lo(unshared)
+				# 01d4 addiu	at,at,lo(unshared)
 				# 01d8 sdl	a0,0(at)
 				# 01dc sdr	a0,7(at)
 
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/mips-gp64-fp64.d src/gas/testsuite/gas/mips/mips-gp64-fp64.d
--- src-orig/gas/testsuite/gas/mips/mips-gp64-fp64.d	Tue Aug  7 17:20:30 2001
+++ src/gas/testsuite/gas/mips/mips-gp64-fp64.d	Tue Aug 21 19:20:35 2001
@@ -9,11 +9,11 @@ Disassembly of section .text:
 0+000 <[^>]*>:
    0:	3c041234 	lui	a0,0x1234
    4:	34845678 	ori	a0,a0,0x5678
-   8:	6784c000 	daddiu	a0,gp,-16384
+   8:	2784c000 	addiu	a0,gp,-16384
    c:	3c040000 	lui	a0,0x0
-  10:	64840000 	daddiu	a0,a0,0
+  10:	24840000 	addiu	a0,a0,0
   14:	3c040000 	lui	a0,0x0
-  18:	64840158 	daddiu	a0,a0,344
+  18:	24840158 	addiu	a0,a0,344
   1c:	08000056 	j	158 <[^>]*>
   20:	0c000056 	jal	158 <[^>]*>
   24:	8f84c000 	lw	a0,-16384\(gp\)
@@ -33,13 +33,13 @@ Disassembly of section .text:
   5c:	3c010000 	lui	at,0x0
   60:	fc240000 	sd	a0,0\(at\)
   64:	3c010000 	lui	at,0x0
-  68:	64210000 	daddiu	at,at,0
+  68:	24210000 	addiu	at,at,0
   6c:	80240000 	lb	a0,0\(at\)
   70:	90210001 	lbu	at,1\(at\)
   74:	00042200 	sll	a0,a0,0x8
   78:	00812025 	or	a0,a0,at
   7c:	3c010000 	lui	at,0x0
-  80:	64210000 	daddiu	at,at,0
+  80:	24210000 	addiu	at,at,0
   84:	a0240001 	sb	a0,1\(at\)
   88:	00042202 	srl	a0,a0,0x8
   8c:	a0240000 	sb	a0,0\(at\)
@@ -47,11 +47,11 @@ Disassembly of section .text:
   94:	00042200 	sll	a0,a0,0x8
   98:	00812025 	or	a0,a0,at
   9c:	3c010000 	lui	at,0x0
-  a0:	64210000 	daddiu	at,at,0
+  a0:	24210000 	addiu	at,at,0
   a4:	88240000 	lwl	a0,0\(at\)
   a8:	98240003 	lwr	a0,3\(at\)
   ac:	3c010000 	lui	at,0x0
-  b0:	64210000 	daddiu	at,at,0
+  b0:	24210000 	addiu	at,at,0
   b4:	a8240000 	swl	a0,0\(at\)
   b8:	b8240003 	swr	a0,3\(at\)
   bc:	3404ffc0 	li	a0,0xffc0
@@ -67,15 +67,15 @@ Disassembly of section .text:
   e4:	64a40064 	daddiu	a0,a1,100
   e8:	0004202b 	sltu	a0,zero,a0
   ec:	00a0202d 	move	a0,a1
-  f0:	6784c000 	daddiu	a0,gp,-16384
+  f0:	2784c000 	addiu	a0,gp,-16384
   f4:	3c040000 	lui	a0,0x0
-  f8:	64840000 	daddiu	a0,a0,0
+  f8:	24840000 	addiu	a0,a0,0
   fc:	3c010000 	lui	at,0x0
- 100:	64210000 	daddiu	at,at,0
+ 100:	24210000 	addiu	at,at,0
  104:	68240000 	ldl	a0,0\(at\)
  108:	6c240007 	ldr	a0,7\(at\)
  10c:	3c010000 	lui	at,0x0
- 110:	64210000 	daddiu	at,at,0
+ 110:	24210000 	addiu	at,at,0
  114:	b0240000 	sdl	a0,0\(at\)
  118:	b4240007 	sdr	a0,7\(at\)
  11c:	3c018000 	lui	at,0x8000
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/mips-gp64-fp64.s src/gas/testsuite/gas/mips/mips-gp64-fp64.s
--- src-orig/gas/testsuite/gas/mips/mips-gp64-fp64.s	Tue Aug  7 17:20:30 2001
+++ src/gas/testsuite/gas/mips/mips-gp64-fp64.s	Tue Aug 21 19:20:35 2001
@@ -16,11 +16,11 @@ func:
 	.set mips4
 	li	$4, 0x12345678	# 0000 lui	a0,0x1234
 				# 0004 ori	a0,a0,0x5678
-	la	$4, shared	# 0008 daddiu	a0,gp,shared
+	la	$4, shared	# 0008 addiu	a0,gp,shared
 	la	$4, unshared	# 000c lui	a0,hi(unshared)
-				# 0010 daddiu	a0,a0,lo(unshared)
+				# 0010 addiu	a0,a0,lo(unshared)
 	la	$4, end		# 0014 lui	a0,hi(end)
-				# 0018 daddiu	a0,a0,lo(end)
+				# 0018 addiu	a0,a0,lo(end)
 	j	end		# 001c j	end
 	jal	end		# 0020 jal	end
 	lw	$4, shared	# 0024 lw	a0,shared(gp)
@@ -40,13 +40,13 @@ func:
 	sd	$4, unshared	# 005c lui	at,hi(unshared)
 				# 0060 sd	a0,lo(unshared)(at)
 	ulh	$4, unshared	# 0064 lui	at,hi(unshared)
-				# 0068 daddiu	at,at,lo(unshared)
+				# 0068 addiu	at,at,lo(unshared)
 				# 006c lb	a0,0(at)
 				# 0070 lbu	at,1(at)
 				# 0074 sll	a0,a0,8
 				# 0078 or	a0,a0,at
 	ush	$4, unshared	# 007c lui	at,hi(unshared)
-				# 0080 daddiu	at,at,lo(unshared)
+				# 0080 addiu	at,at,lo(unshared)
 				# 0084 sb	a0,1(at)
 				# 0088 srl	a0,a0,8
 				# 008c sb	a0,0(at)
@@ -54,11 +54,11 @@ func:
 				# 0094 sll	a0,a0,8
 				# 0098 or	a0,a0,at
 	ulw	$4, unshared	# 009c lui	at,hi(unshared)
-				# 00a0 daddiu	at,at,lo(unshared)
+				# 00a0 addiu	at,at,lo(unshared)
 				# 00a4 lwl	a0,0(at)
 				# 00a8 lwr	a0,3(at)
 	usw	$4, unshared	# 00ac lui	at,hi(unshared)
-				# 00b0 daddiu	at,at,lo(unshared)
+				# 00b0 addiu	at,at,lo(unshared)
 				# 00b4 swl	a0,0(at)
 				# 00b8 swr	a0,3(at)
 	li.d	$4, 1.0		# 00bc li	a0,0xffc0
@@ -75,15 +75,15 @@ func:
 				# 00e8 sltu	a0,zero,a0
 	move	$4, $5		# 00ec move	a0,a1
 
-	dla	$4, shared	# 00f0 daddiu	a0,gp,shared
+	dla	$4, shared	# 00f0 addiu	a0,gp,shared
 	dla	$4, unshared	# 00f4 lui	a0,hi(unshared)
-				# 00f8 daddiu	a0,a0,lo(unshared)
+				# 00f8 addiu	a0,a0,lo(unshared)
 	uld	$4, unshared	# 00fc lui	at,hi(unshared)
-				# 0100 daddiu	at,at,lo(unshared)
+				# 0100 addiu	at,at,lo(unshared)
 				# 0104 ldl	a0,0(at)
 				# 0108 ldr	a0,7(at)
 	usd	$4, unshared	# 010c lui	at,hi(unshared)
-				# 0110 daddiu	at,at,lo(unshared)
+				# 0110 addiu	at,at,lo(unshared)
 				# 0114 sdl	a0,0(at)
 				# 0118 sdr	a0,7(at)
 
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/elf-rel4.d src/gas/testsuite/gas/mips/elf-rel4.d
--- src-orig/gas/testsuite/gas/mips/elf-rel4.d	Fri Aug  3 20:37:42 2001
+++ src/gas/testsuite/gas/mips/elf-rel4.d	Tue Aug 21 19:20:35 2001
@@ -4,11 +4,11 @@
 .*: +file format.*
 
 Disassembly of section .text:
-0+000 <[^>]*> daddiu	a0,gp,0
+0+000 <[^>]*> addiu	a0,gp,0
 			0: R_MIPS_GPREL16	a
-0+004 <[^>]*> daddiu	a0,gp,4
+0+004 <[^>]*> addiu	a0,gp,4
 			4: R_MIPS_GPREL16	a
-0+008 <[^>]*> daddiu	a0,gp,8
+0+008 <[^>]*> addiu	a0,gp,8
 			8: R_MIPS_GPREL16	a
-0+00c <[^>]*> daddiu	a0,gp,12
+0+00c <[^>]*> addiu	a0,gp,12
 			c: R_MIPS_GPREL16	a
--- src-orig/gas/testsuite/gas/mips/elempic.d	Sat Aug 25 01:28:15 2001
+++ src/gas/testsuite/gas/mips/elempic.d	Sat Aug 25 02:56:57 2001
@@ -120,7 +120,7 @@
  0070 00010000 00000000 04000000 00000000  .*
  0080 4c000000 00000000 54010000 00000000  .*
  0090 d0ffffff ffffffff 32000010 33000010  .*
- 00a0 0000033c d8006364 0000033c e8006364  .*
+ 00a0 0000033c d80063[26]4 0000033c e80063[26]4  .*
  00b0 cc000000 34000000 cc000000 00000000  .*
  00c0 34000000 00000000 00000000 32000010  .*
  00d0 33000010 34000324 3c000324 cc000000  .*
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/uld.d src/gas/testsuite/gas/mips/uld.d
--- src-orig/gas/testsuite/gas/mips/uld.d	Mon Jul  2 14:34:18 2001
+++ src/gas/testsuite/gas/mips/uld.d	Tue Aug 21 19:20:35 2001
@@ -29,241 +29,241 @@ Disassembly of section .text:
 0+004c <[^>]*> ldr	a0,[-0-9]+\(a1\)
 0+0050 <[^>]*> lui	at,[-0-9x]+
 [ 	]*50: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+0054 <[^>]*> daddiu	at,at,[-0-9]+
+0+0054 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*54: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0058 <[^>]*> ldl	a0,[07]\(at\)
 0+005c <[^>]*> ldr	a0,[07]\(at\)
 0+0060 <[^>]*> lui	at,0x0
 [ 	]*60: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+0064 <[^>]*> daddiu	at,at,[-0-9]+
+0+0064 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*64: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+0068 <[^>]*> ldl	a0,[07]\(at\)
 0+006c <[^>]*> ldr	a0,[07]\(at\)
-0+0070 <[^>]*> daddiu	at,gp,0
+0+0070 <[^>]*> addiu	at,gp,0
 [ 	]*70: [A-Z0-9_]*GPREL[A-Z0-9_]*	small_external_data_label
 0+0074 <[^>]*> ldl	a0,[07]\(at\)
 0+0078 <[^>]*> ldr	a0,[07]\(at\)
 0+007c <[^>]*> lui	at,0x0
 [ 	]*7c: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+0080 <[^>]*> daddiu	at,at,[-0-9]+
+0+0080 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*80: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+0084 <[^>]*> ldl	a0,[07]\(at\)
 0+0088 <[^>]*> ldr	a0,[07]\(at\)
-0+008c <[^>]*> daddiu	at,gp,0
+0+008c <[^>]*> addiu	at,gp,0
 [ 	]*8c: [A-Z0-9_]*GPREL[A-Z0-9_]*	small_external_common
 0+0090 <[^>]*> ldl	a0,[07]\(at\)
 0+0094 <[^>]*> ldr	a0,[07]\(at\)
 0+0098 <[^>]*> lui	at,[-0-9x]+
 [ 	]*98: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+009c <[^>]*> daddiu	at,at,[-0-9]+
+0+009c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*9c: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+00a0 <[^>]*> ldl	a0,[07]\(at\)
 0+00a4 <[^>]*> ldr	a0,[07]\(at\)
-0+00a8 <[^>]*> daddiu	at,gp,[-0-9]+
+0+00a8 <[^>]*> addiu	at,gp,[-0-9]+
 [ 	]*a8: [A-Z0-9_]*GPREL[A-Z0-9_]*	.sbss.*
 0+00ac <[^>]*> ldl	a0,[07]\(at\)
 0+00b0 <[^>]*> ldr	a0,[07]\(at\)
 0+00b4 <[^>]*> lui	at,0x0
 [ 	]*b4: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+00b8 <[^>]*> daddiu	at,at,[-0-9]+
+0+00b8 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*b8: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+00bc <[^>]*> ldl	a0,[07]\(at\)
 0+00c0 <[^>]*> ldr	a0,[07]\(at\)
 0+00c4 <[^>]*> lui	at,0x0
 [ 	]*c4: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+00c8 <[^>]*> daddiu	at,at,[-0-9]+
+0+00c8 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*c8: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+00cc <[^>]*> ldl	a0,[07]\(at\)
 0+00d0 <[^>]*> ldr	a0,[07]\(at\)
-0+00d4 <[^>]*> daddiu	at,gp,1
+0+00d4 <[^>]*> addiu	at,gp,1
 [ 	]*d4: [A-Z0-9_]*GPREL[A-Z0-9_]*	small_external_data_label
 0+00d8 <[^>]*> ldl	a0,[07]\(at\)
 0+00dc <[^>]*> ldr	a0,[07]\(at\)
 0+00e0 <[^>]*> lui	at,0x0
 [ 	]*e0: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+00e4 <[^>]*> daddiu	at,at,[-0-9]+
+0+00e4 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*e4: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+00e8 <[^>]*> ldl	a0,[07]\(at\)
 0+00ec <[^>]*> ldr	a0,[07]\(at\)
-0+00f0 <[^>]*> daddiu	at,gp,1
+0+00f0 <[^>]*> addiu	at,gp,1
 [ 	]*f0: [A-Z0-9_]*GPREL[A-Z0-9_]*	small_external_common
 0+00f4 <[^>]*> ldl	a0,[07]\(at\)
 0+00f8 <[^>]*> ldr	a0,[07]\(at\)
 0+00fc <[^>]*> lui	at,0x0
 [ 	]*fc: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+0100 <[^>]*> daddiu	at,at,[-0-9]+
+0+0100 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*100: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+0104 <[^>]*> ldl	a0,[07]\(at\)
 0+0108 <[^>]*> ldr	a0,[07]\(at\)
-0+010c <[^>]*> daddiu	at,gp,[-0-9]+
+0+010c <[^>]*> addiu	at,gp,[-0-9]+
 [ 	]*10c: [A-Z0-9_]*GPREL[A-Z0-9_]*	.sbss.*
 0+0110 <[^>]*> ldl	a0,[07]\(at\)
 0+0114 <[^>]*> ldr	a0,[07]\(at\)
 0+0118 <[^>]*> lui	at,[-0-9x]+
 [ 	]*118: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+011c <[^>]*> daddiu	at,at,[-0-9]+
+0+011c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*11c: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0120 <[^>]*> ldl	a0,[07]\(at\)
 0+0124 <[^>]*> ldr	a0,[07]\(at\)
 0+0128 <[^>]*> lui	at,[-0-9x]+
 [ 	]*128: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+012c <[^>]*> daddiu	at,at,[-0-9]+
+0+012c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*12c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+0130 <[^>]*> ldl	a0,[07]\(at\)
 0+0134 <[^>]*> ldr	a0,[07]\(at\)
 0+0138 <[^>]*> lui	at,[-0-9x]+
 [ 	]*138: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_data_label
-0+013c <[^>]*> daddiu	at,at,[-0-9]+
+0+013c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*13c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_data_label
 0+0140 <[^>]*> ldl	a0,[07]\(at\)
 0+0144 <[^>]*> ldr	a0,[07]\(at\)
 0+0148 <[^>]*> lui	at,[-0-9x]+
 [ 	]*148: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+014c <[^>]*> daddiu	at,at,[-0-9]+
+0+014c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*14c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+0150 <[^>]*> ldl	a0,[07]\(at\)
 0+0154 <[^>]*> ldr	a0,[07]\(at\)
 0+0158 <[^>]*> lui	at,[-0-9x]+
 [ 	]*158: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_common
-0+015c <[^>]*> daddiu	at,at,[-0-9]+
+0+015c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*15c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_common
 0+0160 <[^>]*> ldl	a0,[07]\(at\)
 0+0164 <[^>]*> ldr	a0,[07]\(at\)
 0+0168 <[^>]*> lui	at,[-0-9x]+
 [ 	]*168: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+016c <[^>]*> daddiu	at,at,[-0-9]+
+0+016c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*16c: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+0170 <[^>]*> ldl	a0,[07]\(at\)
 0+0174 <[^>]*> ldr	a0,[07]\(at\)
 0+0178 <[^>]*> lui	at,[-0-9x]+
 [ 	]*178: [A-Z0-9_]*HI[A-Z0-9_]*	.sbss.*
-0+017c <[^>]*> daddiu	at,at,[-0-9]+
+0+017c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*17c: [A-Z0-9_]*LO[A-Z0-9_]*	.sbss.*
 0+0180 <[^>]*> ldl	a0,[07]\(at\)
 0+0184 <[^>]*> ldr	a0,[07]\(at\)
 0+0188 <[^>]*> lui	at,0x0
 [ 	]*188: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+018c <[^>]*> daddiu	at,at,[-0-9]+
+0+018c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*18c: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0190 <[^>]*> ldl	a0,[07]\(at\)
 0+0194 <[^>]*> ldr	a0,[07]\(at\)
 0+0198 <[^>]*> lui	at,0x0
 [ 	]*198: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+019c <[^>]*> daddiu	at,at,[-0-9]+
+0+019c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*19c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+01a0 <[^>]*> ldl	a0,[07]\(at\)
 0+01a4 <[^>]*> ldr	a0,[07]\(at\)
 0+01a8 <[^>]*> lui	at,0x0
 [ 	]*1a8: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_data_label
-0+01ac <[^>]*> daddiu	at,at,[-0-9]+
+0+01ac <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1ac: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_data_label
 0+01b0 <[^>]*> ldl	a0,[07]\(at\)
 0+01b4 <[^>]*> ldr	a0,[07]\(at\)
 0+01b8 <[^>]*> lui	at,0x0
 [ 	]*1b8: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+01bc <[^>]*> daddiu	at,at,[-0-9]+
+0+01bc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1bc: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+01c0 <[^>]*> ldl	a0,[07]\(at\)
 0+01c4 <[^>]*> ldr	a0,[07]\(at\)
 0+01c8 <[^>]*> lui	at,0x0
 [ 	]*1c8: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_common
-0+01cc <[^>]*> daddiu	at,at,[-0-9]+
+0+01cc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1cc: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_common
 0+01d0 <[^>]*> ldl	a0,[07]\(at\)
 0+01d4 <[^>]*> ldr	a0,[07]\(at\)
 0+01d8 <[^>]*> lui	at,0x0
 [ 	]*1d8: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+01dc <[^>]*> daddiu	at,at,[-0-9]+
+0+01dc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1dc: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+01e0 <[^>]*> ldl	a0,[07]\(at\)
 0+01e4 <[^>]*> ldr	a0,[07]\(at\)
 0+01e8 <[^>]*> lui	at,0x0
 [ 	]*1e8: [A-Z0-9_]*HI[A-Z0-9_]*	.sbss.*
-0+01ec <[^>]*> daddiu	at,at,[-0-9]+
+0+01ec <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1ec: [A-Z0-9_]*LO[A-Z0-9_]*	.sbss.*
 0+01f0 <[^>]*> ldl	a0,[07]\(at\)
 0+01f4 <[^>]*> ldr	a0,[07]\(at\)
 0+01f8 <[^>]*> lui	at,[-0-9x]+
 [ 	]*1f8: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+01fc <[^>]*> daddiu	at,at,[-0-9]+
+0+01fc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1fc: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0200 <[^>]*> ldl	a0,[07]\(at\)
 0+0204 <[^>]*> ldr	a0,[07]\(at\)
 0+0208 <[^>]*> lui	at,[-0-9x]+
 [ 	]*208: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+020c <[^>]*> daddiu	at,at,0
+0+020c <[^>]*> addiu	at,at,0
 [ 	]*20c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+0210 <[^>]*> ldl	a0,[07]\(at\)
 0+0214 <[^>]*> ldr	a0,[07]\(at\)
 0+0218 <[^>]*> lui	at,[-0-9x]+
 [ 	]*218: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_data_label
-0+021c <[^>]*> daddiu	at,at,0
+0+021c <[^>]*> addiu	at,at,0
 [ 	]*21c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_data_label
 0+0220 <[^>]*> ldl	a0,[07]\(at\)
 0+0224 <[^>]*> ldr	a0,[07]\(at\)
 0+0228 <[^>]*> lui	at,[-0-9x]+
 [ 	]*228: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+022c <[^>]*> daddiu	at,at,0
+0+022c <[^>]*> addiu	at,at,0
 [ 	]*22c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+0230 <[^>]*> ldl	a0,[07]\(at\)
 0+0234 <[^>]*> ldr	a0,[07]\(at\)
 0+0238 <[^>]*> lui	at,[-0-9x]+
 [ 	]*238: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_common
-0+023c <[^>]*> daddiu	at,at,0
+0+023c <[^>]*> addiu	at,at,0
 [ 	]*23c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_common
 0+0240 <[^>]*> ldl	a0,[07]\(at\)
 0+0244 <[^>]*> ldr	a0,[07]\(at\)
 0+0248 <[^>]*> lui	at,[-0-9x]+
 [ 	]*248: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+024c <[^>]*> daddiu	at,at,[-0-9]+
+0+024c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*24c: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+0250 <[^>]*> ldl	a0,[07]\(at\)
 0+0254 <[^>]*> ldr	a0,[07]\(at\)
 0+0258 <[^>]*> lui	at,[-0-9x]+
 [ 	]*258: [A-Z0-9_]*HI[A-Z0-9_]*	.sbss.*
-0+025c <[^>]*> daddiu	at,at,[-0-9]+
+0+025c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*25c: [A-Z0-9_]*LO[A-Z0-9_]*	.sbss.*
 0+0260 <[^>]*> ldl	a0,[07]\(at\)
 0+0264 <[^>]*> ldr	a0,[07]\(at\)
 0+0268 <[^>]*> lui	at,[-0-9x]+
 [ 	]*268: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+026c <[^>]*> daddiu	at,at,[-0-9]+
+0+026c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*26c: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0270 <[^>]*> ldl	a0,[07]\(at\)
 0+0274 <[^>]*> ldr	a0,[07]\(at\)
 0+0278 <[^>]*> lui	at,[-0-9x]+
 [ 	]*278: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+027c <[^>]*> daddiu	at,at,[-0-9]+
+0+027c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*27c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+0280 <[^>]*> ldl	a0,[07]\(at\)
 0+0284 <[^>]*> ldr	a0,[07]\(at\)
 0+0288 <[^>]*> lui	at,[-0-9x]+
 [ 	]*288: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_data_label
-0+028c <[^>]*> daddiu	at,at,[-0-9]+
+0+028c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*28c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_data_label
 0+0290 <[^>]*> ldl	a0,[07]\(at\)
 0+0294 <[^>]*> ldr	a0,[07]\(at\)
 0+0298 <[^>]*> lui	at,[-0-9x]+
 [ 	]*298: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+029c <[^>]*> daddiu	at,at,[-0-9]+
+0+029c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*29c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+02a0 <[^>]*> ldl	a0,[07]\(at\)
 0+02a4 <[^>]*> ldr	a0,[07]\(at\)
 0+02a8 <[^>]*> lui	at,[-0-9x]+
 [ 	]*2a8: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_common
-0+02ac <[^>]*> daddiu	at,at,[-0-9]+
+0+02ac <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*2ac: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_common
 0+02b0 <[^>]*> ldl	a0,[07]\(at\)
 0+02b4 <[^>]*> ldr	a0,[07]\(at\)
 0+02b8 <[^>]*> lui	at,[-0-9x]+
 [ 	]*2b8: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+02bc <[^>]*> daddiu	at,at,[-0-9]+
+0+02bc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*2bc: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+02c0 <[^>]*> ldl	a0,[07]\(at\)
 0+02c4 <[^>]*> ldr	a0,[07]\(at\)
 0+02c8 <[^>]*> lui	at,[-0-9x]+
 [ 	]*2c8: [A-Z0-9_]*HI[A-Z0-9_]*	.sbss.*
-0+02cc <[^>]*> daddiu	at,at,[-0-9]+
+0+02cc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*2cc: [A-Z0-9_]*LO[A-Z0-9_]*	.sbss.*
 0+02d0 <[^>]*> ldl	a0,[07]\(at\)
 0+02d4 <[^>]*> ldr	a0,[07]\(at\)
diff -BurpNX /bigdisk/src/binutils-exclude src-orig/gas/testsuite/gas/mips/usd.d src/gas/testsuite/gas/mips/usd.d
--- src-orig/gas/testsuite/gas/mips/usd.d	Mon Jul  2 14:34:18 2001
+++ src/gas/testsuite/gas/mips/usd.d	Tue Aug 21 19:20:35 2001
@@ -29,241 +29,241 @@ Disassembly of section .text:
 0+004c <[^>]*> sdr	a0,[-0-9]+\(a1\)
 0+0050 <[^>]*> lui	at,[-0-9x]+
 [ 	]*50: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+0054 <[^>]*> daddiu	at,at,[-0-9]+
+0+0054 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*54: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0058 <[^>]*> sdl	a0,[07]\(at\)
 0+005c <[^>]*> sdr	a0,[07]\(at\)
 0+0060 <[^>]*> lui	at,[-0-9x]+
 [ 	]*60: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+0064 <[^>]*> daddiu	at,at,[-0-9]+
+0+0064 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*64: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+0068 <[^>]*> sdl	a0,[07]\(at\)
 0+006c <[^>]*> sdr	a0,[07]\(at\)
-0+0070 <[^>]*> daddiu	at,gp,0
+0+0070 <[^>]*> addiu	at,gp,0
 [ 	]*70: [A-Z0-9_]*GPREL[A-Z0-9_]*	small_external_data_label
 0+0074 <[^>]*> sdl	a0,[07]\(at\)
 0+0078 <[^>]*> sdr	a0,[07]\(at\)
 0+007c <[^>]*> lui	at,0x0
 [ 	]*7c: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+0080 <[^>]*> daddiu	at,at,[-0-9]+
+0+0080 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*80: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+0084 <[^>]*> sdl	a0,[07]\(at\)
 0+0088 <[^>]*> sdr	a0,[07]\(at\)
-0+008c <[^>]*> daddiu	at,gp,0
+0+008c <[^>]*> addiu	at,gp,0
 [ 	]*8c: [A-Z0-9_]*GPREL[A-Z0-9_]*	small_external_common
 0+0090 <[^>]*> sdl	a0,[07]\(at\)
 0+0094 <[^>]*> sdr	a0,[07]\(at\)
 0+0098 <[^>]*> lui	at,[-0-9x]+
 [ 	]*98: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+009c <[^>]*> daddiu	at,at,[-0-9]+
+0+009c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*9c: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+00a0 <[^>]*> sdl	a0,[07]\(at\)
 0+00a4 <[^>]*> sdr	a0,[07]\(at\)
-0+00a8 <[^>]*> daddiu	at,gp,[-0-9]+
+0+00a8 <[^>]*> addiu	at,gp,[-0-9]+
 [ 	]*a8: [A-Z0-9_]*GPREL[A-Z0-9_]*	.sbss.*
 0+00ac <[^>]*> sdl	a0,[07]\(at\)
 0+00b0 <[^>]*> sdr	a0,[07]\(at\)
 0+00b4 <[^>]*> lui	at,0x0
 [ 	]*b4: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+00b8 <[^>]*> daddiu	at,at,[-0-9]+
+0+00b8 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*b8: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+00bc <[^>]*> sdl	a0,[07]\(at\)
 0+00c0 <[^>]*> sdr	a0,[07]\(at\)
 0+00c4 <[^>]*> lui	at,0x0
 [ 	]*c4: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+00c8 <[^>]*> daddiu	at,at,[-0-9]+
+0+00c8 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*c8: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+00cc <[^>]*> sdl	a0,[07]\(at\)
 0+00d0 <[^>]*> sdr	a0,[07]\(at\)
-0+00d4 <[^>]*> daddiu	at,gp,1
+0+00d4 <[^>]*> addiu	at,gp,1
 [ 	]*d4: [A-Z0-9_]*GPREL[A-Z0-9_]*	small_external_data_label
 0+00d8 <[^>]*> sdl	a0,[07]\(at\)
 0+00dc <[^>]*> sdr	a0,[07]\(at\)
 0+00e0 <[^>]*> lui	at,0x0
 [ 	]*e0: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+00e4 <[^>]*> daddiu	at,at,[-0-9]+
+0+00e4 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*e4: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+00e8 <[^>]*> sdl	a0,[07]\(at\)
 0+00ec <[^>]*> sdr	a0,[07]\(at\)
-0+00f0 <[^>]*> daddiu	at,gp,1
+0+00f0 <[^>]*> addiu	at,gp,1
 [ 	]*f0: [A-Z0-9_]*GPREL[A-Z0-9_]*	small_external_common
 0+00f4 <[^>]*> sdl	a0,[07]\(at\)
 0+00f8 <[^>]*> sdr	a0,[07]\(at\)
 0+00fc <[^>]*> lui	at,0x0
 [ 	]*fc: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+0100 <[^>]*> daddiu	at,at,[-0-9]+
+0+0100 <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*100: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+0104 <[^>]*> sdl	a0,[07]\(at\)
 0+0108 <[^>]*> sdr	a0,[07]\(at\)
-0+010c <[^>]*> daddiu	at,gp,[-0-9]+
+0+010c <[^>]*> addiu	at,gp,[-0-9]+
 [ 	]*10c: [A-Z0-9_]*GPREL[A-Z0-9_]*	.sbss.*
 0+0110 <[^>]*> sdl	a0,[07]\(at\)
 0+0114 <[^>]*> sdr	a0,[07]\(at\)
 0+0118 <[^>]*> lui	at,[-0-9x]+
 [ 	]*118: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+011c <[^>]*> daddiu	at,at,[-0-9]+
+0+011c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*11c: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0120 <[^>]*> sdl	a0,[07]\(at\)
 0+0124 <[^>]*> sdr	a0,[07]\(at\)
 0+0128 <[^>]*> lui	at,[-0-9x]+
 [ 	]*128: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+012c <[^>]*> daddiu	at,at,[-0-9]+
+0+012c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*12c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+0130 <[^>]*> sdl	a0,[07]\(at\)
 0+0134 <[^>]*> sdr	a0,[07]\(at\)
 0+0138 <[^>]*> lui	at,[-0-9x]+
 [ 	]*138: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_data_label
-0+013c <[^>]*> daddiu	at,at,[-0-9]+
+0+013c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*13c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_data_label
 0+0140 <[^>]*> sdl	a0,[07]\(at\)
 0+0144 <[^>]*> sdr	a0,[07]\(at\)
 0+0148 <[^>]*> lui	at,[-0-9x]+
 [ 	]*148: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+014c <[^>]*> daddiu	at,at,[-0-9]+
+0+014c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*14c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+0150 <[^>]*> sdl	a0,[07]\(at\)
 0+0154 <[^>]*> sdr	a0,[07]\(at\)
 0+0158 <[^>]*> lui	at,[-0-9x]+
 [ 	]*158: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_common
-0+015c <[^>]*> daddiu	at,at,[-0-9]+
+0+015c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*15c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_common
 0+0160 <[^>]*> sdl	a0,[07]\(at\)
 0+0164 <[^>]*> sdr	a0,[07]\(at\)
 0+0168 <[^>]*> lui	at,[-0-9x]+
 [ 	]*168: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+016c <[^>]*> daddiu	at,at,[-0-9]+
+0+016c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*16c: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+0170 <[^>]*> sdl	a0,[07]\(at\)
 0+0174 <[^>]*> sdr	a0,[07]\(at\)
 0+0178 <[^>]*> lui	at,[-0-9x]+
 [ 	]*178: [A-Z0-9_]*HI[A-Z0-9_]*	.sbss.*
-0+017c <[^>]*> daddiu	at,at,[-0-9]+
+0+017c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*17c: [A-Z0-9_]*LO[A-Z0-9_]*	.sbss.*
 0+0180 <[^>]*> sdl	a0,[07]\(at\)
 0+0184 <[^>]*> sdr	a0,[07]\(at\)
 0+0188 <[^>]*> lui	at,0x0
 [ 	]*188: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+018c <[^>]*> daddiu	at,at,[-0-9]+
+0+018c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*18c: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0190 <[^>]*> sdl	a0,[07]\(at\)
 0+0194 <[^>]*> sdr	a0,[07]\(at\)
 0+0198 <[^>]*> lui	at,0x0
 [ 	]*198: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+019c <[^>]*> daddiu	at,at,[-0-9]+
+0+019c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*19c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+01a0 <[^>]*> sdl	a0,[07]\(at\)
 0+01a4 <[^>]*> sdr	a0,[07]\(at\)
 0+01a8 <[^>]*> lui	at,0x0
 [ 	]*1a8: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_data_label
-0+01ac <[^>]*> daddiu	at,at,[-0-9]+
+0+01ac <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1ac: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_data_label
 0+01b0 <[^>]*> sdl	a0,[07]\(at\)
 0+01b4 <[^>]*> sdr	a0,[07]\(at\)
 0+01b8 <[^>]*> lui	at,0x0
 [ 	]*1b8: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+01bc <[^>]*> daddiu	at,at,[-0-9]+
+0+01bc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1bc: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+01c0 <[^>]*> sdl	a0,[07]\(at\)
 0+01c4 <[^>]*> sdr	a0,[07]\(at\)
 0+01c8 <[^>]*> lui	at,0x0
 [ 	]*1c8: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_common
-0+01cc <[^>]*> daddiu	at,at,[-0-9]+
+0+01cc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1cc: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_common
 0+01d0 <[^>]*> sdl	a0,[07]\(at\)
 0+01d4 <[^>]*> sdr	a0,[07]\(at\)
 0+01d8 <[^>]*> lui	at,0x0
 [ 	]*1d8: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+01dc <[^>]*> daddiu	at,at,[-0-9]+
+0+01dc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1dc: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+01e0 <[^>]*> sdl	a0,[07]\(at\)
 0+01e4 <[^>]*> sdr	a0,[07]\(at\)
 0+01e8 <[^>]*> lui	at,0x0
 [ 	]*1e8: [A-Z0-9_]*HI[A-Z0-9_]*	.sbss.*
-0+01ec <[^>]*> daddiu	at,at,[-0-9]+
+0+01ec <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1ec: [A-Z0-9_]*LO[A-Z0-9_]*	.sbss.*
 0+01f0 <[^>]*> sdl	a0,[07]\(at\)
 0+01f4 <[^>]*> sdr	a0,[07]\(at\)
 0+01f8 <[^>]*> lui	at,[-0-9x]+
 [ 	]*1f8: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+01fc <[^>]*> daddiu	at,at,[-0-9]+
+0+01fc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*1fc: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0200 <[^>]*> sdl	a0,[07]\(at\)
 0+0204 <[^>]*> sdr	a0,[07]\(at\)
 0+0208 <[^>]*> lui	at,[-0-9x]+
 [ 	]*208: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+020c <[^>]*> daddiu	at,at,0
+0+020c <[^>]*> addiu	at,at,0
 [ 	]*20c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+0210 <[^>]*> sdl	a0,[07]\(at\)
 0+0214 <[^>]*> sdr	a0,[07]\(at\)
 0+0218 <[^>]*> lui	at,[-0-9x]+
 [ 	]*218: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_data_label
-0+021c <[^>]*> daddiu	at,at,0
+0+021c <[^>]*> addiu	at,at,0
 [ 	]*21c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_data_label
 0+0220 <[^>]*> sdl	a0,[07]\(at\)
 0+0224 <[^>]*> sdr	a0,[07]\(at\)
 0+0228 <[^>]*> lui	at,[-0-9x]+
 [ 	]*228: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+022c <[^>]*> daddiu	at,at,0
+0+022c <[^>]*> addiu	at,at,0
 [ 	]*22c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+0230 <[^>]*> sdl	a0,[07]\(at\)
 0+0234 <[^>]*> sdr	a0,[07]\(at\)
 0+0238 <[^>]*> lui	at,[-0-9x]+
 [ 	]*238: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_common
-0+023c <[^>]*> daddiu	at,at,0
+0+023c <[^>]*> addiu	at,at,0
 [ 	]*23c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_common
 0+0240 <[^>]*> sdl	a0,[07]\(at\)
 0+0244 <[^>]*> sdr	a0,[07]\(at\)
 0+0248 <[^>]*> lui	at,[-0-9x]+
 [ 	]*248: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+024c <[^>]*> daddiu	at,at,[-0-9]+
+0+024c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*24c: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+0250 <[^>]*> sdl	a0,[07]\(at\)
 0+0254 <[^>]*> sdr	a0,[07]\(at\)
 0+0258 <[^>]*> lui	at,[-0-9x]+
 [ 	]*258: [A-Z0-9_]*HI[A-Z0-9_]*	.sbss.*
-0+025c <[^>]*> daddiu	at,at,[-0-9]+
+0+025c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*25c: [A-Z0-9_]*LO[A-Z0-9_]*	.sbss.*
 0+0260 <[^>]*> sdl	a0,[07]\(at\)
 0+0264 <[^>]*> sdr	a0,[07]\(at\)
 0+0268 <[^>]*> lui	at,[-0-9x]+
 [ 	]*268: [A-Z0-9_]*HI[A-Z0-9_]*	.data.*
-0+026c <[^>]*> daddiu	at,at,[-0-9]+
+0+026c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*26c: [A-Z0-9_]*LO[A-Z0-9_]*	.data.*
 0+0270 <[^>]*> sdl	a0,[07]\(at\)
 0+0274 <[^>]*> sdr	a0,[07]\(at\)
 0+0278 <[^>]*> lui	at,[-0-9x]+
 [ 	]*278: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_data_label
-0+027c <[^>]*> daddiu	at,at,[-0-9]+
+0+027c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*27c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_data_label
 0+0280 <[^>]*> sdl	a0,[07]\(at\)
 0+0284 <[^>]*> sdr	a0,[07]\(at\)
 0+0288 <[^>]*> lui	at,[-0-9x]+
 [ 	]*288: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_data_label
-0+028c <[^>]*> daddiu	at,at,[-0-9]+
+0+028c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*28c: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_data_label
 0+0290 <[^>]*> sdl	a0,[07]\(at\)
 0+0294 <[^>]*> sdr	a0,[07]\(at\)
 0+0298 <[^>]*> lui	at,[-0-9x]+
 [ 	]*298: [A-Z0-9_]*HI[A-Z0-9_]*	big_external_common
-0+029c <[^>]*> daddiu	at,at,[-0-9]+
+0+029c <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*29c: [A-Z0-9_]*LO[A-Z0-9_]*	big_external_common
 0+02a0 <[^>]*> sdl	a0,[07]\(at\)
 0+02a4 <[^>]*> sdr	a0,[07]\(at\)
 0+02a8 <[^>]*> lui	at,[-0-9x]+
 [ 	]*2a8: [A-Z0-9_]*HI[A-Z0-9_]*	small_external_common
-0+02ac <[^>]*> daddiu	at,at,[-0-9]+
+0+02ac <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*2ac: [A-Z0-9_]*LO[A-Z0-9_]*	small_external_common
 0+02b0 <[^>]*> sdl	a0,[07]\(at\)
 0+02b4 <[^>]*> sdr	a0,[07]\(at\)
 0+02b8 <[^>]*> lui	at,[-0-9x]+
 [ 	]*2b8: [A-Z0-9_]*HI[A-Z0-9_]*	.bss.*
-0+02bc <[^>]*> daddiu	at,at,[-0-9]+
+0+02bc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*2bc: [A-Z0-9_]*LO[A-Z0-9_]*	.bss.*
 0+02c0 <[^>]*> sdl	a0,[07]\(at\)
 0+02c4 <[^>]*> sdr	a0,[07]\(at\)
 0+02c8 <[^>]*> lui	at,[-0-9x]+
 [ 	]*2c8: [A-Z0-9_]*HI[A-Z0-9_]*	.sbss.*
-0+02cc <[^>]*> daddiu	at,at,[-0-9]+
+0+02cc <[^>]*> addiu	at,at,[-0-9]+
 [ 	]*2cc: [A-Z0-9_]*LO[A-Z0-9_]*	.sbss.*
 0+02d0 <[^>]*> sdl	a0,[07]\(at\)
 0+02d4 <[^>]*> sdr	a0,[07]\(at\)

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-06 20:53                               ` Thiemo Seufer
  2001-09-06 21:09                                 ` Thiemo Seufer
@ 2001-09-06 21:12                                 ` Thiemo Seufer
  2001-09-06 22:38                                   ` H . J . Lu
  2001-09-07  4:10                                 ` Richard Sandiford
  2 siblings, 1 reply; 62+ messages in thread
From: Thiemo Seufer @ 2001-09-06 21:12 UTC (permalink / raw)
  To: binutils

Thiemo Seufer wrote:
[snip]
> 2001-09-07  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
> 
> 	/gas/ChangeLog
> 	* tc_mips.c
> 	(macro): Fix address load instruction.
> 
> 	/gas/testsuite/ChangeLog
> 	* gas/mips/ld.d: Use 32bit instructions for addresses.
> 	* gas/mips/mips-gp64-fp32-pic.d: Likewise.
> 	* gas/mips/mips-gp64-fp32-pic.s: Likewise.
> 	* gas/mips/mips-gp64-fp32.d: Likewise.
> 	* gas/mips/mips-gp64-fp32.s: Likewise.
> 	* gas/mips/mips-gp64-fp64-pic.d: Likewise.
> 	* gas/mips/mips-gp64-fp64-pic.s: Likewise.
> 	* gas/mips/mips-gp64-fp64.d: Likewise.
> 	* gas/mips/mips-gp64-fp64.s: Likewise.
> 	* gas/mips/elempic.d: Likewise.
> 	* gas/mips/uld.d: Likewise.
> 	* gas/mips/usd.d: Likewise.

Of course the ChangeLog should read

 	/gas/ChangeLog
 	* tc_mips.c
 	(macro): Let address load expansion depend on register width instead
	of it's name.
 
 	/gas/testsuite/ChangeLog
 	* gas/mips/ld.d: Use 32bit instructions for addresses.


Thiemo

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-06 21:12                                 ` Thiemo Seufer
@ 2001-09-06 22:38                                   ` H . J . Lu
  2001-09-06 23:11                                     ` Thiemo Seufer
  0 siblings, 1 reply; 62+ messages in thread
From: H . J . Lu @ 2001-09-06 22:38 UTC (permalink / raw)
  To: Thiemo Seufer; +Cc: binutils

On Fri, Sep 07, 2001 at 06:12:41AM +0200, Thiemo Seufer wrote:
> 
> Of course the ChangeLog should read
> 
>  	/gas/ChangeLog
>  	* tc_mips.c

Hi Thiemo,

You put many tc_mips.c entries in ChangeLog. But there is no tc_mips.c
anywhere. It should be config/tc-mips.c. Could you please fix them?

Thanks.


H.J.

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-06 22:38                                   ` H . J . Lu
@ 2001-09-06 23:11                                     ` Thiemo Seufer
  0 siblings, 0 replies; 62+ messages in thread
From: Thiemo Seufer @ 2001-09-06 23:11 UTC (permalink / raw)
  To: binutils

H . J . Lu wrote:
[snip]
> You put many tc_mips.c entries in ChangeLog. But there is no tc_mips.c
> anywhere. It should be config/tc-mips.c. Could you please fix them?

Done. Thanks.


Thiemo

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-06 20:53                               ` Thiemo Seufer
  2001-09-06 21:09                                 ` Thiemo Seufer
  2001-09-06 21:12                                 ` Thiemo Seufer
@ 2001-09-07  4:10                                 ` Richard Sandiford
  2001-09-07  6:22                                   ` Thiemo Seufer
  2 siblings, 1 reply; 62+ messages in thread
From: Richard Sandiford @ 2001-09-07  4:10 UTC (permalink / raw)
  To: Thiemo Seufer; +Cc: binutils

Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de> writes:

> Richard Sandiford wrote:
> [snip]
> > AFAIK, R_MIPS_64 won't be used unless you have 64-bit addresses (and
> > hence 64-bit registers), or if you have an explicit pseudo-op like
> > .8byte.  o32 binaries wouldn't be using either of those things anyway,
> > would they?
> 
> That's right, but you can't tell if it is actually o32 conformant
> by looking at the ELF header. There is no flag which says
> "Warning! This object does not conform to any established ABI".
> It would be nice to have one.

Well, there's the O32 flag, which is only set if -mabi=32 is given.
That bit does guarantee register and address size, just not the lack of
64-bit relocs generated by .8byte and the like.  Maybe GAS should warn
about that?

> > I thought the consensus some time ago was that o32 implied 32-bit
> > registers, and therefore 32-bit addresses.  The HAVE_??BIT_ macros are
> > already set up like that as long as you specify -mabi=32 on the command
> > line.
> 
> That's all fine for 32bit, but I needed a way to check if 64bit
> addresses can be used generally (e.g. for dli). Something like
> ! HAVE_32BIT_ADDRESSES won't do that, because full 64bit support
> needs a 64bit object format.

But *limited* 64-bit support is available with elf32 as things stand...

> Having a HAVE_64BIT_ADDRESSES macro which is _not_ the inverse of
> HAVE_32BIT_ADDRESSES is ugly.

...so I'm still unsure why that's necessary.

> I also found no reason why there is made use of 64bit instructions
> like daddiu for a 32bit load. It makes the code look different from
> o32 while doing the same.

But if the code was written or compiled with 64-bit addresses in mind,
it seems natural enough to use daddu in pointer arithmetic.  Does it do
any harm?  The only reason I can see for making HAVE_32BIT_ADDRESSES any
stricter is if there's a situation in which code written for 32-bit
addresses can't be assembled that way as things stand, presumably
because GAS's command-line options are too inflexible.

> This was the one part of my patch. The other was to change (d)la to
> chose it's expansion in dependency of the address model instead of
> the insn name. That's the way the SGI assembler behaves, and this
> is the useful behaviour for ABI conformance. For 64bit code in an
> 32bit object file this may have side effects (the usability of
> R_MIPS_64 is not affected).

Right.  For the record, I'm only talking about the other bit (the big
one).

Richard

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-07  4:10                                 ` Richard Sandiford
@ 2001-09-07  6:22                                   ` Thiemo Seufer
  2001-09-07  7:02                                     ` Richard Sandiford
  0 siblings, 1 reply; 62+ messages in thread
From: Thiemo Seufer @ 2001-09-07  6:22 UTC (permalink / raw)
  To: binutils

Richard Sandiford wrote:
[snip]
> > That's right, but you can't tell if it is actually o32 conformant
> > by looking at the ELF header. There is no flag which says
> > "Warning! This object does not conform to any established ABI".
> > It would be nice to have one.
> 
> Well, there's the O32 flag, which is only set if -mabi=32 is given.
> That bit does guarantee register and address size, just not the lack of
> 64-bit relocs generated by .8byte and the like.  Maybe GAS should warn
> about that?

How could it do that? The o32 ABI does _not_ specify this flag,
a file without any ABI flags set is a valid o32 file. I can't
see what the use of the O32 header flag could be.

[snip]
> > That's all fine for 32bit, but I needed a way to check if 64bit
> > addresses can be used generally (e.g. for dli). Something like
> > ! HAVE_32BIT_ADDRESSES won't do that, because full 64bit support
> > needs a 64bit object format.
> 
> But *limited* 64-bit support is available with elf32 as things stand...
> 
> > Having a HAVE_64BIT_ADDRESSES macro which is _not_ the inverse of
> > HAVE_32BIT_ADDRESSES is ugly.
> 
> ...so I'm still unsure why that's necessary.

I want to have full 64bit support, and it's conceptionally the right
thing to keep the variants of 64bit support at a minimum. AFAICS my
patch doesn't break the limited 64bit support.

> > I also found no reason why there is made use of 64bit instructions
> > like daddiu for a 32bit load. It makes the code look different from
> > o32 while doing the same.
> 
> But if the code was written or compiled with 64-bit addresses in mind,
> it seems natural enough to use daddu in pointer arithmetic.  Does it do
> any harm?

Yes, it inflates the number of variants without need.

> The only reason I can see for making HAVE_32BIT_ADDRESSES any
> stricter is if there's a situation in which code written for 32-bit
> addresses can't be assembled that way as things stand, presumably
> because GAS's command-line options are too inflexible.

Then I would need to distinguish between (! HAVE_32BIT_ADDRESSES)
and HAVE_64BIT_ADDRESSES, building a trap for everyone else.
MIPS gas is really complicated enough with ISA, ABI and object
formats.


Thiemo

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-07  6:22                                   ` Thiemo Seufer
@ 2001-09-07  7:02                                     ` Richard Sandiford
  2001-09-07  8:11                                       ` Thiemo Seufer
  0 siblings, 1 reply; 62+ messages in thread
From: Richard Sandiford @ 2001-09-07  7:02 UTC (permalink / raw)
  To: Thiemo Seufer; +Cc: binutils

Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de> writes:
> How could it do that? The o32 ABI does _not_ specify this flag,
> a file without any ABI flags set is a valid o32 file. I can't
> see what the use of the O32 header flag could be.

Ok, that hadn't twigged, sorry!

So, if I've understood you correctly, your take seems to be:

- O32 doesn't define an ABI bit for ELF, so every ELF file without
  an ABI flag set should be compatible with O32.

Whereas mine is:

- O32 doesn't define an ABI bit for ELF, so users dosn't have that
  safety net if they use the wrong options.  They need to remember
  to use the appropriate command-line switches, like -mabi=32.

  Fleshing that out a bit, I think:

  GAS has historically supported all sorts of wierd and wonderful
  combinations that don't have any representation in the ELF header
  flags.  And for which no ABI flags will be set.  I don't think that's
  reason enough not to allow them.  GAS should generate whatever code
  the command line tells it to, whether or not those options can be
  determined from the output file.

> [snip]
> I want to have full 64bit support, and it's conceptionally the right
> thing to keep the variants of 64bit support at a minimum.

Which is a great thing.  But people should be able to do things the old
way too!

> AFAICS my patch doesn't break the limited 64bit support.

Like you said in your previous mail, it means that $gp is now assumed to
be a 32-bit rather than 64-bit value.  There might be dynamic loaders
out there that handle the R_MIPS_64 extension, which could replace them
with genuine 64-bit (as opposed to sign-extended 32-bit) addresses.  I
don't know if either of those matter in practice.  But...

> > > I also found no reason why there is made use of 64bit instructions
> > > like daddiu for a 32bit load. It makes the code look different from
> > > o32 while doing the same.
> > 
> > But if the code was written or compiled with 64-bit addresses in mind,
> > it seems natural enough to use daddu in pointer arithmetic.  Does it do
> > any harm?
> 
> Yes, it inflates the number of variants without need.

...I really don't see why maintaining the old variant is a problem.  All
the main part of your patch did was change the definition of the
HAVE_32BIT_ADDRESSES macro, it didn't really seem to simplify the code
as such.

> > The only reason I can see for making HAVE_32BIT_ADDRESSES any
> > stricter is if there's a situation in which code written for 32-bit
> > addresses can't be assembled that way as things stand, presumably
> > because GAS's command-line options are too inflexible.
> 
> Then I would need to distinguish between (! HAVE_32BIT_ADDRESSES)
> and HAVE_64BIT_ADDRESSES, building a trap for everyone else.
> MIPS gas is really complicated enough with ISA, ABI and object
> formats.

I still don't see why you need to do that, sorry!  Sometimes these things
take a while to sink in.  In what situation would the two be different?
Like you say, they should be inverses.

Richard

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-07  7:02                                     ` Richard Sandiford
@ 2001-09-07  8:11                                       ` Thiemo Seufer
  2001-09-07  9:20                                         ` Richard Sandiford
  0 siblings, 1 reply; 62+ messages in thread
From: Thiemo Seufer @ 2001-09-07  8:11 UTC (permalink / raw)
  To: binutils

Richard Sandiford wrote:
> Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de> writes:
> > How could it do that? The o32 ABI does _not_ specify this flag,
> > a file without any ABI flags set is a valid o32 file. I can't
> > see what the use of the O32 header flag could be.
> 
> Ok, that hadn't twigged, sorry!
> 
> So, if I've understood you correctly, your take seems to be:
> 
> - O32 doesn't define an ABI bit for ELF, so every ELF file without
>   an ABI flag set should be compatible with O32.

Not exactly. Most tools will _regard_ it as o32, even if it isn't.

> Whereas mine is:
> 
> - O32 doesn't define an ABI bit for ELF, so users dosn't have that
>   safety net if they use the wrong options.  They need to remember
>   to use the appropriate command-line switches, like -mabi=32.

ABI header flags were invented for remembering it. It would be nice
if the linker had a chance to find out what the file actually is.

>   Fleshing that out a bit, I think:
> 
>   GAS has historically supported all sorts of wierd and wonderful
>   combinations that don't have any representation in the ELF header
>   flags.  And for which no ABI flags will be set.  I don't think that's
>   reason enough not to allow them.  GAS should generate whatever code
>   the command line tells it to, whether or not those options can be
>   determined from the output file.

One NO_ABI_FLAG as a catchall would be enough to let at least the
GNU tools know what the file is _not_.

[snip]
> > AFAICS my patch doesn't break the limited 64bit support.
> 
> Like you said in your previous mail, it means that $gp is now assumed to
> be a 32-bit rather than 64-bit value.

This is always assumed for everything loaded in 32bit address space.

> There might be dynamic loaders
> out there that handle the R_MIPS_64 extension, which could replace them
> with genuine 64-bit (as opposed to sign-extended 32-bit) addresses.

They can't, because R_MIPS_64 holds only 32bit in this case.

[snip]
> > Yes, it inflates the number of variants without need.
> 
> ...I really don't see why maintaining the old variant is a problem.  All
> the main part of your patch did was change the definition of the
> HAVE_32BIT_ADDRESSES macro, it didn't really seem to simplify the code
> as such.

It didn't increase complexity while providing all what I need
for full 64bit support. That's the advantage over a
32BIT -- HALF_64BIT -- FULL_64BIT approach.

[snip]
> I still don't see why you need to do that, sorry!  Sometimes these things
> take a while to sink in.  In what situation would the two be different?
> Like you say, they should be inverses.

Full 64bit support requires a 64bit object format to work, half
64bit support doesn't have one and has it's code in 32bit space.
This means for e.g. "dli" a expansion to

	lui	$a, %highest(sym)
	lui	$b, %hi(sym)
	daddiu	$a, %higher(sym)
	daddiu	$b, %lo(sym)
	dsll32	$a, 0
	daddu	$a, $a, $b

for 64bit addresses, while 32bit addresses should use

	lui	$a, %hi(sym)
	addiu	$a, %lo(sym)

for performance and code size. The half 64bit version currently
uses

	lui	$a, %hi(sym)
	daddiu	$a, %lo(sym)

which does exactly the same but pretends to use 64bit addresses.
I hope it got clearer now.


Thiemo

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-07  8:11                                       ` Thiemo Seufer
@ 2001-09-07  9:20                                         ` Richard Sandiford
  2001-09-07  9:49                                           ` Thiemo Seufer
  0 siblings, 1 reply; 62+ messages in thread
From: Richard Sandiford @ 2001-09-07  9:20 UTC (permalink / raw)
  To: Thiemo Seufer; +Cc: binutils

Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de> writes:

> > - O32 doesn't define an ABI bit for ELF, so every ELF file without
> >   an ABI flag set should be compatible with O32.
> 
> Not exactly. Most tools will _regard_ it as o32, even if it isn't.

OK.  Even so, my answer's the same.

> Full 64bit support requires a 64bit object format to work, half
> 64bit support doesn't have one and has it's code in 32bit space.
> This means for e.g. "dli" a expansion to
> 
> 	lui	$a, %highest(sym)
> 	lui	$b, %hi(sym)
> 	daddiu	$a, %higher(sym)
> 	daddiu	$b, %lo(sym)
> 	dsll32	$a, 0
> 	daddu	$a, $a, $b
> 
> for 64bit addresses, while 32bit addresses should use
> 
> 	lui	$a, %hi(sym)
> 	addiu	$a, %lo(sym)
> 
> for performance and code size. The half 64bit version currently
> uses
> 
> 	lui	$a, %hi(sym)
> 	daddiu	$a, %lo(sym)
> 
> which does exactly the same but pretends to use 64bit addresses.
> I hope it got clearer now.

Yes, that makes things clearer, thanks.  In that case I'd personally
vote for your idea of making the new expansion depend on another macro.
Not HAVE_64BIT_ADDRESSES, since that (if ever used) really ought to be
an inverse of HAVE_32BIT_ADDRESSES.  But HAVE_64BIT_OBJECT_FILE, or
whatever.

Anyway, I think I finally understand the issue.  Everyone else involved
probably understood them ages ago, so sorry folks.  I think there is a
policy decision to be made here, though, it isn't just your run-of-the
mill "fix".

Richard

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-07  9:20                                         ` Richard Sandiford
@ 2001-09-07  9:49                                           ` Thiemo Seufer
  0 siblings, 0 replies; 62+ messages in thread
From: Thiemo Seufer @ 2001-09-07  9:49 UTC (permalink / raw)
  To: binutils

Richard Sandiford wrote:
[snip]
> Yes, that makes things clearer, thanks.  In that case I'd personally
> vote for your idea of making the new expansion depend on another macro.
> Not HAVE_64BIT_ADDRESSES, since that (if ever used) really ought to be

For me, HAVE_64BIT_ADDRESSES sounds to enable 64bit adressing,
including proper macro expansion. It would be a misnomer for
32bit expansion.

> an inverse of HAVE_32BIT_ADDRESSES.  But HAVE_64BIT_OBJECT_FILE, or
> whatever.
>
> Anyway, I think I finally understand the issue.  Everyone else involved
> probably understood them ages ago, so sorry folks.  I think there is a
> policy decision to be made here, though, it isn't just your run-of-the
> mill "fix".

IMHO it's a fix as long as nobody can tell me how it _might_ make
a difference in code execution.


Thiemo

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-06 11:39                             ` cgd
  2001-09-06 11:40                               ` cgd
@ 2001-09-08 12:03                               ` Andrew Cagney
  2001-09-08 16:38                                 ` Thiemo Seufer
  1 sibling, 1 reply; 62+ messages in thread
From: Andrew Cagney @ 2001-09-08 12:03 UTC (permalink / raw)
  To: cgd; +Cc: H . J . Lu, ica2_ts, binutils

regarding o64, gdb expects, in gdb/mips-tdep.c:mips_gdbarch_init(), to 
see MIPS_ABI_O64 in the flags.  is that being set?

andrew

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-08 12:03                               ` Andrew Cagney
@ 2001-09-08 16:38                                 ` Thiemo Seufer
  2001-09-08 16:56                                   ` Thiemo Seufer
  0 siblings, 1 reply; 62+ messages in thread
From: Thiemo Seufer @ 2001-09-08 16:38 UTC (permalink / raw)
  To: binutils

Andrew Cagney wrote:
> regarding o64, gdb expects, in gdb/mips-tdep.c:mips_gdbarch_init(), to 
> see MIPS_ABI_O64 in the flags.  is that being set?

Yes. The header flag is the only thing caused by -mabi=o64 in gas.


Thiemo

^ permalink raw reply	[flat|nested] 62+ messages in thread

* Re: [PATCH] Fix distinction of 32/64bit addresses in MIPS gas
  2001-09-08 16:38                                 ` Thiemo Seufer
@ 2001-09-08 16:56                                   ` Thiemo Seufer
  0 siblings, 0 replies; 62+ messages in thread
From: Thiemo Seufer @ 2001-09-08 16:56 UTC (permalink / raw)
  To: binutils

Thiemo Seufer wrote:
> Andrew Cagney wrote:
> > regarding o64, gdb expects, in gdb/mips-tdep.c:mips_gdbarch_init(), to 
> > see MIPS_ABI_O64 in the flags.  is that being set?
> 
> Yes. The header flag is the only thing caused by -mabi=o64 in gas.

Ah, I didn't realize you referred to the -mlong64 trick to get
64bit code. AFAICS the o64 header flag is not set in this case.


Thiemo

^ permalink raw reply	[flat|nested] 62+ messages in thread

end of thread, other threads:[~2001-09-08 16:56 UTC | newest]

Thread overview: 62+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-08-24 18:26 [PATCH] Fix distinction of 32/64bit addresses in MIPS gas Thiemo Seufer
2001-08-31  8:02 ` Richard Sandiford
2001-08-31  8:28   ` H . J . Lu
2001-08-31  9:17   ` Thiemo Seufer
2001-08-31  9:53     ` Geoff Keating
2001-08-31 10:31       ` Thiemo Seufer
     [not found]         ` <mailpost.999279120.2469@postal.sibyte.com>
2001-08-31 10:37           ` cgd
2001-08-31 11:46             ` Thiemo Seufer
2001-08-31 11:49               ` Ian Lance Taylor
2001-08-31 11:50               ` Ian Lance Taylor
     [not found]               ` <mailpost.999283589.5294@postal.sibyte.com>
2001-08-31 12:41                 ` cgd
2001-08-31 14:31                   ` H . J . Lu
2001-09-03 23:07                     ` cgd
2001-09-06 10:50                       ` H . J . Lu
2001-09-06 10:59                         ` cgd
2001-09-06 11:07                           ` H . J . Lu
2001-09-06 11:35                             ` Thiemo Seufer
2001-09-06 11:39                             ` cgd
2001-09-06 11:40                               ` cgd
2001-09-08 12:03                               ` Andrew Cagney
2001-09-08 16:38                                 ` Thiemo Seufer
2001-09-08 16:56                                   ` Thiemo Seufer
2001-09-06 11:57                             ` Richard Sandiford
2001-09-06 20:53                               ` Thiemo Seufer
2001-09-06 21:09                                 ` Thiemo Seufer
2001-09-06 21:12                                 ` Thiemo Seufer
2001-09-06 22:38                                   ` H . J . Lu
2001-09-06 23:11                                     ` Thiemo Seufer
2001-09-07  4:10                                 ` Richard Sandiford
2001-09-07  6:22                                   ` Thiemo Seufer
2001-09-07  7:02                                     ` Richard Sandiford
2001-09-07  8:11                                       ` Thiemo Seufer
2001-09-07  9:20                                         ` Richard Sandiford
2001-09-07  9:49                                           ` Thiemo Seufer
2001-09-06 11:14                           ` Thiemo Seufer
2001-09-06 11:08                         ` Thiemo Seufer
2001-08-31 18:22                   ` Thiemo Seufer
2001-09-03  2:57                     ` Richard Sandiford
2001-09-03 15:00                       ` Thiemo Seufer
2001-08-31 14:49               ` Andrew Cagney
2001-08-31 15:00                 ` H . J . Lu
2001-08-31 16:30                   ` Eric Christopher
2001-08-31 16:41                     ` Andrew Cagney
2001-08-31 16:46                       ` H . J . Lu
2001-08-31 17:45                         ` matthew green
2001-09-02 19:25                         ` J Grant
2001-08-31 16:44                     ` H . J . Lu
2001-08-31 17:42                       ` matthew green
2001-08-31 19:06                         ` H . J . Lu
2001-08-31 19:11                           ` matthew green
     [not found]                             ` <mailpost.999310274.17560@postal.sibyte.com>
2001-09-03 23:18                               ` cgd
2001-09-06 11:00                                 ` H . J . Lu
2001-09-06 11:38                                   ` cgd
2001-09-06 12:09                                     ` H . J . Lu
2001-08-31 18:49                     ` Thiemo Seufer
2001-08-31 17:35                   ` matthew green
2001-08-31 19:05                     ` H . J . Lu
2001-08-31 18:25                 ` Thiemo Seufer
2001-08-31 20:46                   ` Ian Lance Taylor
2001-08-31 21:04                     ` Thiemo Seufer
2001-08-31 10:04     ` Richard Sandiford
2001-08-31 10:41       ` Thiemo Seufer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).