This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


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

[committed] MIPS16/GAS: Fix absolute references with PC-relative synthetic instructions


Complement commit 88a7ef168927 ("MIPS16/GAS: Restore unsupported 
relocation diagnostics") and also propagate constant expressions, either 
already reduced from absolute symbol references or created from literals 
in the first place, used as a PC-relative operand with the MIPS16 LA, 
LW, DLA and LD synthetic instructions to relaxation, matching the way 
forward absolute symbol references have been handled as from the commit 
referred and letting relaxation produce any necessary relocations, if 
possible, for the absolute value requested to be reproduced at the run 
time.

Call `symbol_append' for any expression symbol created for the purpose 
of MIPS16 relaxation as with constant expressions now propagated from 
earlier on such symbols may make it through and have R_MIPS16_PC16_S1 
relocations emitted against, and therefore need to appear in the symbol 
table produced.

	gas/
	* config/tc-mips.c (append_insn): Call `symbol_append' for any
	expression symbol created for MIPS16 relaxation.
	(match_mips16_insn): Don't encode a constant value as an 
	immediate with a PC-relative operand.

	* testsuite/gas/mips/mips16-pcrel-absolute-1.d: New test.
	* testsuite/gas/mips/mips16-branch-absolute-1.d: New test.
	* testsuite/gas/mips/mips16-branch-absolute-2.d: New test.
	* testsuite/gas/mips/mips16-branch-absolute-addend-1.d: New 
	test.
	* testsuite/gas/mips/mips16-branch-absolute-n32-1.d: New test.
	* testsuite/gas/mips/mips16-branch-absolute-n32-2.d: New test.
	* testsuite/gas/mips/mips16-branch-absolute-addend-n32-1.d: New 
	test.
	* testsuite/gas/mips/mips16-branch-absolute-n64-1.d: New test.
	* testsuite/gas/mips/mips16-branch-absolute-n64-2.d: New test.
	* testsuite/gas/mips/mips16-branch-absolute-addend-n64-1.d: New 
	test.
	* testsuite/gas/mips/mips16-pcrel-absolute-1.l: New stderr 
	output.
	* testsuite/gas/mips/mips16-pcrel-absolute-1.s: New test source.
	* testsuite/gas/mips/mips16-branch-absolute-1.s: New test 
	source.
	* testsuite/gas/mips/mips16-branch-absolute-2.s: New test 
	source.
	* testsuite/gas/mips/mips16-branch-absolute-addend-1.s: New test 
	source.
	* testsuite/gas/mips/mips.exp: Run the new tests.

	ld/
	* testsuite/ld-mips-elf/mips16-branch-absolute-1.d: New test.
	* testsuite/ld-mips-elf/mips16-branch-absolute-2.d: New test.
	* testsuite/ld-mips-elf/mips16-branch-absolute-addend-1.d: New 
	test.
	* testsuite/ld-mips-elf/mips16-branch-absolute-n32-1.d: New 
	test.
	* testsuite/ld-mips-elf/mips16-branch-absolute-n32-2.d: New 
	test.
	* testsuite/ld-mips-elf/mips16-branch-absolute-addend-n32-1.d: 
	New test.
	* testsuite/ld-mips-elf/mips16-branch-absolute-n64-1.d: New 
	test.
	* testsuite/ld-mips-elf/mips16-branch-absolute-n64-2.d: New 
	test.
	* testsuite/ld-mips-elf/mips16-branch-absolute-addend-n64-1.d: 
	New test.
	* testsuite/ld-mips-elf/mips-elf.exp: Run the new tests.
---
 We still have an inconsistency here between literal or regular absolute 
symbol references and forward absolute symbol references.  Both literals 
and regular absolute symbol references are converted to constant 
expressions earlier on and therefore a new auxiliary absolute symbol has 
to be produced if linker relocation is required.  OTOH forward symbol 
references retain the original symbol, which is then used for relocation.

 Consequently the symbol table and relocations produced are different 
depending on where in the source assembly code the relevant absolute 
symbol definitions and references are located with respect to each other. 
This does not affect run-time evaluation, covered with the linker tests 
added here, and threfore I consider it a minor issue.

 Retaining original symbols with regular references would require a 
modification to `my_getExpression' such that no conversion to a constant 
is made at this stage, perhaps via a new mode for `expr', and yet literals 
would still require a new auxiliary absolute symbol each.  It may not be 
worth the effort for such a border case.

 I may yet look into the issue of all symbols made with `make_expr_symbol' 
getting the same name of FAKE_LABEL_NAME assigned, which causes a minor 
inconvenience in examining relocations with tools like `objdump' that show 
symbol names rather than indices in dumps (use `readelf' to get at indices 
too).  This is however no different to symbols created with `.' location 
pointer references, which can also make it through to relocations, so this 
is not a new problem and therefore I don't think it requires an immediate 
action.

 Change committed now, with the usual regression testing completed.

  Maciej

binutils-mips16-gas-pcrel-absolute.diff
Index: binutils/gas/config/tc-mips.c
===================================================================
--- binutils.orig/gas/config/tc-mips.c	2017-05-01 22:58:45.440584513 +0100
+++ binutils/gas/config/tc-mips.c	2017-05-01 23:37:40.448983994 +0100
@@ -7419,6 +7419,7 @@ append_insn (struct mips_cl_insn *ip, ex
       else
 	{
 	  symbol = make_expr_symbol (address_expr);
+	  symbol_append (symbol, symbol_lastP, &symbol_rootP, &symbol_lastP);
 	  offset = 0;
 	}
       add_relaxed_insn (ip, 4, 0,
@@ -8087,6 +8088,7 @@ match_mips16_insn (struct mips_cl_insn *
   const char *args;
   const struct mips_operand *operand;
   const struct mips_operand *ext_operand;
+  bfd_boolean pcrel = FALSE;
   int required_insn_length;
   struct mips_arg_info arg;
   int relax_char;
@@ -8148,6 +8150,7 @@ match_mips16_insn (struct mips_cl_insn *
 	    }
 	  else if (relax_char
 		   && offset_expr.X_op == O_constant
+		   && !pcrel
 		   && calculate_reloc (*offset_reloc,
 				       offset_expr.X_add_number,
 				       &value))
@@ -8216,7 +8219,9 @@ match_mips16_insn (struct mips_cl_insn *
       if (!operand)
 	abort ();
 
-      if (operand->type != OP_PCREL)
+      if (operand->type == OP_PCREL)
+	pcrel = TRUE;
+      else
 	{
 	  ext_operand = decode_mips16_operand (c, TRUE);
 	  if (operand != ext_operand)
Index: binutils/gas/testsuite/gas/mips/mips.exp
===================================================================
--- binutils.orig/gas/testsuite/gas/mips/mips.exp	2017-05-01 22:58:44.981273484 +0100
+++ binutils/gas/testsuite/gas/mips/mips.exp	2017-05-01 23:37:50.445631657 +0100
@@ -1544,6 +1544,7 @@ if { [istarget mips*-*-vxworks*] } {
     run_dump_test "mips16-pcrel-addend-2"
     run_dump_test "mips16-pcrel-addend-3"
     run_dump_test "mips16-pcrel-absolute"
+    run_dump_test "mips16-pcrel-absolute-1"
     run_dump_test "mips16-branch-reloc-0"
     run_dump_test "mips16-branch-reloc-1"
     run_dump_test "mips16-branch-reloc-2"
@@ -1555,12 +1556,21 @@ if { [istarget mips*-*-vxworks*] } {
     run_dump_test "mips16-branch-addend-4"
     run_dump_test "mips16-branch-addend-5"
     run_dump_test "mips16-branch-absolute"
+    run_dump_test "mips16-branch-absolute-1"
+    run_dump_test "mips16-branch-absolute-2"
     run_dump_test "mips16-branch-absolute-addend"
+    run_dump_test "mips16-branch-absolute-addend-1"
     if $has_newabi {
 	run_dump_test "mips16-branch-absolute-n32"
+	run_dump_test "mips16-branch-absolute-n32-1"
+	run_dump_test "mips16-branch-absolute-n32-2"
 	run_dump_test "mips16-branch-absolute-addend-n32"
+	run_dump_test "mips16-branch-absolute-addend-n32-1"
 	run_dump_test "mips16-branch-absolute-n64"
+	run_dump_test "mips16-branch-absolute-n64-1"
+	run_dump_test "mips16-branch-absolute-n64-2"
 	run_dump_test "mips16-branch-absolute-addend-n64"
+	run_dump_test "mips16-branch-absolute-addend-n64-1"
     }
     run_dump_test "mips16-absolute-reloc-0"
     run_dump_test "mips16-absolute-reloc-1"
Index: binutils/gas/testsuite/gas/mips/mips16-branch-absolute-1.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/gas/testsuite/gas/mips/mips16-branch-absolute-1.d	2017-05-01 23:37:50.457739514 +0100
@@ -0,0 +1,20 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS16 branch to absolute expression 1
+#as: -32
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+	\.\.\.
+[0-9a-f]+ <[^>]*> f7ff 101e 	b	00001000 <foo>
+[ 	]*[0-9a-f]+: R_MIPS16_PC16_S1	L0\001
+[0-9a-f]+ <[^>]*> f7ff 601e 	bteqz	00001004 <foo\+0x4>
+[ 	]*[0-9a-f]+: R_MIPS16_PC16_S1	L0\001
+[0-9a-f]+ <[^>]*> f7ff 611e 	btnez	00001008 <foo\+0x8>
+[ 	]*[0-9a-f]+: R_MIPS16_PC16_S1	L0\001
+[0-9a-f]+ <[^>]*> f7ff 221e 	beqz	v0,0000100c <foo\+0xc>
+[ 	]*[0-9a-f]+: R_MIPS16_PC16_S1	L0\001
+[0-9a-f]+ <[^>]*> f7ff 2a1e 	bnez	v0,00001010 <foo\+0x10>
+[ 	]*[0-9a-f]+: R_MIPS16_PC16_S1	L0\001
+[0-9a-f]+ <[^>]*> 6500      	nop
+	\.\.\.
Index: binutils/gas/testsuite/gas/mips/mips16-branch-absolute-1.s
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/gas/testsuite/gas/mips/mips16-branch-absolute-1.s	2017-05-01 23:37:50.483040875 +0100
@@ -0,0 +1,22 @@
+	.text
+
+	.space	0x1000
+
+	.set	bar, 0x1235
+
+	.globl	foo
+	.ent	foo
+	.set	mips16
+foo:
+	b	bar
+	bteqz	bar
+	btnez	bar
+	beqz	$2, bar
+	bnez	$2, bar
+	nop
+	.set	nomips16
+	.end	foo
+
+# Force some (non-delay-slot) zero bytes, to make 'objdump' print ...
+	.align	4, 0
+	.space	16
Index: binutils/gas/testsuite/gas/mips/mips16-branch-absolute-2.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/gas/testsuite/gas/mips/mips16-branch-absolute-2.d	2017-05-01 23:37:50.500205059 +0100
@@ -0,0 +1,4 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS16 branch to absolute expression 2
+#as: -32
+#dump: mips16-branch-absolute-1.d
Index: binutils/gas/testsuite/gas/mips/mips16-branch-absolute-2.s
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/gas/testsuite/gas/mips/mips16-branch-absolute-2.s	2017-05-01 23:37:50.511280627 +0100
@@ -0,0 +1,20 @@
+	.text
+
+	.space	0x1000
+
+	.globl	foo
+	.ent	foo
+	.set	mips16
+foo:
+	b	0x1235
+	bteqz	0x1235
+	btnez	0x1235
+	beqz	$2, 0x1235
+	bnez	$2, 0x1235
+	nop
+	.set	nomips16
+	.end	foo
+
+# Force some (non-delay-slot) zero bytes, to make 'objdump' print ...
+	.align	4, 0
+	.space	16
Index: binutils/gas/testsuite/gas/mips/mips16-branch-absolute-addend-1.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/gas/testsuite/gas/mips/mips16-branch-absolute-addend-1.d	2017-05-01 23:37:50.535444868 +0100
@@ -0,0 +1,4 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS16 branch to absolute expression with addend 1
+#as: -32
+#dump: mips16-branch-absolute-1.d
Index: binutils/gas/testsuite/gas/mips/mips16-branch-absolute-addend-1.s
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/gas/testsuite/gas/mips/mips16-branch-absolute-addend-1.s	2017-05-01 23:37:50.555584595 +0100
@@ -0,0 +1,22 @@
+	.text
+
+	.space	0x1000
+
+	.set	bar, 0x12345679
+
+	.globl	foo
+	.ent	foo
+	.set	mips16
+foo:
+	b	bar + 0x1234
+	bteqz	bar + 0x1234
+	btnez	bar + 0x1234
+	beqz	$2, bar + 0x1234
+	bnez	$2, bar + 0x1234
+	nop
+	.set	nomips16
+	.end	foo
+
+# Force some (non-delay-slot) zero bytes, to make 'objdump' print ...
+	.align	4, 0
+	.space	16
Index: binutils/gas/testsuite/gas/mips/mips16-branch-absolute-addend-n32-1.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/gas/testsuite/gas/mips/mips16-branch-absolute-addend-n32-1.d	2017-05-01 23:37:50.582830051 +0100
@@ -0,0 +1,5 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS16 branch to absolute expression with addend 1 (n32)
+#as: -n32 -march=from-abi
+#source: mips16-branch-absolute-addend-1.s
+#dump: mips16-branch-absolute-addend-n32.d
Index: binutils/gas/testsuite/gas/mips/mips16-branch-absolute-addend-n64-1.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/gas/testsuite/gas/mips/mips16-branch-absolute-addend-n64-1.d	2017-05-01 23:37:50.606973541 +0100
@@ -0,0 +1,5 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS16 branch to absolute expression with addend 1 (n64)
+#as: -64 -march=from-abi
+#source: mips16-branch-absolute-addend-1.s
+#dump: mips16-branch-absolute-addend-n64.d
Index: binutils/gas/testsuite/gas/mips/mips16-branch-absolute-n32-1.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/gas/testsuite/gas/mips/mips16-branch-absolute-n32-1.d	2017-05-01 23:37:50.638326851 +0100
@@ -0,0 +1,5 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS16 branch to absolute expression 1 (n32)
+#as: -n32 -march=from-abi
+#source: mips16-branch-absolute-1.s
+#dump: mips16-branch-absolute-n32.d
Index: binutils/gas/testsuite/gas/mips/mips16-branch-absolute-n32-2.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/gas/testsuite/gas/mips/mips16-branch-absolute-n32-2.d	2017-05-01 23:37:50.662506098 +0100
@@ -0,0 +1,5 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS16 branch to absolute expression 2 (n32)
+#as: -n32 -march=from-abi
+#source: mips16-branch-absolute-2.s
+#dump: mips16-branch-absolute-n32.d
Index: binutils/gas/testsuite/gas/mips/mips16-branch-absolute-n64-1.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/gas/testsuite/gas/mips/mips16-branch-absolute-n64-1.d	2017-05-01 23:37:50.681715748 +0100
@@ -0,0 +1,5 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS16 branch to absolute expression 1 (n64)
+#as: -64 -march=from-abi
+#source: mips16-branch-absolute-1.s
+#dump: mips16-branch-absolute-n64.d
Index: binutils/gas/testsuite/gas/mips/mips16-branch-absolute-n64-2.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/gas/testsuite/gas/mips/mips16-branch-absolute-n64-2.d	2017-05-01 23:37:50.702929027 +0100
@@ -0,0 +1,5 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS16 branch to absolute expression 2 (n64)
+#as: -64 -march=from-abi
+#source: mips16-branch-absolute-2.s
+#dump: mips16-branch-absolute-n64.d
Index: binutils/gas/testsuite/gas/mips/mips16-pcrel-absolute-1.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/gas/testsuite/gas/mips/mips16-pcrel-absolute-1.d	2017-05-01 23:37:50.741100471 +0100
@@ -0,0 +1,3 @@
+#name: MIPS16 PC-relative reference to absolute expression 1
+#as: -32
+#error-output: mips16-pcrel-absolute-1.l
Index: binutils/gas/testsuite/gas/mips/mips16-pcrel-absolute-1.l
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/gas/testsuite/gas/mips/mips16-pcrel-absolute-1.l	2017-05-01 23:37:50.759282221 +0100
@@ -0,0 +1,3 @@
+.*: Assembler messages:
+.*:10: Error: unsupported relocation
+.*:11: Error: unsupported relocation
Index: binutils/gas/testsuite/gas/mips/mips16-pcrel-absolute-1.s
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/gas/testsuite/gas/mips/mips16-pcrel-absolute-1.s	2017-05-01 23:37:50.984178297 +0100
@@ -0,0 +1,18 @@
+	.text
+
+	.space	0x1000
+
+	.set	bar, 0x1234
+
+	.ent	foo
+	.set	mips16
+foo:
+	la	$2, bar
+	lw	$2, bar
+	nop
+	.set	nomips16
+	.end	foo
+
+# Force some (non-delay-slot) zero bytes, to make 'objdump' print ...
+	.align	4, 0
+	.space	16
Index: binutils/ld/testsuite/ld-mips-elf/mips-elf.exp
===================================================================
--- binutils.orig/ld/testsuite/ld-mips-elf/mips-elf.exp	2017-05-01 22:58:45.128647391 +0100
+++ binutils/ld/testsuite/ld-mips-elf/mips-elf.exp	2017-05-01 23:37:51.405673041 +0100
@@ -159,17 +159,33 @@ run_dump_test "mips16-branch-3" [list [l
 run_dump_test "mips16-branch-addend-2" [list [list ld $abi_ldflags(o32)]]
 run_dump_test "mips16-branch-addend-3" [list [list ld $abi_ldflags(o32)]]
 run_dump_test "mips16-branch-absolute" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "mips16-branch-absolute-1" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "mips16-branch-absolute-2" [list [list ld $abi_ldflags(o32)]]
 run_dump_test "mips16-branch-absolute-addend" \
 					[list [list ld $abi_ldflags(o32)]]
+run_dump_test "mips16-branch-absolute-addend-1" \
+					[list [list ld $abi_ldflags(o32)]]
 if $has_newabi {
     run_dump_test "mips16-branch-absolute-n32" \
 					[list [list ld $abi_ldflags(n32)]]
+    run_dump_test "mips16-branch-absolute-n32-1" \
+					[list [list ld $abi_ldflags(n32)]]
+    run_dump_test "mips16-branch-absolute-n32-2" \
+					[list [list ld $abi_ldflags(n32)]]
     run_dump_test "mips16-branch-absolute-addend-n32" \
 					[list [list ld $abi_ldflags(n32)]]
+    run_dump_test "mips16-branch-absolute-addend-n32-1" \
+					[list [list ld $abi_ldflags(n32)]]
     run_dump_test "mips16-branch-absolute-n64" \
 					[list [list ld $abi_ldflags(n64)]]
+    run_dump_test "mips16-branch-absolute-n64-1" \
+					[list [list ld $abi_ldflags(n64)]]
+    run_dump_test "mips16-branch-absolute-n64-2" \
+					[list [list ld $abi_ldflags(n64)]]
     run_dump_test "mips16-branch-absolute-addend-n64" \
 					[list [list ld $abi_ldflags(n64)]]
+    run_dump_test "mips16-branch-absolute-addend-n64-1" \
+					[list [list ld $abi_ldflags(n64)]]
 }
 
 run_dump_test "micromips-branch-absolute" [list [list ld $abi_ldflags(o32)]]
Index: binutils/ld/testsuite/ld-mips-elf/mips16-branch-absolute-1.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/mips16-branch-absolute-1.d	2017-05-01 23:37:51.428103195 +0100
@@ -0,0 +1,6 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS16 link branch to absolute expression 1
+#source: ../../../gas/testsuite/gas/mips/mips16-branch-absolute-1.s
+#as: -EB -32
+#ld: -EB -Ttext 0 -e foo
+#dump: mips16-branch-absolute.d
Index: binutils/ld/testsuite/ld-mips-elf/mips16-branch-absolute-2.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/mips16-branch-absolute-2.d	2017-05-01 23:37:51.603374968 +0100
@@ -0,0 +1,6 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS16 link branch to absolute expression 2
+#source: ../../../gas/testsuite/gas/mips/mips16-branch-absolute-2.s
+#as: -EB -32
+#ld: -EB -Ttext 0 -e foo
+#dump: mips16-branch-absolute.d
Index: binutils/ld/testsuite/ld-mips-elf/mips16-branch-absolute-addend-1.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/mips16-branch-absolute-addend-1.d	2017-05-01 23:37:51.616485296 +0100
@@ -0,0 +1,6 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS16 link branch to absolute expression with addend 1
+#source: ../../../gas/testsuite/gas/mips/mips16-branch-absolute-addend-1.s
+#as: -EB -32
+#ld: -EB -Ttext 0x12340000 -e foo
+#dump: mips16-branch-absolute-addend.d
Index: binutils/ld/testsuite/ld-mips-elf/mips16-branch-absolute-addend-n32-1.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/mips16-branch-absolute-addend-n32-1.d	2017-05-01 23:37:51.623542873 +0100
@@ -0,0 +1,6 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS16 link branch to absolute expression with addend 1 (n32)
+#source: ../../../gas/testsuite/gas/mips/mips16-branch-absolute-addend-1.s
+#as: -EB -n32 -march=from-abi
+#ld: -EB -Ttext 0x12340000 -e foo
+#dump: mips16-branch-absolute-addend.d
Index: binutils/ld/testsuite/ld-mips-elf/mips16-branch-absolute-addend-n64-1.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/mips16-branch-absolute-addend-n64-1.d	2017-05-01 23:37:51.655853254 +0100
@@ -0,0 +1,6 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS16 link branch to absolute expression with addend 1 (n64)
+#source: ../../../gas/testsuite/gas/mips/mips16-branch-absolute-addend-1.s
+#as: -EB -64 -march=from-abi
+#ld: -EB -Ttext 0x12340000 -e foo
+#dump: mips16-branch-absolute-addend.d
Index: binutils/ld/testsuite/ld-mips-elf/mips16-branch-absolute-n32-1.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/mips16-branch-absolute-n32-1.d	2017-05-01 23:37:51.677990142 +0100
@@ -0,0 +1,6 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS16 link branch to absolute expression 1 (n32)
+#source: ../../../gas/testsuite/gas/mips/mips16-branch-absolute-1.s
+#as: -EB -n32 -march=from-abi
+#ld: -EB -Ttext 0 -e foo
+#dump: mips16-branch-absolute.d
Index: binutils/ld/testsuite/ld-mips-elf/mips16-branch-absolute-n32-2.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/mips16-branch-absolute-n32-2.d	2017-05-01 23:37:51.752908493 +0100
@@ -0,0 +1,6 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS16 link branch to absolute expression 2 (n32)
+#source: ../../../gas/testsuite/gas/mips/mips16-branch-absolute-2.s
+#as: -EB -n32 -march=from-abi
+#ld: -EB -Ttext 0 -e foo
+#dump: mips16-branch-absolute.d
Index: binutils/ld/testsuite/ld-mips-elf/mips16-branch-absolute-n64-1.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/mips16-branch-absolute-n64-1.d	2017-05-01 23:37:51.771115033 +0100
@@ -0,0 +1,6 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS16 link branch to absolute expression 1 (n64)
+#source: ../../../gas/testsuite/gas/mips/mips16-branch-absolute-1.s
+#as: -EB -64 -march=from-abi
+#ld: -EB -Ttext 0 -e foo
+#dump: mips16-branch-absolute.d
Index: binutils/ld/testsuite/ld-mips-elf/mips16-branch-absolute-n64-2.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/mips16-branch-absolute-n64-2.d	2017-05-01 23:37:51.786325964 +0100
@@ -0,0 +1,6 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: MIPS16 link branch to absolute expression 2 (n64)
+#source: ../../../gas/testsuite/gas/mips/mips16-branch-absolute-2.s
+#as: -EB -64 -march=from-abi
+#ld: -EB -Ttext 0 -e foo
+#dump: mips16-branch-absolute.d


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