This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] MIPS/ELF: %call_r/%got_r operators for relocation override


On Fri, 12 Sep 2003, Thiemo Seufer wrote:

> > I don't think that's right.  $25's special meaning only applies at
> > function entry.  Other than that, it's a general temporary register
> > that you can use for anything.
> 
> You are right, I forgot $25 is special cased WRT.
> 
> Maciej, I think your patch is ok.

 I have finally got back at the patch and here's an updated version,
including a set of testcases for the "lca" macro (nothing discovering --
they're basically copies of ones for the "la" macro).

 While working on it, I've discovered a bug in the existing condition
which triggers generation of CALL relocations -- it is correctly false
whenever a constant is applied to the referred symbol but it is
incorrectly true when a base register is used, which of course precludes a
use of a stub.  So I've updated the patch to fix this condition as well.

gas/ChangeLog:
2003-11-17  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* config/tc-mips.c (macro): Handle new macros: "lca" and "dlca" 
	for loading addresses using CALL relocations.
	Don't emit CALL relocations when a base register is used.

gas/testsuite/ChangeLog:
2003-11-17  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* gas/mips/lca-svr4pic.d: New test for the "lca" macro.
	* gas/mips/lca-xgot.d: Likewise.
	* gas/mips/lca.s: Source for the new tests.
	* gas/mips/mips.exp: Run the new tests.

include/ChangeLog:
2003-11-17  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* opcode/mips.h: Define new enum members, M_LCA_AB and M_DLCA_AB.

opcodes/ChangeLog:
2003-11-17  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* mips-opc.c (mips_builtin_opcodes): Handle new macros: "lca" and
	"dlca".

  Maciej

-- 
+  Maciej W. Rozycki, Technical University of Gdansk, Poland   +
+--------------------------------------------------------------+
+        e-mail: macro@ds2.pg.gda.pl, PGP key available        +

binutils-2.14.90-20031114-mips-lca.patch
diff -up --recursive --new-file binutils-2.14.90-20031114.macro/gas/config/tc-mips.c binutils-2.14.90-20031114/gas/config/tc-mips.c
--- binutils-2.14.90-20031114.macro/gas/config/tc-mips.c	2003-10-20 03:25:29.000000000 +0000
+++ binutils-2.14.90-20031114/gas/config/tc-mips.c	2003-11-17 02:33:15.000000000 +0000
@@ -4010,6 +4010,7 @@ macro (struct mips_cl_insn *ip)
   int coproc = 0;
   int lr = 0;
   int imm = 0;
+  int call = 0;
   offsetT maxnum;
   int off;
   bfd_reloc_code_real_type r;
@@ -4774,9 +4775,15 @@ macro (struct mips_cl_insn *ip)
       macro_build (NULL, &icnt, NULL, s2, "d", dreg);
       return;
 
+    case M_DLCA_AB:
+      dbl = 1;
+    case M_LCA_AB:
+      call = 1;
+      goto do_la;
     case M_DLA_AB:
       dbl = 1;
     case M_LA_AB:
+    do_la:
       /* Load the address of a symbol into a register.  If breg is not
 	 zero, we then add a base register to it.  */
 
@@ -4956,7 +4963,7 @@ macro (struct mips_cl_insn *ip)
 	  /* If this is a reference to an external symbol, and there
 	     is no constant, we want
 	       lw	$tempreg,<sym>($gp)	(BFD_RELOC_MIPS_GOT16)
-	     or if tempreg is PIC_CALL_REG
+	     or for lca or if tempreg is PIC_CALL_REG
 	       lw	$tempreg,<sym>($gp)	(BFD_RELOC_MIPS_CALL16)
 	     For a local symbol, we want
 	       lw	$tempreg,<sym>($gp)	(BFD_RELOC_MIPS_GOT16)
@@ -4986,7 +4993,8 @@ macro (struct mips_cl_insn *ip)
 	  expr1.X_add_number = offset_expr.X_add_number;
 	  offset_expr.X_add_number = 0;
 	  frag_grow (32);
-	  if (expr1.X_add_number == 0 && tempreg == PIC_CALL_REG)
+	  if (expr1.X_add_number == 0 && breg == 0
+	      && (call || tempreg == PIC_CALL_REG))
 	    lw_reloc_type = (int) BFD_RELOC_MIPS_CALL16;
 	  macro_build (NULL, &icnt, &offset_expr, ADDRESS_LOAD_INSN, "t,o(b)",
 		       tempreg, lw_reloc_type, mips_gp_register);
@@ -5082,7 +5090,7 @@ macro (struct mips_cl_insn *ip)
 	     constant, or local symbol (*), with or without a
 	     constant, we want
 	       lw	$tempreg,<sym>($gp)	(BFD_RELOC_MIPS_GOT_DISP)
-	     or if tempreg is PIC_CALL_REG
+	     or for lca or if tempreg is PIC_CALL_REG
 	       lw	$tempreg,<sym>($gp)	(BFD_RELOC_MIPS_CALL16)
 
 	     If we have a small constant, and this is a reference to
@@ -5102,7 +5110,8 @@ macro (struct mips_cl_insn *ip)
 	     instruction.  */
 
 	  frag_grow (28);
-	  if (offset_expr.X_add_number == 0 && tempreg == PIC_CALL_REG)
+	  if (offset_expr.X_add_number == 0 && breg == 0
+	      && (call || tempreg == PIC_CALL_REG))
 	    lw_reloc_type = (int) BFD_RELOC_MIPS_CALL16;
 	  if (offset_expr.X_add_number)
 	    {
@@ -5206,7 +5215,7 @@ macro (struct mips_cl_insn *ip)
 	       lui	$tempreg,<sym>		(BFD_RELOC_MIPS_GOT_HI16)
 	       addu	$tempreg,$tempreg,$gp
 	       lw	$tempreg,<sym>($tempreg) (BFD_RELOC_MIPS_GOT_LO16)
-	     or if tempreg is PIC_CALL_REG
+	     or for lca or if tempreg is PIC_CALL_REG
 	       lui	$tempreg,<sym>		(BFD_RELOC_MIPS_CALL_HI16)
 	       addu	$tempreg,$tempreg,$gp
 	       lw	$tempreg,<sym>($tempreg) (BFD_RELOC_MIPS_CALL_LO16)
@@ -5249,7 +5258,8 @@ macro (struct mips_cl_insn *ip)
 	    gpdel = 4;
 	  else
 	    gpdel = 0;
-	  if (expr1.X_add_number == 0 && tempreg == PIC_CALL_REG)
+	  if (expr1.X_add_number == 0 && breg == 0
+	      && (call || tempreg == PIC_CALL_REG))
 	    {
 	      lui_reloc_type = (int) BFD_RELOC_MIPS_CALL_HI16;
 	      lw_reloc_type = (int) BFD_RELOC_MIPS_CALL_LO16;
@@ -5410,7 +5420,7 @@ macro (struct mips_cl_insn *ip)
 	       lui	$tempreg,<sym>		(BFD_RELOC_MIPS_GOT_HI16)
 	       add	$tempreg,$tempreg,$gp
 	       lw	$tempreg,<sym>($tempreg) (BFD_RELOC_MIPS_GOT_LO16)
-	     or if tempreg is PIC_CALL_REG
+	     or for lca or if tempreg is PIC_CALL_REG
 	       lui	$tempreg,<sym>		(BFD_RELOC_MIPS_CALL_HI16)
 	       add	$tempreg,$tempreg,$gp
 	       lw	$tempreg,<sym>($tempreg) (BFD_RELOC_MIPS_CALL_LO16)
@@ -5442,7 +5452,8 @@ macro (struct mips_cl_insn *ip)
 	    expr1.X_add_number = offset_expr.X_add_number;
 	  offset_expr.X_add_number = 0;
 
-	  if (expr1.X_add_number == 0 && tempreg == PIC_CALL_REG)
+	  if (expr1.X_add_number == 0 && breg == 0
+	      && (call || tempreg == PIC_CALL_REG))
 	    {
 	      lui_reloc_type = (int) BFD_RELOC_MIPS_CALL_HI16;
 	      lw_reloc_type = (int) BFD_RELOC_MIPS_CALL_LO16;
diff -up --recursive --new-file binutils-2.14.90-20031114.macro/gas/testsuite/gas/mips/lca-svr4pic.d binutils-2.14.90-20031114/gas/testsuite/gas/mips/lca-svr4pic.d
--- binutils-2.14.90-20031114.macro/gas/testsuite/gas/mips/lca-svr4pic.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-2.14.90-20031114/gas/testsuite/gas/mips/lca-svr4pic.d	2003-11-17 02:20:20.000000000 +0000
@@ -0,0 +1,472 @@
+#objdump: -dr --prefix-addresses -mmips:3000
+#name: MIPS lca-svr4pic
+#as: -32 -mips1 -KPIC --defsym KPIC=1
+#source: lca.s
+
+# Test the lca macro with -KPIC.
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+[0-9a-f]+ <[^>]*> li	a0,0
+[0-9a-f]+ <[^>]*> li	a0,1
+[0-9a-f]+ <[^>]*> li	a0,0x8000
+[0-9a-f]+ <[^>]*> li	a0,-32768
+[0-9a-f]+ <[^>]*> lui	a0,0x1
+[0-9a-f]+ <[^>]*> lui	a0,0x1
+[0-9a-f]+ <[^>]*> ori	a0,a0,0xa5a5
+[0-9a-f]+ <[^>]*> addiu	a0,a1,0
+[0-9a-f]+ <[^>]*> addiu	a0,a1,1
+[0-9a-f]+ <[^>]*> li	a0,0x8000
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> addiu	a0,a1,-32768
+[0-9a-f]+ <[^>]*> lui	a0,0x1
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lui	a0,0x1
+[0-9a-f]+ <[^>]*> ori	a0,a0,0xa5a5
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,0
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_CALL16	big_external_data_label
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_CALL16	small_external_data_label
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_CALL16	big_external_common
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_CALL16	small_external_common
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,0
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1000
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	big_external_data_label
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	small_external_data_label
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	big_external_common
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	small_external_common
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1001
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,-32768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[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]+ <[^>]*> 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]+ <[^>]*> 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]+ <[^>]*> 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]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,-32768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,-31768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	big_external_data_label
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	small_external_data_label
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	big_external_common
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	small_external_common
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-31768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,0
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[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,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
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,0
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,1000
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> lui	at,0x2
+[0-9a-f]+ <[^>]*> addiu	at,at,-23131
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[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]+ <[^>]*> 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]+ <[^>]*> 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]+ <[^>]*> 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]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x2
+[0-9a-f]+ <[^>]*> addiu	at,at,-23131
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x2
+[0-9a-f]+ <[^>]*> addiu	at,at,-22131
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,0
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[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]+ <[^>]*> nop
+[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]+ <[^>]*> nop
+[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]+ <[^>]*> nop
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,0
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1000
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1001
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,-32768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[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_data_label
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,-32768
+[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]+ <[^>]*> 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]+ <[^>]*> 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]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,-32768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[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	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,-31768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[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	.data
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-31768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,0
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[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_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\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,0
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[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	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,1000
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[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	.data
+[0-9a-f]+ <[^>]*> lui	at,0x2
+[0-9a-f]+ <[^>]*> addiu	at,at,-23131
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[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_data_label
+[0-9a-f]+ <[^>]*> lui	at,0x2
+[0-9a-f]+ <[^>]*> addiu	at,at,-23131
+[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]+ <[^>]*> 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]+ <[^>]*> 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]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x2
+[0-9a-f]+ <[^>]*> addiu	at,at,-23131
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[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	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x2
+[0-9a-f]+ <[^>]*> addiu	at,at,-22131
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+	...
diff -up --recursive --new-file binutils-2.14.90-20031114.macro/gas/testsuite/gas/mips/lca-xgot.d binutils-2.14.90-20031114/gas/testsuite/gas/mips/lca-xgot.d
--- binutils-2.14.90-20031114.macro/gas/testsuite/gas/mips/lca-xgot.d	1970-01-01 00:00:00.000000000 +0000
+++ binutils-2.14.90-20031114/gas/testsuite/gas/mips/lca-xgot.d	2003-11-17 02:24:04.000000000 +0000
@@ -0,0 +1,616 @@
+#objdump: -dr --prefix-addresses -mmips:3000
+#name: MIPS lca-xgot
+#as: -32 -mips1 -KPIC -xgot --defsym KPIC=1
+#source: lca.s
+
+# Test the lca macro with -KPIC -xgot.
+
+.*: +file format .*mips.*
+
+Disassembly of section .text:
+[0-9a-f]+ <[^>]*> li	a0,0
+[0-9a-f]+ <[^>]*> li	a0,1
+[0-9a-f]+ <[^>]*> li	a0,0x8000
+[0-9a-f]+ <[^>]*> li	a0,-32768
+[0-9a-f]+ <[^>]*> lui	a0,0x1
+[0-9a-f]+ <[^>]*> lui	a0,0x1
+[0-9a-f]+ <[^>]*> ori	a0,a0,0xa5a5
+[0-9a-f]+ <[^>]*> addiu	a0,a1,0
+[0-9a-f]+ <[^>]*> addiu	a0,a1,1
+[0-9a-f]+ <[^>]*> li	a0,0x8000
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> addiu	a0,a1,-32768
+[0-9a-f]+ <[^>]*> lui	a0,0x1
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lui	a0,0x1
+[0-9a-f]+ <[^>]*> ori	a0,a0,0xa5a5
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,0
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[0-9a-f]+ <[^>]*> lui	a0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_CALL_HI16	big_external_data_label
+[0-9a-f]+ <[^>]*> addu	a0,a0,gp
+[0-9a-f]+ <[^>]*> lw	a0,0\(a0\)
+[ 	]*[0-9a-f]+: R_MIPS_CALL_LO16	big_external_data_label
+[0-9a-f]+ <[^>]*> lui	a0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_CALL_HI16	small_external_data_label
+[0-9a-f]+ <[^>]*> addu	a0,a0,gp
+[0-9a-f]+ <[^>]*> lw	a0,0\(a0\)
+[ 	]*[0-9a-f]+: R_MIPS_CALL_LO16	small_external_data_label
+[0-9a-f]+ <[^>]*> lui	a0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_CALL_HI16	big_external_common
+[0-9a-f]+ <[^>]*> addu	a0,a0,gp
+[0-9a-f]+ <[^>]*> lw	a0,0\(a0\)
+[ 	]*[0-9a-f]+: R_MIPS_CALL_LO16	big_external_common
+[0-9a-f]+ <[^>]*> lui	a0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_CALL_HI16	small_external_common
+[0-9a-f]+ <[^>]*> addu	a0,a0,gp
+[0-9a-f]+ <[^>]*> lw	a0,0\(a0\)
+[ 	]*[0-9a-f]+: R_MIPS_CALL_LO16	small_external_common
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,0
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1000
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[0-9a-f]+ <[^>]*> lui	a0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_GOT_HI16	big_external_data_label
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1001
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,-32768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lui	a0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_GOT_HI16	big_external_data_label
+[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]+ <[^>]*> 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]+ <[^>]*> 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]+ <[^>]*> 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]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,-32768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,-31768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[0-9a-f]+ <[^>]*> lui	a0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_GOT_HI16	big_external_data_label
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-31768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,0
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lui	a0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_GOT_HI16	big_external_data_label
+[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,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
+[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,0
+[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,0
+[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,0
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,0
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,1000
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> lui	at,0x2
+[0-9a-f]+ <[^>]*> addiu	at,at,-23131
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lui	a0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_GOT_HI16	big_external_data_label
+[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]+ <[^>]*> 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]+ <[^>]*> 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]+ <[^>]*> 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]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x2
+[0-9a-f]+ <[^>]*> addiu	at,at,-23131
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x2
+[0-9a-f]+ <[^>]*> addiu	at,at,-22131
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,0
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lui	a0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_GOT_HI16	big_external_data_label
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,0
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1000
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lui	a0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_GOT_HI16	big_external_data_label
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,1001
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,-32768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lui	a0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_GOT_HI16	big_external_data_label
+[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]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[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]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[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]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[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]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,-32768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[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	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,-31768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[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	.data
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lui	a0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_GOT_HI16	big_external_data_label
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[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]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-32768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> nop
+[0-9a-f]+ <[^>]*> addiu	a0,a0,-31768
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.data
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,0
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lui	a0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_GOT_HI16	big_external_data_label
+[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,0
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[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,0
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[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,0
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[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,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	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,0
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[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	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x1
+[0-9a-f]+ <[^>]*> addiu	at,at,1000
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[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	.data
+[0-9a-f]+ <[^>]*> lui	at,0x2
+[0-9a-f]+ <[^>]*> addiu	at,at,-23131
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.data
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lui	a0,0x0
+[ 	]*[0-9a-f]+: R_MIPS_GOT_HI16	big_external_data_label
+[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]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[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]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[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]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[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]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+[0-9a-f]+ <[^>]*> lw	a0,0\(gp\)
+[ 	]*[0-9a-f]+: R_MIPS_GOT16	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x2
+[0-9a-f]+ <[^>]*> addiu	at,at,-23131
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[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	.bss
+[0-9a-f]+ <[^>]*> lui	at,0x2
+[0-9a-f]+ <[^>]*> addiu	at,at,-22131
+[ 	]*[0-9a-f]+: R_MIPS_LO16	.bss
+[0-9a-f]+ <[^>]*> addu	a0,a0,at
+[0-9a-f]+ <[^>]*> addu	a0,a0,a1
+	...
diff -up --recursive --new-file binutils-2.14.90-20031114.macro/gas/testsuite/gas/mips/lca.s binutils-2.14.90-20031114/gas/testsuite/gas/mips/lca.s
--- binutils-2.14.90-20031114.macro/gas/testsuite/gas/mips/lca.s	1970-01-01 00:00:00.000000000 +0000
+++ binutils-2.14.90-20031114/gas/testsuite/gas/mips/lca.s	2003-11-17 00:41:59.000000000 +0000
@@ -0,0 +1,111 @@
+# Source file used to test the lca macro.
+	
+	.data
+data_label:
+	.extern big_external_data_label,1000
+	.extern small_external_data_label,1
+	.comm big_external_common,1000
+	.comm small_external_common,1
+	.lcomm big_local_common,1000
+	.lcomm small_local_common,1
+	
+	.text
+	lca	$4,0
+	lca	$4,1
+	lca	$4,0x8000
+	lca	$4,-0x8000
+	lca	$4,0x10000
+	lca	$4,0x1a5a5
+	lca	$4,0($5)
+	lca	$4,1($5)
+	lca	$4,0x8000($5)
+	lca	$4,-0x8000($5)
+	lca	$4,0x10000($5)
+	lca	$4,0x1a5a5($5)
+	lca	$4,data_label
+	lca	$4,big_external_data_label
+	lca	$4,small_external_data_label
+	lca	$4,big_external_common
+	lca	$4,small_external_common
+	lca	$4,big_local_common
+	lca	$4,small_local_common
+	lca	$4,data_label+1
+	lca	$4,big_external_data_label+1
+	lca	$4,small_external_data_label+1
+	lca	$4,big_external_common+1
+	lca	$4,small_external_common+1
+	lca	$4,big_local_common+1
+	lca	$4,small_local_common+1
+	lca	$4,data_label+0x8000
+	lca	$4,big_external_data_label+0x8000
+	lca	$4,small_external_data_label+0x8000
+	lca	$4,big_external_common+0x8000
+	lca	$4,small_external_common+0x8000
+	lca	$4,big_local_common+0x8000
+	lca	$4,small_local_common+0x8000
+	lca	$4,data_label-0x8000
+	lca	$4,big_external_data_label-0x8000
+	lca	$4,small_external_data_label-0x8000
+	lca	$4,big_external_common-0x8000
+	lca	$4,small_external_common-0x8000
+	lca	$4,big_local_common-0x8000
+	lca	$4,small_local_common-0x8000
+	lca	$4,data_label+0x10000
+	lca	$4,big_external_data_label+0x10000
+	lca	$4,small_external_data_label+0x10000
+	lca	$4,big_external_common+0x10000
+	lca	$4,small_external_common+0x10000
+	lca	$4,big_local_common+0x10000
+	lca	$4,small_local_common+0x10000
+	lca	$4,data_label+0x1a5a5
+	lca	$4,big_external_data_label+0x1a5a5
+	lca	$4,small_external_data_label+0x1a5a5
+	lca	$4,big_external_common+0x1a5a5
+	lca	$4,small_external_common+0x1a5a5
+	lca	$4,big_local_common+0x1a5a5
+	lca	$4,small_local_common+0x1a5a5
+	lca	$4,data_label($5)
+	lca	$4,big_external_data_label($5)
+	lca	$4,small_external_data_label($5)
+	lca	$4,big_external_common($5)
+	lca	$4,small_external_common($5)
+	lca	$4,big_local_common($5)
+	lca	$4,small_local_common($5)
+	lca	$4,data_label+1($5)
+	lca	$4,big_external_data_label+1($5)
+	lca	$4,small_external_data_label+1($5)
+	lca	$4,big_external_common+1($5)
+	lca	$4,small_external_common+1($5)
+	lca	$4,big_local_common+1($5)
+	lca	$4,small_local_common+1($5)
+	lca	$4,data_label+0x8000($5)
+	lca	$4,big_external_data_label+0x8000($5)
+	lca	$4,small_external_data_label+0x8000($5)
+	lca	$4,big_external_common+0x8000($5)
+	lca	$4,small_external_common+0x8000($5)
+	lca	$4,big_local_common+0x8000($5)
+	lca	$4,small_local_common+0x8000($5)
+	lca	$4,data_label-0x8000($5)
+	lca	$4,big_external_data_label-0x8000($5)
+	lca	$4,small_external_data_label-0x8000($5)
+	lca	$4,big_external_common-0x8000($5)
+	lca	$4,small_external_common-0x8000($5)
+	lca	$4,big_local_common-0x8000($5)
+	lca	$4,small_local_common-0x8000($5)
+	lca	$4,data_label+0x10000($5)
+	lca	$4,big_external_data_label+0x10000($5)
+	lca	$4,small_external_data_label+0x10000($5)
+	lca	$4,big_external_common+0x10000($5)
+	lca	$4,small_external_common+0x10000($5)
+	lca	$4,big_local_common+0x10000($5)
+	lca	$4,small_local_common+0x10000($5)
+	lca	$4,data_label+0x1a5a5($5)
+	lca	$4,big_external_data_label+0x1a5a5($5)
+	lca	$4,small_external_data_label+0x1a5a5($5)
+	lca	$4,big_external_common+0x1a5a5($5)
+	lca	$4,small_external_common+0x1a5a5($5)
+	lca	$4,big_local_common+0x1a5a5($5)
+	lca	$4,small_local_common+0x1a5a5($5)
+
+# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
+	.space  8
diff -up --recursive --new-file binutils-2.14.90-20031114.macro/gas/testsuite/gas/mips/mips.exp binutils-2.14.90-20031114/gas/testsuite/gas/mips/mips.exp
--- binutils-2.14.90-20031114.macro/gas/testsuite/gas/mips/mips.exp	2003-10-01 03:25:36.000000000 +0000
+++ binutils-2.14.90-20031114/gas/testsuite/gas/mips/mips.exp	2003-11-17 00:40:44.000000000 +0000
@@ -463,6 +463,8 @@ if { [istarget mips*-*-*] } then {
     # Not sure when it first cropped up, but may be related to addition of
     # "la" -> "addiu" pattern in MIPS opcode table long ago.
     if $ecoff { run_dump_test "la-empic" }
+    if $elf { run_dump_test "lca-svr4pic" }
+    if $elf { run_dump_test "lca-xgot" }
     if !$aout {
 	# XXX FIXME: Has mips2 and later insns with mips1 disassemblies.
 	# (Should split and then use appropriate arch lists.)
diff -up --recursive --new-file binutils-2.14.90-20031114.macro/include/opcode/mips.h binutils-2.14.90-20031114/include/opcode/mips.h
--- binutils-2.14.90-20031114.macro/include/opcode/mips.h	2003-10-01 03:25:26.000000000 +0000
+++ binutils-2.14.90-20031114/include/opcode/mips.h	2003-11-17 00:30:19.000000000 +0000
@@ -567,6 +567,7 @@ enum
   M_DIVU_3,
   M_DIVU_3I,
   M_DLA_AB,
+  M_DLCA_AB,
   M_DLI,
   M_DMUL,
   M_DMUL_I,
@@ -592,6 +593,7 @@ enum
   M_LB_AB,
   M_LBU_A,
   M_LBU_AB,
+  M_LCA_AB,
   M_LD_A,
   M_LD_OB,
   M_LD_AB,
diff -up --recursive --new-file binutils-2.14.90-20031114.macro/opcodes/mips-opc.c binutils-2.14.90-20031114/opcodes/mips-opc.c
--- binutils-2.14.90-20031114.macro/opcodes/mips-opc.c	2003-10-01 03:25:23.000000000 +0000
+++ binutils-2.14.90-20031114/opcodes/mips-opc.c	2003-11-17 00:30:19.000000000 +0000
@@ -517,6 +517,7 @@ const struct mips_opcode mips_builtin_op
 {"divu",    "d,v,t",	0,    (int) M_DIVU_3,	INSN_MACRO,		I1	},
 {"divu",    "d,v,I",	0,    (int) M_DIVU_3I,	INSN_MACRO,		I1	},
 {"dla",     "t,A(b)",	0,    (int) M_DLA_AB,	INSN_MACRO,		I3	},
+{"dlca",    "t,A(b)",	0,    (int) M_DLCA_AB,	INSN_MACRO,		I3	},
 {"dli",     "t,j",      0x24000000, 0xffe00000, WR_t,			I3	}, /* addiu */
 {"dli",	    "t,i",	0x34000000, 0xffe00000, WR_t,			I3	}, /* ori */
 {"dli",     "t,I",	0,    (int) M_DLI,	INSN_MACRO,		I3	},
@@ -640,6 +641,7 @@ const struct mips_opcode mips_builtin_op
 {"lb",      "t,A(b)",	0,    (int) M_LB_AB,	INSN_MACRO,		I1	},
 {"lbu",     "t,o(b)",	0x90000000, 0xfc000000,	LDD|RD_b|WR_t,		I1	},
 {"lbu",     "t,A(b)",	0,    (int) M_LBU_AB,	INSN_MACRO,		I1	},
+{"lca",     "t,A(b)",	0,    (int) M_LCA_AB,	INSN_MACRO,		I1	},
 {"ld",	    "t,o(b)",   0xdc000000, 0xfc000000, WR_t|RD_b,		I3	},
 {"ld",      "t,o(b)",	0,    (int) M_LD_OB,	INSN_MACRO,		I1	},
 {"ld",      "t,A(b)",	0,    (int) M_LD_AB,	INSN_MACRO,		I1	},


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]