Committed: additional broken-.word tests

Hans-Peter Nilsson hans-peter.nilsson@axis.com
Wed Mar 11 03:18:00 GMT 2009


I thought there was a real bug there, that md_short_jump had to
be able to skip over 32768 bytes of secondary jump table, so I
created some limit-tests.  The limits are 4095 cases for pre-v32
(md_short_jump_size=md_long_jump_size=6) and 3276 for v32 and
pre-v32 --pic (md_long_jump_size=8).  Hm, if gcc puts enough of
the labels (and code) *before* the case-table, it'll still
happen, although for about a magnitude odder code...  Oh, well.
A partial coverage then.

Some tricks with macros were necessary in order to generate the
case-table and labels, without defining a label before the end
of the case-table.  Hm, in hindsight I guess I could have used
.set (and switching subsections) instead of ".Ln:".
Anyway... committed.

gas/testsuite:

	* gas/cris/rd-bkw5.d, gas/cris/rd-bkw5.s, gas/cris/rd-bkw5b.d,
	gas/cris/rd-bkw5bpic.d, gas/cris/rd-bkw5bv32.d,
	gas/cris/rd-bkw5bv32pic.d, gas/cris/rd-bkw5pic.d,
	gas/cris/rd-bkw5v32.d, gas/cris/rd-bkw5v32pic.d: New tests.

