aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@linux-mips.org>2004-02-02 12:48:21 +0000
committerMaciej W. Rozycki <macro@linux-mips.org>2004-02-02 12:48:21 +0000
commitf6a22291f074f8dd64fca5d8f922c8bb23297012 (patch)
tree1cc2065b4de185a2eedc0219836a085aa4002540 /gas
parent3ad1377116556518b857286fc3a46354eff403ad (diff)
downloadgdb-f6a22291f074f8dd64fca5d8f922c8bb23297012.zip
gdb-f6a22291f074f8dd64fca5d8f922c8bb23297012.tar.gz
gdb-f6a22291f074f8dd64fca5d8f922c8bb23297012.tar.bz2
gas/
* config/tc-mips.c (add_got_offset_hilo): New function. (macro): Use load_register() and add_got_offset_hilo() to load constants instead of hardcoding code sequences throughout. gas/testsuite/ * gas/mips/div.d: Update to accomodate changes in macro expansions. gas/mips/elf-rel-got-n32.d: Likewise. gas/mips/elf-rel-got-n64.d: Likewise. gas/mips/elf-rel-xgot-n32.d: Likewise. gas/mips/elf-rel-xgot-n64.d: Likewise. gas/mips/la-svr4pic.d: Likewise. gas/mips/la-xgot.d: Likewise. gas/mips/lca-svr4pic.d: Likewise. gas/mips/lca-xgot.d: Likewise.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/tc-mips.c71
-rw-r--r--gas/testsuite/ChangeLog13
-rw-r--r--gas/testsuite/gas/mips/div.d4
-rw-r--r--gas/testsuite/gas/mips/elf-rel-got-n32.d16
-rw-r--r--gas/testsuite/gas/mips/elf-rel-got-n64.d16
-rw-r--r--gas/testsuite/gas/mips/elf-rel-xgot-n32.d16
-rw-r--r--gas/testsuite/gas/mips/elf-rel-xgot-n64.d16
-rw-r--r--gas/testsuite/gas/mips/la-svr4pic.d64
-rw-r--r--gas/testsuite/gas/mips/la-xgot.d64
-rw-r--r--gas/testsuite/gas/mips/lca-svr4pic.d64
-rw-r--r--gas/testsuite/gas/mips/lca-xgot.d64
12 files changed, 186 insertions, 228 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 9719ea7..b4edbbc 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2004-02-02 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+
+ * config/tc-mips.c (add_got_offset_hilo): New function.
+ (macro): Use load_register() and add_got_offset_hilo() to load
+ constants instead of hardcoding code sequences throughout.
+
2004-01-28 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-ia64.c (emit_one_bundle): Add proper indentation.
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index 42efce3..66f52b0 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -4044,8 +4044,8 @@ move_register (int dest, int source)
}
/* Emit an SVR4 PIC sequence to load address LOCAL into DEST, where
- LOCAL is the sum of a symbol and a 16-bit displacement. The two
- alternatives are:
+ LOCAL is the sum of a symbol and a 16-bit or 32-bit displacement.
+ The two alternatives are:
Global symbol Local sybmol
------------- ------------
@@ -4054,7 +4054,8 @@ move_register (int dest, int source)
addiu DEST,DEST,OFFSET addiu DEST,DEST,%lo(SYMBOL + OFFSET)
load_got_offset emits the first instruction and add_got_offset
- emits the second. */
+ emits the second for a 16-bit offset or add_got_offset_hilo emits
+ a sequence to add a 32-bit offset using a scratch register. */
static void
load_got_offset (int dest, expressionS *local)
@@ -4091,6 +4092,32 @@ add_got_offset (int dest, expressionS *local)
relax_end ();
}
+static void
+add_got_offset_hilo (int dest, expressionS *local, int tmp)
+{
+ expressionS global;
+ int hold_mips_optimize;
+
+ global.X_op = O_constant;
+ global.X_op_symbol = NULL;
+ global.X_add_symbol = NULL;
+ global.X_add_number = local->X_add_number;
+
+ relax_start (local->X_add_symbol);
+ load_register (tmp, &global, HAVE_64BIT_ADDRESSES);
+ relax_switch ();
+ /* Set mips_optimize around the lui instruction to avoid
+ inserting an unnecessary nop after the lw. */
+ hold_mips_optimize = mips_optimize;
+ mips_optimize = 2;
+ macro_build_lui (&global, tmp);
+ mips_optimize = hold_mips_optimize;
+ macro_build (local, ADDRESS_ADDI_INSN, "t,r,j", tmp, tmp, BFD_RELOC_LO16);
+ relax_end ();
+
+ macro_build (NULL, ADDRESS_ADD_INSN, "d,v,t", dest, dest, tmp);
+}
+
/*
* Build macros
* This routine implements the seemingly endless macro or synthesized
@@ -4674,14 +4701,13 @@ macro (struct mips_cl_insn *ip)
macro_build (NULL, "break", "c", 7);
}
expr1.X_add_number = -1;
- macro_build (&expr1, dbl ? "daddiu" : "addiu", "t,r,j", AT, 0,
- BFD_RELOC_LO16);
+ load_register (AT, &expr1, dbl);
expr1.X_add_number = mips_trap ? (dbl ? 12 : 8) : (dbl ? 20 : 16);
macro_build (&expr1, "bne", "s,t,p", treg, AT);
if (dbl)
{
expr1.X_add_number = 1;
- macro_build (&expr1, "daddiu", "t,r,j", AT, 0, BFD_RELOC_LO16);
+ load_register (AT, &expr1, dbl);
macro_build (NULL, "dsll32", "d,w,<", AT, AT, 31);
}
else
@@ -5069,6 +5095,7 @@ macro (struct mips_cl_insn *ip)
offset_expr.X_add_number =
((offset_expr.X_add_number + 0x8000) & 0xffff) - 0x8000;
load_got_offset (tempreg, &offset_expr);
+ offset_expr.X_add_number = expr1.X_add_number;
/* If we are going to add in a base register, and the
target register and the base register are the same,
then we are using AT as a temporary register. Since
@@ -5084,17 +5111,7 @@ macro (struct mips_cl_insn *ip)
breg = 0;
tempreg = treg;
}
-
- /* Set mips_optimize around the lui instruction to avoid
- inserting an unnecessary nop after the lw. */
- hold_mips_optimize = mips_optimize;
- mips_optimize = 2;
- macro_build_lui (&expr1, AT);
- mips_optimize = hold_mips_optimize;
-
- add_got_offset (AT, &offset_expr);
- macro_build (NULL, ADDRESS_ADD_INSN, "d,v,t",
- tempreg, tempreg, AT);
+ add_got_offset_hilo (tempreg, &offset_expr, AT);
used_at = 1;
}
}
@@ -5162,9 +5179,7 @@ macro (struct mips_cl_insn *ip)
add_breg_early = 1;
}
- macro_build_lui (&expr1, AT);
- macro_build (&expr1, ADDRESS_ADDI_INSN, "t,r,j",
- AT, AT, BFD_RELOC_LO16);
+ load_register (AT, &expr1, HAVE_64BIT_ADDRESSES);
macro_build (NULL, ADDRESS_ADD_INSN, "d,v,t",
dreg, dreg, AT);
@@ -5305,15 +5320,7 @@ macro (struct mips_cl_insn *ip)
dreg = treg;
}
- /* Set mips_optimize around the lui instruction to avoid
- inserting an unnecessary nop after the lw. */
- hold_mips_optimize = mips_optimize;
- mips_optimize = 2;
- macro_build_lui (&expr1, AT);
- mips_optimize = hold_mips_optimize;
-
- macro_build (&expr1, ADDRESS_ADDI_INSN, "t,r,j",
- AT, AT, BFD_RELOC_LO16);
+ load_register (AT, &expr1, HAVE_64BIT_ADDRESSES);
macro_build (NULL, ADDRESS_ADD_INSN, "d,v,t", dreg, dreg, AT);
used_at = 1;
@@ -5451,11 +5458,7 @@ macro (struct mips_cl_insn *ip)
add_breg_early = 1;
}
- /* Set mips_optimize around the lui instruction to avoid
- inserting an unnecessary nop after the lw. */
- macro_build_lui (&expr1, AT);
- macro_build (&expr1, ADDRESS_ADDI_INSN, "t,r,j",
- AT, AT, BFD_RELOC_LO16);
+ load_register (AT, &expr1, HAVE_64BIT_ADDRESSES);
macro_build (NULL, ADDRESS_ADD_INSN, "d,v,t", dreg, dreg, AT);
used_at = 1;
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 56d284d..b02fadb 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,16 @@
+2004-02-02 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+
+ * gas/mips/div.d: Update to accomodate changes in macro
+ expansions.
+ gas/mips/elf-rel-got-n32.d: Likewise.
+ gas/mips/elf-rel-got-n64.d: Likewise.
+ gas/mips/elf-rel-xgot-n32.d: Likewise.
+ gas/mips/elf-rel-xgot-n64.d: Likewise.
+ gas/mips/la-svr4pic.d: Likewise.
+ gas/mips/la-xgot.d: Likewise.
+ gas/mips/lca-svr4pic.d: Likewise.
+ gas/mips/lca-xgot.d: Likewise.
+
2004-02-01 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* gas/sh/sh4a-fp.d: Fix opcode name fssra to fsrra.
diff --git a/gas/testsuite/gas/mips/div.d b/gas/testsuite/gas/mips/div.d
index 6d60da5..869c0fd 100644
--- a/gas/testsuite/gas/mips/div.d
+++ b/gas/testsuite/gas/mips/div.d
@@ -102,9 +102,9 @@ Disassembly of section .text:
0+0174 <[^>]*> bnez a2,0+0180 <foo\+0x180>
0+0178 <[^>]*> ddiv zero,a1,a2
0+017c <[^>]*> break (0x0,0x7|0x7)
-0+0180 <[^>]*> daddiu at,zero,-1
+0+0180 <[^>]*> (daddiu at,zero,-1|li at,-1)
0+0184 <[^>]*> bne a2,at,0+019c <foo\+0x19c>
-0+0188 <[^>]*> daddiu at,zero,1
+0+0188 <[^>]*> (daddiu at,zero,1|li at,1)
0+018c <[^>]*> dsll32 at,at,0x1f
0+0190 <[^>]*> bne a1,at,0+019c <foo\+0x19c>
0+0194 <[^>]*> nop
diff --git a/gas/testsuite/gas/mips/elf-rel-got-n32.d b/gas/testsuite/gas/mips/elf-rel-got-n32.d
index 4ce7673..41c2c3e 100644
--- a/gas/testsuite/gas/mips/elf-rel-got-n32.d
+++ b/gas/testsuite/gas/mips/elf-rel-got-n32.d
@@ -12,8 +12,8 @@ Disassembly of section \.text:
00000008 <fn\+0x8> 24a5000c addiu a1,a1,12
0000000c <fn\+0xc> 8f850000 lw a1,0\(gp\)
c: R_MIPS_GOT_DISP dg1
-00000010 <fn\+0x10> 3c010002 lui at,0x2
-00000014 <fn\+0x14> 2421e240 addiu at,at,-7616
+00000010 <fn\+0x10> 3c010001 lui at,0x1
+00000014 <fn\+0x14> 3421e240 ori at,at,0xe240
00000018 <fn\+0x18> 00a12821 addu a1,a1,at
0000001c <fn\+0x1c> 8f850000 lw a1,0\(gp\)
1c: R_MIPS_GOT_DISP dg1
@@ -24,8 +24,8 @@ Disassembly of section \.text:
0000002c <fn\+0x2c> 00b12821 addu a1,a1,s1
00000030 <fn\+0x30> 8f850000 lw a1,0\(gp\)
30: R_MIPS_GOT_DISP dg1
-00000034 <fn\+0x34> 3c010002 lui at,0x2
-00000038 <fn\+0x38> 2421e240 addiu at,at,-7616
+00000034 <fn\+0x34> 3c010001 lui at,0x1
+00000038 <fn\+0x38> 3421e240 ori at,at,0xe240
0000003c <fn\+0x3c> 00a12821 addu a1,a1,at
00000040 <fn\+0x40> 00b12821 addu a1,a1,s1
00000044 <fn\+0x44> 8f850000 lw a1,0\(gp\)
@@ -184,8 +184,8 @@ Disassembly of section \.text:
000001d8 <fn\+0x1d8> 24a5000c addiu a1,a1,12
000001dc <fn\+0x1dc> 8f850000 lw a1,0\(gp\)
1dc: R_MIPS_GOT_DISP dg2
-000001e0 <fn\+0x1e0> 3c010002 lui at,0x2
-000001e4 <fn\+0x1e4> 2421e240 addiu at,at,-7616
+000001e0 <fn\+0x1e0> 3c010001 lui at,0x1
+000001e4 <fn\+0x1e4> 3421e240 ori at,at,0xe240
000001e8 <fn\+0x1e8> 00a12821 addu a1,a1,at
000001ec <fn\+0x1ec> 8f850000 lw a1,0\(gp\)
1ec: R_MIPS_GOT_DISP dg2
@@ -196,8 +196,8 @@ Disassembly of section \.text:
000001fc <fn\+0x1fc> 00b12821 addu a1,a1,s1
00000200 <fn\+0x200> 8f850000 lw a1,0\(gp\)
200: R_MIPS_GOT_DISP dg2
-00000204 <fn\+0x204> 3c010002 lui at,0x2
-00000208 <fn\+0x208> 2421e240 addiu at,at,-7616
+00000204 <fn\+0x204> 3c010001 lui at,0x1
+00000208 <fn\+0x208> 3421e240 ori at,at,0xe240
0000020c <fn\+0x20c> 00a12821 addu a1,a1,at
00000210 <fn\+0x210> 00b12821 addu a1,a1,s1
00000214 <fn\+0x214> 8f850000 lw a1,0\(gp\)
diff --git a/gas/testsuite/gas/mips/elf-rel-got-n64.d b/gas/testsuite/gas/mips/elf-rel-got-n64.d
index 9fe98b5..9b971c0 100644
--- a/gas/testsuite/gas/mips/elf-rel-got-n64.d
+++ b/gas/testsuite/gas/mips/elf-rel-got-n64.d
@@ -18,8 +18,8 @@ Disassembly of section \.text:
c: R_MIPS_GOT_DISP dg1
c: R_MIPS_NONE \*ABS\*
c: R_MIPS_NONE \*ABS\*
-0000000000000010 <fn\+0x10> 3c010002 lui at,0x2
-0000000000000014 <fn\+0x14> 6421e240 daddiu at,at,-7616
+0000000000000010 <fn\+0x10> 3c010001 lui at,0x1
+0000000000000014 <fn\+0x14> 3421e240 ori at,at,0xe240
0000000000000018 <fn\+0x18> 00a1282d daddu a1,a1,at
000000000000001c <fn\+0x1c> df850000 ld a1,0\(gp\)
1c: R_MIPS_GOT_DISP dg1
@@ -36,8 +36,8 @@ Disassembly of section \.text:
30: R_MIPS_GOT_DISP dg1
30: R_MIPS_NONE \*ABS\*
30: R_MIPS_NONE \*ABS\*
-0000000000000034 <fn\+0x34> 3c010002 lui at,0x2
-0000000000000038 <fn\+0x38> 6421e240 daddiu at,at,-7616
+0000000000000034 <fn\+0x34> 3c010001 lui at,0x1
+0000000000000038 <fn\+0x38> 3421e240 ori at,at,0xe240
000000000000003c <fn\+0x3c> 00a1282d daddu a1,a1,at
0000000000000040 <fn\+0x40> 00b1282d daddu a1,a1,s1
0000000000000044 <fn\+0x44> df850000 ld a1,0\(gp\)
@@ -302,8 +302,8 @@ Disassembly of section \.text:
1dc: R_MIPS_GOT_DISP dg2
1dc: R_MIPS_NONE \*ABS\*
1dc: R_MIPS_NONE \*ABS\*
-00000000000001e0 <fn\+0x1e0> 3c010002 lui at,0x2
-00000000000001e4 <fn\+0x1e4> 6421e240 daddiu at,at,-7616
+00000000000001e0 <fn\+0x1e0> 3c010001 lui at,0x1
+00000000000001e4 <fn\+0x1e4> 3421e240 ori at,at,0xe240
00000000000001e8 <fn\+0x1e8> 00a1282d daddu a1,a1,at
00000000000001ec <fn\+0x1ec> df850000 ld a1,0\(gp\)
1ec: R_MIPS_GOT_DISP dg2
@@ -320,8 +320,8 @@ Disassembly of section \.text:
200: R_MIPS_GOT_DISP dg2
200: R_MIPS_NONE \*ABS\*
200: R_MIPS_NONE \*ABS\*
-0000000000000204 <fn\+0x204> 3c010002 lui at,0x2
-0000000000000208 <fn\+0x208> 6421e240 daddiu at,at,-7616
+0000000000000204 <fn\+0x204> 3c010001 lui at,0x1
+0000000000000208 <fn\+0x208> 3421e240 ori at,at,0xe240
000000000000020c <fn\+0x20c> 00a1282d daddu a1,a1,at
0000000000000210 <fn\+0x210> 00b1282d daddu a1,a1,s1
0000000000000214 <fn\+0x214> df850000 ld a1,0\(gp\)
diff --git a/gas/testsuite/gas/mips/elf-rel-xgot-n32.d b/gas/testsuite/gas/mips/elf-rel-xgot-n32.d
index a3f5d0c..a7039df 100644
--- a/gas/testsuite/gas/mips/elf-rel-xgot-n32.d
+++ b/gas/testsuite/gas/mips/elf-rel-xgot-n32.d
@@ -22,8 +22,8 @@ Disassembly of section \.text:
00000020 <fn\+0x20> 00bc2821 addu a1,a1,gp
00000024 <fn\+0x24> 8ca50000 lw a1,0\(a1\)
24: R_MIPS_GOT_LO16 dg1
-00000028 <fn\+0x28> 3c010002 lui at,0x2
-0000002c <fn\+0x2c> 2421e240 addiu at,at,-7616
+00000028 <fn\+0x28> 3c010001 lui at,0x1
+0000002c <fn\+0x2c> 3421e240 ori at,at,0xe240
00000030 <fn\+0x30> 00a12821 addu a1,a1,at
00000034 <fn\+0x34> 3c050000 lui a1,0x0
34: R_MIPS_GOT_HI16 dg1
@@ -43,8 +43,8 @@ Disassembly of section \.text:
0000005c <fn\+0x5c> 00bc2821 addu a1,a1,gp
00000060 <fn\+0x60> 8ca50000 lw a1,0\(a1\)
60: R_MIPS_GOT_LO16 dg1
-00000064 <fn\+0x64> 3c010002 lui at,0x2
-00000068 <fn\+0x68> 2421e240 addiu at,at,-7616
+00000064 <fn\+0x64> 3c010001 lui at,0x1
+00000068 <fn\+0x68> 3421e240 ori at,at,0xe240
0000006c <fn\+0x6c> 00a12821 addu a1,a1,at
00000070 <fn\+0x70> 00b12821 addu a1,a1,s1
00000074 <fn\+0x74> 3c050000 lui a1,0x0
@@ -281,8 +281,8 @@ Disassembly of section \.text:
000002d4 <fn\+0x2d4> 00bc2821 addu a1,a1,gp
000002d8 <fn\+0x2d8> 8ca50000 lw a1,0\(a1\)
2d8: R_MIPS_GOT_LO16 dg2
-000002dc <fn\+0x2dc> 3c010002 lui at,0x2
-000002e0 <fn\+0x2e0> 2421e240 addiu at,at,-7616
+000002dc <fn\+0x2dc> 3c010001 lui at,0x1
+000002e0 <fn\+0x2e0> 3421e240 ori at,at,0xe240
000002e4 <fn\+0x2e4> 00a12821 addu a1,a1,at
000002e8 <fn\+0x2e8> 3c050000 lui a1,0x0
2e8: R_MIPS_GOT_HI16 dg2
@@ -302,8 +302,8 @@ Disassembly of section \.text:
00000310 <fn\+0x310> 00bc2821 addu a1,a1,gp
00000314 <fn\+0x314> 8ca50000 lw a1,0\(a1\)
314: R_MIPS_GOT_LO16 dg2
-00000318 <fn\+0x318> 3c010002 lui at,0x2
-0000031c <fn\+0x31c> 2421e240 addiu at,at,-7616
+00000318 <fn\+0x318> 3c010001 lui at,0x1
+0000031c <fn\+0x31c> 3421e240 ori at,at,0xe240
00000320 <fn\+0x320> 00a12821 addu a1,a1,at
00000324 <fn\+0x324> 00b12821 addu a1,a1,s1
00000328 <fn\+0x328> 3c050000 lui a1,0x0
diff --git a/gas/testsuite/gas/mips/elf-rel-xgot-n64.d b/gas/testsuite/gas/mips/elf-rel-xgot-n64.d
index 3d4c13d..717f8ac 100644
--- a/gas/testsuite/gas/mips/elf-rel-xgot-n64.d
+++ b/gas/testsuite/gas/mips/elf-rel-xgot-n64.d
@@ -34,8 +34,8 @@ Disassembly of section \.text:
24: R_MIPS_GOT_LO16 dg1
24: R_MIPS_NONE \*ABS\*
24: R_MIPS_NONE \*ABS\*
-0000000000000028 <fn\+0x28> 3c010002 lui at,0x2
-000000000000002c <fn\+0x2c> 6421e240 daddiu at,at,-7616
+0000000000000028 <fn\+0x28> 3c010001 lui at,0x1
+000000000000002c <fn\+0x2c> 3421e240 ori at,at,0xe240
0000000000000030 <fn\+0x30> 00a1282d daddu a1,a1,at
0000000000000034 <fn\+0x34> 3c050000 lui a1,0x0
34: R_MIPS_GOT_HI16 dg1
@@ -67,8 +67,8 @@ Disassembly of section \.text:
60: R_MIPS_GOT_LO16 dg1
60: R_MIPS_NONE \*ABS\*
60: R_MIPS_NONE \*ABS\*
-0000000000000064 <fn\+0x64> 3c010002 lui at,0x2
-0000000000000068 <fn\+0x68> 6421e240 daddiu at,at,-7616
+0000000000000064 <fn\+0x64> 3c010001 lui at,0x1
+0000000000000068 <fn\+0x68> 3421e240 ori at,at,0xe240
000000000000006c <fn\+0x6c> 00a1282d daddu a1,a1,at
0000000000000070 <fn\+0x70> 00b1282d daddu a1,a1,s1
0000000000000074 <fn\+0x74> 3c050000 lui a1,0x0
@@ -465,8 +465,8 @@ Disassembly of section \.text:
2d8: R_MIPS_GOT_LO16 dg2
2d8: R_MIPS_NONE \*ABS\*
2d8: R_MIPS_NONE \*ABS\*
-00000000000002dc <fn\+0x2dc> 3c010002 lui at,0x2
-00000000000002e0 <fn\+0x2e0> 6421e240 daddiu at,at,-7616
+00000000000002dc <fn\+0x2dc> 3c010001 lui at,0x1
+00000000000002e0 <fn\+0x2e0> 3421e240 ori at,at,0xe240
00000000000002e4 <fn\+0x2e4> 00a1282d daddu a1,a1,at
00000000000002e8 <fn\+0x2e8> 3c050000 lui a1,0x0
2e8: R_MIPS_GOT_HI16 dg2
@@ -498,8 +498,8 @@ Disassembly of section \.text:
314: R_MIPS_GOT_LO16 dg2
314: R_MIPS_NONE \*ABS\*
314: R_MIPS_NONE \*ABS\*
-0000000000000318 <fn\+0x318> 3c010002 lui at,0x2
-000000000000031c <fn\+0x31c> 6421e240 daddiu at,at,-7616
+0000000000000318 <fn\+0x318> 3c010001 lui at,0x1
+000000000000031c <fn\+0x31c> 3421e240 ori at,at,0xe240
0000000000000320 <fn\+0x320> 00a1282d daddu a1,a1,at
0000000000000324 <fn\+0x324> 00b1282d daddu a1,a1,s1
0000000000000328 <fn\+0x328> 3c050000 lui a1,0x0
diff --git a/gas/testsuite/gas/mips/la-svr4pic.d b/gas/testsuite/gas/mips/la-svr4pic.d
index 698b57c..d53580f 100644
--- a/gas/testsuite/gas/mips/la-svr4pic.d
+++ b/gas/testsuite/gas/mips/la-svr4pic.d
@@ -87,23 +87,19 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_common
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_common
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 .bss
@@ -157,22 +153,18 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_data_label
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_data_label
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_common
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_common
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 .bss
@@ -194,23 +186,23 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_common
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_common
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 .bss
@@ -305,26 +297,22 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_common
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_common
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
@@ -389,25 +377,21 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_data_label
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_data_label
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_common
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_common
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
@@ -433,26 +417,26 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_common
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_common
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
diff --git a/gas/testsuite/gas/mips/la-xgot.d b/gas/testsuite/gas/mips/la-xgot.d
index 5a72452..50cc37c83 100644
--- a/gas/testsuite/gas/mips/la-xgot.d
+++ b/gas/testsuite/gas/mips/la-xgot.d
@@ -114,32 +114,28 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lui a0,0x0
[ ]*[0-9a-f]+: R_MIPS_GOT_HI16 small_external_data_label
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lui a0,0x0
[ ]*[0-9a-f]+: R_MIPS_GOT_HI16 big_external_common
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_common
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lui a0,0x0
[ ]*[0-9a-f]+: R_MIPS_GOT_HI16 small_external_common
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_common
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 .bss
@@ -208,7 +204,6 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_data_label
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lui a0,0x0
[ ]*[0-9a-f]+: R_MIPS_GOT_HI16 small_external_data_label
@@ -216,7 +211,6 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_data_label
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lui a0,0x0
[ ]*[0-9a-f]+: R_MIPS_GOT_HI16 big_external_common
@@ -224,7 +218,6 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_common
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lui a0,0x0
[ ]*[0-9a-f]+: R_MIPS_GOT_HI16 small_external_common
@@ -232,7 +225,6 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_common
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 .bss
@@ -257,32 +249,32 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lui a0,0x0
[ ]*[0-9a-f]+: R_MIPS_GOT_HI16 small_external_data_label
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lui a0,0x0
[ ]*[0-9a-f]+: R_MIPS_GOT_HI16 big_external_common
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_common
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lui a0,0x0
[ ]*[0-9a-f]+: R_MIPS_GOT_HI16 small_external_common
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_common
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 .bss
@@ -404,8 +396,7 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lui a0,0x0
@@ -413,8 +404,7 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lui a0,0x0
@@ -422,8 +412,7 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_common
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lui a0,0x0
@@ -431,8 +420,7 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_common
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
@@ -512,7 +500,6 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_data_label
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lui a0,0x0
@@ -521,7 +508,6 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_data_label
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lui a0,0x0
@@ -530,7 +516,6 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_common
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lui a0,0x0
@@ -539,7 +524,6 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_common
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
@@ -568,8 +552,8 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lui a0,0x0
@@ -577,8 +561,8 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lui a0,0x0
@@ -586,8 +570,8 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_common
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lui a0,0x0
@@ -595,8 +579,8 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_common
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
diff --git a/gas/testsuite/gas/mips/lca-svr4pic.d b/gas/testsuite/gas/mips/lca-svr4pic.d
index 730ecdd..29e6a44 100644
--- a/gas/testsuite/gas/mips/lca-svr4pic.d
+++ b/gas/testsuite/gas/mips/lca-svr4pic.d
@@ -87,23 +87,19 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_common
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_common
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 .bss
@@ -157,22 +153,18 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_data_label
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_data_label
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_common
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_common
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 .bss
@@ -194,23 +186,23 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_common
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_common
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 .bss
@@ -305,26 +297,22 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_common
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_common
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
@@ -389,25 +377,21 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_data_label
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_data_label
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_common
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_common
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
@@ -433,26 +417,26 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 big_external_common
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 small_external_common
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
diff --git a/gas/testsuite/gas/mips/lca-xgot.d b/gas/testsuite/gas/mips/lca-xgot.d
index e40ec55..404f4e0 100644
--- a/gas/testsuite/gas/mips/lca-xgot.d
+++ b/gas/testsuite/gas/mips/lca-xgot.d
@@ -114,32 +114,28 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lui a0,0x0
[ ]*[0-9a-f]+: R_MIPS_GOT_HI16 small_external_data_label
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lui a0,0x0
[ ]*[0-9a-f]+: R_MIPS_GOT_HI16 big_external_common
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_common
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lui a0,0x0
[ ]*[0-9a-f]+: R_MIPS_GOT_HI16 small_external_common
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_common
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 .bss
@@ -208,7 +204,6 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_data_label
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lui a0,0x0
[ ]*[0-9a-f]+: R_MIPS_GOT_HI16 small_external_data_label
@@ -216,7 +211,6 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_data_label
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lui a0,0x0
[ ]*[0-9a-f]+: R_MIPS_GOT_HI16 big_external_common
@@ -224,7 +218,6 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_common
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lui a0,0x0
[ ]*[0-9a-f]+: R_MIPS_GOT_HI16 small_external_common
@@ -232,7 +225,6 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_common
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 .bss
@@ -257,32 +249,32 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lui a0,0x0
[ ]*[0-9a-f]+: R_MIPS_GOT_HI16 small_external_data_label
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lui a0,0x0
[ ]*[0-9a-f]+: R_MIPS_GOT_HI16 big_external_common
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_common
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lui a0,0x0
[ ]*[0-9a-f]+: R_MIPS_GOT_HI16 small_external_common
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_common
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
[ ]*[0-9a-f]+: R_MIPS_GOT16 .bss
@@ -404,8 +396,7 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lui a0,0x0
@@ -413,8 +404,7 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lui a0,0x0
@@ -422,8 +412,7 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_common
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lui a0,0x0
@@ -431,8 +420,7 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_common
-[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,-32768
+[0-9a-f]+ <[^>]*> li at,0x8000
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
@@ -512,7 +500,6 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_data_label
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lui a0,0x0
@@ -521,7 +508,6 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_data_label
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lui a0,0x0
@@ -530,7 +516,6 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_common
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lui a0,0x0
@@ -539,7 +524,6 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_common
[0-9a-f]+ <[^>]*> lui at,0x1
-[0-9a-f]+ <[^>]*> addiu at,at,0
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)
@@ -568,8 +552,8 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lui a0,0x0
@@ -577,8 +561,8 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_data_label
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lui a0,0x0
@@ -586,8 +570,8 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 big_external_common
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lui a0,0x0
@@ -595,8 +579,8 @@ Disassembly of section .text:
[0-9a-f]+ <[^>]*> addu a0,a0,gp
[0-9a-f]+ <[^>]*> lw a0,0\(a0\)
[ ]*[0-9a-f]+: R_MIPS_GOT_LO16 small_external_common
-[0-9a-f]+ <[^>]*> lui at,0x2
-[0-9a-f]+ <[^>]*> addiu at,at,-23131
+[0-9a-f]+ <[^>]*> lui at,0x1
+[0-9a-f]+ <[^>]*> ori at,at,0xa5a5
[0-9a-f]+ <[^>]*> addu a0,a0,at
[0-9a-f]+ <[^>]*> addu a0,a0,a1
[0-9a-f]+ <[^>]*> lw a0,0\(gp\)