* Committed: additional broken-.word tests
@ 2009-03-11 3:18 Hans-Peter Nilsson
0 siblings, 0 replies; only message in thread
From: Hans-Peter Nilsson @ 2009-03-11 3:18 UTC (permalink / raw)
To: binutils
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
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2009-03-11 3:18 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-03-11 3:18 Committed: additional broken-.word tests Hans-Peter Nilsson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).