Index: gas/cris/rd-bkw5.s
===================================================================
RCS file: gas/cris/rd-bkw5.s
diff -N gas/cris/rd-bkw5.s
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gas/cris/rd-bkw5.s	11 Mar 2009 02:30:04 -0000
@@ -0,0 +1,48 @@
+	.ifndef extra
+	.set extra,0
+	.endif
+
+	.macro	case
+	.if	\@ < 10
+	.word	.L1000\@-.
+	.elseif	\@ < 100
+	.word	.L100\@-.
+	.elseif	\@ < 1000
+	.word	.L10\@-.
+	.else
+	.word	.L1\@-.
+	.endif
+	.set	counter,1+\@
+	.endm
+
+	.macro case_label
+.L\@:	nop
+	.endm
+
+	.macro padder
+	.endm
+
+	.text
+	.align 1
+	.global x
+	.type	x,@function
+x:
+	.rept 4095+extra
+	case
+	.endr
+
+	.rept 10000-counter
+	padder
+	.endr
+
+after:
+	; Force a secondary jump-table entry for every label.
+	.fill 32768
+
+	.rept counter
+	case_label
+	.endr
+
+	move.d	esymbol,$r10
+	.size	x,.-x
+	.align 1
Index: gas/cris/rd-bkw5.d
===================================================================
RCS file: gas/cris/rd-bkw5.d
diff -N gas/cris/rd-bkw5.d
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gas/cris/rd-bkw5.d	11 Mar 2009 02:30:04 -0000
@@ -0,0 +1,29 @@
+#as: --underscore --em=criself
+#objdump: -dr
+
+.*:     file format .*-cris
+
+Disassembly of section \.text:
+
+0+ <x>:
+       0:	f87f .*
+#...
+    1ffc:	0800 .*
+    1ffe:	ffed fc5f           	ba 7ffe <after>
+    2002:	0f05                	nop 
+    2004:	3f0d fa1f 0100      	jump 11ffa <after\+0x9ffc>
+			2006: R_CRIS_32	.text\+0x11ffa
+    200a:	3f0d f81f 0100      	jump 11ff8 <after\+0x9ffa>
+			200c: R_CRIS_32	.text\+0x11ff8
+#...
+    7ff8:	3f0d feff 0000      	jump fffe <after\+0x8000>
+			7ffa: R_CRIS_32	.text\+0xfffe
+
+00007ffe <after>:
+	\.\.\.
+    fffe:	0f05                	nop 
+#...
+   11ffa:	0f05                	nop 
+   11ffc:	6fae 0000 0000      	move.d 0 <x>,r10
+			11ffe: R_CRIS_32	esymbol
+	\.\.\.
Index: gas/cris/rd-bkw5b.d
===================================================================
RCS file: gas/cris/rd-bkw5b.d
diff -N gas/cris/rd-bkw5b.d
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gas/cris/rd-bkw5b.d	11 Mar 2009 02:30:04 -0000
@@ -0,0 +1,4 @@
+#as: --underscore --em=criself --defsym extra=1
+#objdump: -dr
+#source: rd-bkw5.s
+#error: overflow
Index: gas/cris/rd-bkw5bpic.d
===================================================================
RCS file: gas/cris/rd-bkw5bpic.d
diff -N gas/cris/rd-bkw5bpic.d
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gas/cris/rd-bkw5bpic.d	11 Mar 2009 02:30:04 -0000
@@ -0,0 +1,4 @@
+#as: --pic --underscore --em=criself --defsym extra=-818
+#objdump: -dr
+#source: rd-bkw5.s
+#error: overflow
Index: gas/cris/rd-bkw5bv32.d
===================================================================
RCS file: gas/cris/rd-bkw5bv32.d
diff -N gas/cris/rd-bkw5bv32.d
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gas/cris/rd-bkw5bv32.d	11 Mar 2009 02:30:04 -0000
@@ -0,0 +1,4 @@
+#as: --march=v32 --underscore --em=criself --defsym extra=-818
+#objdump: -dr
+#source: rd-bkw5.s
+#error: overflow
Index: gas/cris/rd-bkw5bv32pic.d
===================================================================
RCS file: gas/cris/rd-bkw5bv32pic.d
diff -N gas/cris/rd-bkw5bv32pic.d
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gas/cris/rd-bkw5bv32pic.d	11 Mar 2009 02:30:04 -0000
@@ -0,0 +1,4 @@
+#as: --march=v32 --pic --underscore --em=criself --defsym extra=-818
+#objdump: -dr
+#source: rd-bkw5.s
+#error: overflow
Index: gas/cris/rd-bkw5pic.d
===================================================================
RCS file: gas/cris/rd-bkw5pic.d
diff -N gas/cris/rd-bkw5pic.d
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gas/cris/rd-bkw5pic.d	11 Mar 2009 02:30:04 -0000
@@ -0,0 +1,27 @@
+#as: --pic --underscore --em=criself --defsym extra=-819
+#objdump: -dr
+#source: rd-bkw5.s
+
+.*:     file format .*-cris
+
+Disassembly of section \.text:
+
+0+ <x>:
+       0:	f67f .*
+#...
+    1996:	0800 .*
+    1998:	ffed 6266           	ba 7ffe <after>
+    199c:	0f05                	nop 
+    199e:	6ffd f0ff 0000 3f0e 	move \[pc=pc\+fff0 <after\+0x7ff2>\],p0
+    19a6:	6ffd e6ff 0000 3f0e 	move \[pc=pc\+ffe6 <after\+0x7fe8>\],p0
+#...
+    7ff6:	6ffd 0280 0000 3f0e 	move \[pc=pc\+8002 <after\+0x4>\],p0
+
+00007ffe <after>:
+	...
+    fffe:	0f05                	nop 
+#...
+   11994:	0f05                	nop 
+   11996:	6fae 0000 0000      	move.d 0 <x>,r10
+			11998: R_CRIS_32	esymbol
+
Index: gas/cris/rd-bkw5v32.d
===================================================================
RCS file: gas/cris/rd-bkw5v32.d
diff -N gas/cris/rd-bkw5v32.d
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gas/cris/rd-bkw5v32.d	11 Mar 2009 02:30:04 -0000
@@ -0,0 +1,28 @@
+#as: --march=v32 --underscore --em=criself --defsym extra=-819
+#objdump: -dr
+#source: rd-bkw5.s
+
+.*:     file format .*-cris
+
+Disassembly of section \.text:
+
+0+ <x>:
+       0:	f67f .*
+#...
+    1996:	0800 .*
+    1998:	ffed 6666           	ba 7ffe <after>
+    199c:	b005                	nop 
+    199e:	bf0e f6ff 0000      	ba 11994 <after\+0x9996>
+    19a4:	b005                	nop 
+#...
+    7ff6:	bf0e 0880 0000      	ba fffe <after\+0x8000>
+    7ffc:	b005                	nop 
+
+00007ffe <after>:
+	...
+    fffe:	b005                	nop 
+#...
+   11994:	b005                	nop 
+   11996:	6fae 0000 0000      	move.d 0 <x>,r10
+			11998: R_CRIS_32	esymbol
+
Index: gas/cris/rd-bkw5v32pic.d
===================================================================
RCS file: gas/cris/rd-bkw5v32pic.d
diff -N gas/cris/rd-bkw5v32pic.d
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gas/cris/rd-bkw5v32pic.d	11 Mar 2009 02:30:04 -0000
@@ -0,0 +1,28 @@
+#as: --march=v32 --pic --underscore --em=criself --defsym extra=-819
+#objdump: -dr
+#source: rd-bkw5.s
+
+.*:     file format .*-cris
+
+Disassembly of section \.text:
+
+0+ <x>:
+       0:	f67f .*
+#...
+    1996:	0800 .*
+    1998:	ffed 6666           	ba 7ffe <after>
+    199c:	b005                	nop 
+    199e:	bf0e f6ff 0000      	ba 11994 <after\+0x9996>
+    19a4:	b005                	nop 
+#...
+    7ff6:	bf0e 0880 0000      	ba fffe <after\+0x8000>
+    7ffc:	b005                	nop 
+
+00007ffe <after>:
+	...
+    fffe:	b005                	nop 
+#...
+   11994:	b005                	nop 
+   11996:	6fae 0000 0000      	move.d 0 <x>,r10
+			11998: R_CRIS_32	esymbol
+

brgds, H-P



More information about the Binutils mailing list