for loading addresses using CALL relocations.
Don't emit CALL relocations when a base register is used.
* 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.
* opcode/mips.h: Define new enum members, M_LCA_AB and M_DLCA_AB.
* mips-opc.c (mips_builtin_opcodes): Handle new macros: "lca" and
"dlca".
+2003-11-18 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.
+
2003-11-15 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
* config/tc-mips.c: Formatting fixes.
int coproc = 0;
int lr = 0;
int imm = 0;
+ int call = 0;
offsetT maxnum;
int off;
bfd_reloc_code_real_type r;
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. */
/* 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)
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);
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
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)
{
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)
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;
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)
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;
+2003-11-18 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.
+
2003-11-14 Nick Clifton <nickc@redhat.com>
* gas/arm/arm7.d: Pass -D instead of -d to objdump in order to
--- /dev/null
+#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
+ ...
--- /dev/null
+#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
+ ...
--- /dev/null
+# 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
# 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.)
+2003-11-18 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+
+ * opcode/mips.h: Define new enum members, M_LCA_AB and M_DLCA_AB.
+
2003-11-14 Nick Clifton <nickc@redhat.com>
* dis-asm.h (struct disassemble_info): Add new field
M_DIVU_3,
M_DIVU_3I,
M_DLA_AB,
+ M_DLCA_AB,
M_DLI,
M_DMUL,
M_DMUL_I,
M_LB_AB,
M_LBU_A,
M_LBU_AB,
+ M_LCA_AB,
M_LD_A,
M_LD_OB,
M_LD_AB,
+2003-11-18 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+
+ * mips-opc.c (mips_builtin_opcodes): Handle new macros: "lca" and
+ "dlca".
+
2003-11-14 Nick Clifton <nickc@redhat.com>
* dis-init.c (init_disassemble_info): Initialise
{"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 },
{"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 },