From 1abe91b1db3777cfb5ed135baa33e16c7744abfd Mon Sep 17 00:00:00 2001 From: "Maciej W. Rozycki" Date: Tue, 18 Nov 2003 21:22:57 +0000 Subject: * 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/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". --- gas/ChangeLog | 6 + gas/config/tc-mips.c | 27 +- gas/testsuite/ChangeLog | 7 + gas/testsuite/gas/mips/lca-svr4pic.d | 472 +++++++++++++++++++++++++++ gas/testsuite/gas/mips/lca-xgot.d | 616 +++++++++++++++++++++++++++++++++++ gas/testsuite/gas/mips/lca.s | 111 +++++++ gas/testsuite/gas/mips/mips.exp | 2 + include/ChangeLog | 4 + include/opcode/mips.h | 2 + opcodes/ChangeLog | 5 + opcodes/mips-opc.c | 2 + 11 files changed, 1246 insertions(+), 8 deletions(-) create mode 100644 gas/testsuite/gas/mips/lca-svr4pic.d create mode 100644 gas/testsuite/gas/mips/lca-xgot.d create mode 100644 gas/testsuite/gas/mips/lca.s diff --git a/gas/ChangeLog b/gas/ChangeLog index 0219720..2195b9e 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2003-11-18 Maciej W. Rozycki + + * 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 * config/tc-mips.c: Formatting fixes. diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index ae9625a..75f8107 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -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,($gp) (BFD_RELOC_MIPS_GOT16) - or if tempreg is PIC_CALL_REG + or for lca or if tempreg is PIC_CALL_REG lw $tempreg,($gp) (BFD_RELOC_MIPS_CALL16) For a local symbol, we want lw $tempreg,($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,($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,($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, (BFD_RELOC_MIPS_GOT_HI16) addu $tempreg,$tempreg,$gp lw $tempreg,($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, (BFD_RELOC_MIPS_CALL_HI16) addu $tempreg,$tempreg,$gp lw $tempreg,($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, (BFD_RELOC_MIPS_GOT_HI16) add $tempreg,$tempreg,$gp lw $tempreg,($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, (BFD_RELOC_MIPS_CALL_HI16) add $tempreg,$tempreg,$gp lw $tempreg,($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 --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 9d21c63..e3aec5b 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2003-11-18 Maciej W. Rozycki + + * 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 * gas/arm/arm7.d: Pass -D instead of -d to objdump in order to diff --git a/gas/testsuite/gas/mips/lca-svr4pic.d b/gas/testsuite/gas/mips/lca-svr4pic.d new file mode 100644 index 0000000..730ecdd --- /dev/null +++ b/gas/testsuite/gas/mips/lca-svr4pic.d @@ -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 --git a/gas/testsuite/gas/mips/lca-xgot.d b/gas/testsuite/gas/mips/lca-xgot.d new file mode 100644 index 0000000..e40ec55 --- /dev/null +++ b/gas/testsuite/gas/mips/lca-xgot.d @@ -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 --git a/gas/testsuite/gas/mips/lca.s b/gas/testsuite/gas/mips/lca.s new file mode 100644 index 0000000..086c8f9 --- /dev/null +++ b/gas/testsuite/gas/mips/lca.s @@ -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 --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index 865b580..c4fd0c7 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -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 --git a/include/ChangeLog b/include/ChangeLog index 9052a6e..76fe5b2 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,7 @@ +2003-11-18 Maciej W. Rozycki + + * opcode/mips.h: Define new enum members, M_LCA_AB and M_DLCA_AB. + 2003-11-14 Nick Clifton * dis-asm.h (struct disassemble_info): Add new field diff --git a/include/opcode/mips.h b/include/opcode/mips.h index 9dab620..5c3ddfc 100644 --- a/include/opcode/mips.h +++ b/include/opcode/mips.h @@ -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 --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 5918252..52845fa 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,8 @@ +2003-11-18 Maciej W. Rozycki + + * mips-opc.c (mips_builtin_opcodes): Handle new macros: "lca" and + "dlca". + 2003-11-14 Nick Clifton * dis-init.c (init_disassemble_info): Initialise diff --git a/opcodes/mips-opc.c b/opcodes/mips-opc.c index 340a084..9a80e53 100644 --- a/opcodes/mips-opc.c +++ b/opcodes/mips-opc.c @@ -517,6 +517,7 @@ const struct mips_opcode mips_builtin_opcodes[] = {"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_opcodes[] = {"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 }, -- cgit v1.1