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] MIPS/BFD: Report `bfd_reloc_outofrange' errors as such


A `bfd_reloc_outofrange' condition from `mips_elf_calculate_relocation' 
currently triggers the warning callback, which in the case of LD prints 
messages like:

foo.o: In function `foo':
(.text+0x0): warning: JALX to a non-word-aligned address

or:

foo.o: In function `foo':
(.text+0x0): warning: PC-relative load from unaligned address

and nothing else, which suggests this is a benign condition and link has 
otherwise successfully run to completion.  This is however not the case, 
the link terminates right away with no further messages and no output 
produced.

Use the general error or warning info callback then, preserving the 
message format.  Also set a BFD error condition so that a failure is 
unambiguously reported.  Complement the change with a set of suitable 
test suite additions.

	bfd/
	* elfxx-mips.c (_bfd_mips_elf_relocate_section) 
	<bfd_reloc_outofrange>: Call `->einfo' rather than `->warning'.
	Call `bfd_set_error'.

	ld/
	* testsuite/ld-mips-elf/unaligned-jalx-0.d: New test.
	* testsuite/ld-mips-elf/unaligned-jalx-1.d: New test.
	* testsuite/ld-mips-elf/unaligned-jalx-2.d: New test.
	* testsuite/ld-mips-elf/unaligned-jalx-mips16-0.d: New test.
	* testsuite/ld-mips-elf/unaligned-jalx-mips16-1.d: New test.
	* testsuite/ld-mips-elf/unaligned-jalx-mips16-2.d: New test.
	* testsuite/ld-mips-elf/unaligned-jalx-micromips-0.d: New test.
	* testsuite/ld-mips-elf/unaligned-jalx-micromips-1.d: New test.
	* testsuite/ld-mips-elf/unaligned-jalx-micromips-2.d: New test.
	* testsuite/ld-mips-elf/unaligned-lwpc-0.d: New test.
	* testsuite/ld-mips-elf/unaligned-lwpc-1.d: New test.
	* testsuite/ld-mips-elf/unaligned-lwpc-2.d: New test.
	* testsuite/ld-mips-elf/unaligned-lwpc-3.d: New test.
	* testsuite/ld-mips-elf/unaligned-ldpc-0.d: New test.
	* testsuite/ld-mips-elf/unaligned-ldpc-1.d: New test.
	* testsuite/ld-mips-elf/unaligned-ldpc-2.d: New test.
	* testsuite/ld-mips-elf/unaligned-ldpc-3.d: New test.
	* testsuite/ld-mips-elf/unaligned-ldpc-4.d: New test.
	* testsuite/ld-mips-elf/unaligned-jalx-0.s: New test source.
	* testsuite/ld-mips-elf/unaligned-jalx-1.s: New test source.
	* testsuite/ld-mips-elf/unaligned-jalx-2.s: New test source.
	* testsuite/ld-mips-elf/unaligned-insn.s: New test source.
	* testsuite/ld-mips-elf/unaligned-lwpc-0.s: New test source.
	* testsuite/ld-mips-elf/unaligned-lwpc-1.s: New test source.
	* testsuite/ld-mips-elf/unaligned-lwpc-2.s: New test source.
	* testsuite/ld-mips-elf/unaligned-lwpc-3.s: New test source.
	* testsuite/ld-mips-elf/unaligned-ldpc-0.s: New test source.
	* testsuite/ld-mips-elf/unaligned-ldpc-1.s: New test source.
	* testsuite/ld-mips-elf/unaligned-ldpc-2.s: New test source.
	* testsuite/ld-mips-elf/unaligned-ldpc-3.s: New test source.
	* testsuite/ld-mips-elf/unaligned-ldpc-4.s: New test source.
	* testsuite/ld-mips-elf/unaligned-syms.s: New test source.
	* testsuite/ld-mips-elf/mips-elf.exp: Run the new tests.
---
 I have committed this change.

  Maciej

binutils-mips-bfd-reloc-range-msg-error.diff
Index: binutils/bfd/elfxx-mips.c
===================================================================
--- binutils.orig/bfd/elfxx-mips.c	2016-05-25 08:35:58.000000000 +0100
+++ binutils/bfd/elfxx-mips.c	2016-05-25 18:48:24.627517918 +0100
@@ -10266,8 +10266,9 @@ _bfd_mips_elf_relocate_section (bfd *out
 	    msg = _("PC-relative load from unaligned address");
 	  if (msg)
 	    {
-	      info->callbacks->warning
-		(info, msg, name, input_bfd, input_section, rel->r_offset);
+	      info->callbacks->einfo
+		("%C: %s\n", input_bfd, input_section, rel->r_offset, msg);
+	      bfd_set_error (bfd_error_bad_value);
 	      return FALSE;
 	    }
 	  /* Fall through.  */
Index: binutils/ld/testsuite/ld-mips-elf/mips-elf.exp
===================================================================
--- binutils.orig/ld/testsuite/ld-mips-elf/mips-elf.exp	2016-05-25 18:30:58.669590733 +0100
+++ binutils/ld/testsuite/ld-mips-elf/mips-elf.exp	2016-05-25 18:31:07.973619180 +0100
@@ -177,6 +177,26 @@ if $has_newabi {
     run_dump_test "jalx-local-n64" [list [list ld $abi_ldflags(n64)]]
 }
 
+run_dump_test "unaligned-jalx-0" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-jalx-1" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-jalx-2" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-jalx-mips16-0" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-jalx-mips16-1" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-jalx-mips16-2" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-jalx-micromips-0" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-jalx-micromips-1" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-jalx-micromips-2" [list [list ld $abi_ldflags(o32)]]
+
+run_dump_test "unaligned-lwpc-0" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-lwpc-1" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-lwpc-2" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-lwpc-3" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-ldpc-0" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-ldpc-1" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-ldpc-2" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-ldpc-3" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-ldpc-4" [list [list ld $abi_ldflags(o32)]]
+
 # Test multi-got link.  We only do this on GNU/Linux because it requires
 # the "traditional" emulations.
 if { $linux_gnu } {
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-insn.s
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-insn.s	2016-05-25 19:55:32.224172164 +0100
@@ -0,0 +1,15 @@
+	.macro	sym n:req
+	.if	\n
+	.globl	bar\@
+	.type	bar\@, @function
+bar\@ :
+	.insn
+	.hword	0
+	.size	bar\@, . - bar\@
+	sym	\n - 1
+	.endif
+	.endm
+
+	.text
+	.align	4
+	sym	8
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-0.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-0.d	2016-05-25 18:31:08.009639577 +0100
@@ -0,0 +1,21 @@
+#name: MIPS JALX to unaligned symbol 0
+#source: unaligned-jalx-0.s
+#source: unaligned-insn.s -mips16
+#as: -EB -32
+#ld: -EB -Ttext 0x1c000000 -e 0x1c000000
+#objdump: -dr --prefix-addresses --show-raw-insn
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> 77000008 	jalx	1c000020 <bar0>
+[0-9a-f]+ <[^>]*> 00000000 	nop
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-0.s
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-0.s	2016-05-25 18:31:08.023947573 +0100
@@ -0,0 +1,11 @@
+	.text
+	.align	4
+	.globl	foo
+	.ent	foo
+foo:
+	jal	bar0
+	.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/unaligned-jalx-1.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-1.d	2016-05-25 18:31:08.035209717 +0100
@@ -0,0 +1,8 @@
+#name: MIPS JALX to unaligned symbol 1
+#source: unaligned-jalx-1.s
+#source: unaligned-insn.s -mips16
+#as: -EB -32
+#ld: -EB -Ttext 0x1c000000 -e 0x1c000000
+#error: \A[^\n]*: In function `foo':\n
+#error:   \(\.text\+0x[0-9a-f]+\): JALX to a non-word-aligned address\n
+#error:   [^\n]*: final link failed: Bad value\Z
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-1.s
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-1.s	2016-05-25 18:31:08.055748934 +0100
@@ -0,0 +1,11 @@
+	.text
+	.align	4
+	.globl	foo
+	.ent	foo
+foo:
+	jal	bar1
+	.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/unaligned-jalx-2.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-2.d	2016-05-25 18:31:08.072021346 +0100
@@ -0,0 +1,21 @@
+#name: MIPS JALX to unaligned symbol 2
+#source: unaligned-jalx-2.s
+#source: unaligned-insn.s -mips16
+#as: -EB -32
+#ld: -EB -Ttext 0x1c000000 -e 0x1c000000
+#objdump: -dr --prefix-addresses --show-raw-insn
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> 77000009 	jalx	1c000024 <bar2>
+[0-9a-f]+ <[^>]*> 00000000 	nop
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-2.s
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-2.s	2016-05-25 18:31:08.087642584 +0100
@@ -0,0 +1,11 @@
+	.text
+	.align	4
+	.globl	foo
+	.ent	foo
+foo:
+	jal	bar2
+	.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/unaligned-jalx-micromips-0.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-0.d	2016-05-25 18:31:08.111098363 +0100
@@ -0,0 +1,21 @@
+#name: microMIPS JALX to unaligned symbol 0
+#source: unaligned-jalx-0.s -mmicromips
+#source: unaligned-insn.s
+#as: -EB -32
+#ld: -EB -Ttext 0x1c000000 -e 0x1c000000
+#objdump: -dr --prefix-addresses --show-raw-insn
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> f300 0008 	jalx	1c000020 <bar0>
+[0-9a-f]+ <[^>]*> 0000 0000 	nop
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-1.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-1.d	2016-05-25 18:31:08.135692119 +0100
@@ -0,0 +1,8 @@
+#name: microMIPS JALX to unaligned symbol 1
+#source: unaligned-jalx-1.s -mmicromips
+#source: unaligned-insn.s
+#as: -EB -32
+#ld: -EB -Ttext 0x1c000000 -e 0x1c000000
+#error: \A[^\n]*: In function `foo':\n
+#error:   \(\.text\+0x[0-9a-f]+\): JALX to a non-word-aligned address\n
+#error:   [^\n]*: final link failed: Bad value\Z
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-2.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-2.d	2016-05-25 18:31:08.142974951 +0100
@@ -0,0 +1,21 @@
+#name: microMIPS JALX to unaligned symbol 2
+#source: unaligned-jalx-2.s -mmicromips
+#source: unaligned-insn.s
+#as: -EB -32
+#ld: -EB -Ttext 0x1c000000 -e 0x1c000000
+#objdump: -dr --prefix-addresses --show-raw-insn
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> f300 0009 	jalx	1c000024 <bar2>
+[0-9a-f]+ <[^>]*> 0000 0000 	nop
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-0.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-0.d	2016-05-25 18:31:08.172851014 +0100
@@ -0,0 +1,21 @@
+#name: MIPS16 JALX to unaligned symbol 0
+#source: unaligned-jalx-0.s -mips16
+#source: unaligned-insn.s
+#as: -EB -32
+#ld: -EB -Ttext 0x1c000000 -e 0x1c000000
+#objdump: -dr --prefix-addresses --show-raw-insn
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> 1c18 0008 	jalx	1c000020 <bar0>
+[0-9a-f]+ <[^>]*> 6500      	nop
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-1.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-1.d	2016-05-25 18:31:08.195446296 +0100
@@ -0,0 +1,8 @@
+#name: MIPS16 JALX to unaligned symbol 1
+#source: unaligned-jalx-1.s -mips16
+#source: unaligned-insn.s
+#as: -EB -32
+#ld: -EB -Ttext 0x1c000000 -e 0x1c000000
+#error: \A[^\n]*: In function `foo':\n
+#error:   \(\.text\+0x[0-9a-f]+\): JALX to a non-word-aligned address\n
+#error:   [^\n]*: final link failed: Bad value\Z
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-2.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-2.d	2016-05-25 18:31:08.218986838 +0100
@@ -0,0 +1,21 @@
+#name: MIPS16 JALX to unaligned symbol 2
+#source: unaligned-jalx-2.s -mips16
+#source: unaligned-insn.s
+#as: -EB -32
+#ld: -EB -Ttext 0x1c000000 -e 0x1c000000
+#objdump: -dr --prefix-addresses --show-raw-insn
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> 1c18 0009 	jalx	1c000024 <bar2>
+[0-9a-f]+ <[^>]*> 6500      	nop
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
+	\.\.\.
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-ldpc-0.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-ldpc-0.d	2016-05-25 18:31:08.233436955 +0100
@@ -0,0 +1,12 @@
+#name: MIPS LDPC from unaligned symbol 0
+#source: unaligned-ldpc-0.s
+#source: unaligned-syms.s
+#as: -EB -32 -mips64r6
+#ld: -EB -Ttext 0x1c000000 -Tdata 0x1c080000 -e 0x1c000000
+#objdump: -dr --prefix-addresses --show-raw-insn
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> ec590004 	ldpc	v0,1c080020 <bar0>
+	\.\.\.
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-ldpc-0.s
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-ldpc-0.s	2016-05-25 18:31:08.250735806 +0100
@@ -0,0 +1,11 @@
+	.text
+	.align	4
+	.globl	foo
+	.ent	foo
+foo:
+	ldpc	$2, bar0
+	.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/unaligned-ldpc-1.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-ldpc-1.d	2016-05-25 18:31:08.273245946 +0100
@@ -0,0 +1,8 @@
+#name: MIPS LDPC from unaligned symbol 1
+#source: unaligned-ldpc-1.s
+#source: unaligned-syms.s
+#as: -EB -32 -mips64r6
+#ld: -EB -Ttext 0x1c000000 -Tdata 0x1c080000 -e 0x1c000000
+#error: \A[^\n]*: In function `foo':\n
+#error:   \(\.text\+0x[0-9a-f]+\): PC-relative load from unaligned address\n
+#error:   [^\n]*: final link failed: Bad value\Z
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-ldpc-1.s
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-ldpc-1.s	2016-05-25 18:31:08.280406723 +0100
@@ -0,0 +1,11 @@
+	.text
+	.align	4
+	.globl	foo
+	.ent	foo
+foo:
+	ldpc	$2, bar1
+	.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/unaligned-ldpc-2.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-ldpc-2.d	2016-05-25 18:31:08.301891264 +0100
@@ -0,0 +1,8 @@
+#name: MIPS LDPC from unaligned symbol 2
+#source: unaligned-ldpc-2.s
+#source: unaligned-syms.s
+#as: -EB -32 -mips64r6
+#ld: -EB -Ttext 0x1c000000 -Tdata 0x1c080000 -e 0x1c000000
+#error: \A[^\n]*: In function `foo':\n
+#error:   \(\.text\+0x[0-9a-f]+\): PC-relative load from unaligned address\n
+#error:   [^\n]*: final link failed: Bad value\Z
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-ldpc-2.s
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-ldpc-2.s	2016-05-25 18:31:08.327533947 +0100
@@ -0,0 +1,11 @@
+	.text
+	.align	4
+	.globl	foo
+	.ent	foo
+foo:
+	ldpc	$2, bar2
+	.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/unaligned-ldpc-3.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-ldpc-3.d	2016-05-25 18:31:08.348920230 +0100
@@ -0,0 +1,8 @@
+#name: MIPS LDPC from unaligned symbol 3
+#source: unaligned-ldpc-3.s
+#source: unaligned-syms.s
+#as: -EB -32 -mips64r6
+#ld: -EB -Ttext 0x1c000000 -Tdata 0x1c080000 -e 0x1c000000
+#error: \A[^\n]*: In function `foo':\n
+#error:   \(\.text\+0x[0-9a-f]+\): PC-relative load from unaligned address\n
+#error:   [^\n]*: final link failed: Bad value\Z
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-ldpc-3.s
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-ldpc-3.s	2016-05-25 18:31:08.380569124 +0100
@@ -0,0 +1,11 @@
+	.text
+	.align	4
+	.globl	foo
+	.ent	foo
+foo:
+	ldpc	$2, bar4
+	.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/unaligned-ldpc-4.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-ldpc-4.d	2016-05-25 18:31:08.392877166 +0100
@@ -0,0 +1,12 @@
+#name: MIPS LDPC from unaligned symbol 4
+#source: unaligned-ldpc-4.s
+#source: unaligned-syms.s
+#as: -EB -32 -mips64r6
+#ld: -EB -Ttext 0x1c000000 -Tdata 0x1c080000 -e 0x1c000000
+#objdump: -dr --prefix-addresses --show-raw-insn
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> ec590005 	ldpc	v0,1c080028 <bar8>
+	\.\.\.
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-ldpc-4.s
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-ldpc-4.s	2016-05-25 18:31:08.405146888 +0100
@@ -0,0 +1,11 @@
+	.text
+	.align	4
+	.globl	foo
+	.ent	foo
+foo:
+	ldpc	$2, bar8
+	.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/unaligned-lwpc-0.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-lwpc-0.d	2016-05-25 18:31:08.425756818 +0100
@@ -0,0 +1,12 @@
+#name: MIPS LWPC from unaligned symbol 0
+#source: unaligned-lwpc-0.s
+#source: unaligned-syms.s
+#as: -EB -32 -mips32r6
+#ld: -EB -Ttext 0x1c000000 -Tdata 0x1c080000 -e 0x1c000000
+#objdump: -dr --prefix-addresses --show-raw-insn
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> ec4a0008 	lwpc	v0,1c080020 <bar0>
+	\.\.\.
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-lwpc-0.s
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-lwpc-0.s	2016-05-25 18:31:08.446292783 +0100
@@ -0,0 +1,11 @@
+	.text
+	.align	4
+	.globl	foo
+	.ent	foo
+foo:
+	lwpc	$2, bar0
+	.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/unaligned-lwpc-1.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-lwpc-1.d	2016-05-25 18:31:08.463678400 +0100
@@ -0,0 +1,8 @@
+#name: MIPS LWPC from unaligned symbol 1
+#source: unaligned-lwpc-1.s
+#source: unaligned-syms.s
+#as: -EB -32 -mips32r6
+#ld: -EB -Ttext 0x1c000000 -Tdata 0x1c080000 -e 0x1c000000
+#error: \A[^\n]*: In function `foo':\n
+#error:   \(\.text\+0x[0-9a-f]+\): PC-relative load from unaligned address\n
+#error:   [^\n]*: final link failed: Bad value\Z
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-lwpc-1.s
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-lwpc-1.s	2016-05-25 18:31:08.486173196 +0100
@@ -0,0 +1,11 @@
+	.text
+	.align	4
+	.globl	foo
+	.ent	foo
+foo:
+	lwpc	$2, bar1
+	.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/unaligned-lwpc-2.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-lwpc-2.d	2016-05-25 18:31:08.511759642 +0100
@@ -0,0 +1,8 @@
+#name: MIPS LWPC from unaligned symbol 2
+#source: unaligned-lwpc-2.s
+#source: unaligned-syms.s
+#as: -EB -32 -mips32r6
+#ld: -EB -Ttext 0x1c000000 -Tdata 0x1c080000 -e 0x1c000000
+#error: \A[^\n]*: In function `foo':\n
+#error:   \(\.text\+0x[0-9a-f]+\): PC-relative load from unaligned address\n
+#error:   [^\n]*: final link failed: Bad value\Z
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-lwpc-2.s
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-lwpc-2.s	2016-05-25 18:31:08.524943724 +0100
@@ -0,0 +1,11 @@
+	.text
+	.align	4
+	.globl	foo
+	.ent	foo
+foo:
+	lwpc	$2, bar2
+	.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/unaligned-lwpc-3.d
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-lwpc-3.d	2016-05-25 18:31:08.562952006 +0100
@@ -0,0 +1,12 @@
+#name: MIPS LWPC from unaligned symbol 3
+#source: unaligned-lwpc-3.s
+#source: unaligned-syms.s
+#as: -EB -32 -mips32r6
+#ld: -EB -Ttext 0x1c000000 -Tdata 0x1c080000 -e 0x1c000000
+#objdump: -dr --prefix-addresses --show-raw-insn
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text:
+[0-9a-f]+ <[^>]*> ec4a0009 	lwpc	v0,1c080024 <bar4>
+	\.\.\.
Index: binutils/ld/testsuite/ld-mips-elf/unaligned-lwpc-3.s
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-lwpc-3.s	2016-05-25 18:31:08.590606672 +0100
@@ -0,0 +1,11 @@
+	.text
+	.align	4
+	.globl	foo
+	.ent	foo
+foo:
+	lwpc	$2, bar4
+	.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/unaligned-syms.s
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ binutils/ld/testsuite/ld-mips-elf/unaligned-syms.s	2016-05-25 19:56:15.100884065 +0100
@@ -0,0 +1,15 @@
+	.macro	sym n:req
+	.if	\n
+	.globl	bar\@
+	.type	bar\@, @object
+bar\@ :
+	.byte	0
+	.size	bar\@, . - bar\@
+	sym	\n - 1
+	.endif
+	.endm
+
+	.data
+	.align	4
+	.space	32
+	sym	16


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