* gas/mmix/op-0-1.d, gas/mmix/pushj-c.d, gas/mmix/weak1.d: Add

--no-pushj-stubs option.
	* gas/mmix/reloclab-r.d, gas/mmix/reloclab.d: Add --no-stubs
	option.
	* gas/mmix/reloclab.l: Adjust for PUSHJ stub.
	* gas/mmix/pushj-cs.d, gas/mmix/reloclab-s.d, gas/mmix/relax2.s,
	gas/mmix/relax2.d, gas/mmix/op-0-1s.d, gas/mmix/reloclab-rs.d,
	gas/mmix/weak1-s.d: New tests.
This commit is contained in:
Hans-Peter Nilsson 2003-10-18 16:00:21 +00:00
parent 88fc725d2f
commit 3314fb38c1
14 changed files with 442 additions and 12 deletions

View File

@ -1,3 +1,14 @@
2003-10-18 Hans-Peter Nilsson <hp@bitrange.com>
* gas/mmix/op-0-1.d, gas/mmix/pushj-c.d, gas/mmix/weak1.d: Add
--no-pushj-stubs option.
* gas/mmix/reloclab-r.d, gas/mmix/reloclab.d: Add --no-stubs
option.
* gas/mmix/reloclab.l: Adjust for PUSHJ stub.
* gas/mmix/pushj-cs.d, gas/mmix/reloclab-s.d, gas/mmix/relax2.s,
gas/mmix/relax2.d, gas/mmix/op-0-1s.d, gas/mmix/reloclab-rs.d,
gas/mmix/weak1-s.d: New tests.
2003-10-17 Ian Lance Taylor <ian@wasabisystems.com>
* gas/arm/iwmmxt-bad.s: New file.

View File

@ -1,5 +1,5 @@
#objdump: -srt
#as: -x
#as: -x --no-stubs
.*: file format elf64-mmix

View File

@ -0,0 +1,22 @@
#objdump: -srt
#source: op-0-1.s
#as: -x
.*: file format elf64-mmix
SYMBOL TABLE:
0+ l d \.text 0+
0+ l d \.data 0+
0+ l d \.bss 0+
0+ l \*ABS\* 0+ zero0
0+ l \*ABS\* 0+ zero1
0+ l \*ABS\* 0+ zero2
0+ g F \.text 0+ Main
RELOCATION RECORDS FOR \[\.text\]:
OFFSET TYPE VALUE
0+ R_MMIX_JMP \*ABS\*
0+14 R_MMIX_GETA \*ABS\*
0+24 R_MMIX_PUSHJ_STUBBABLE \*ABS\*
Contents of section \.text:
0000 f0000000 fd000000 fd000000 fd000000 .*
0010 fd000000 f4070000 fd000000 fd000000 .*
0020 fd000000 f2080000 .*

View File

@ -1,4 +1,4 @@
#as: -x
#as: -x --no-pushj-stubs
#objdump: -tdr
.*: file format elf64-mmix

View File

@ -0,0 +1,18 @@
#as: -x
#source: pushj-c.s
#objdump: -tdr
.*: file format elf64-mmix
SYMBOL TABLE:
0+ l d .text 0+
0+ l d .data 0+
0+ l d .bss 0+
ffff0000ffff0000 l \*ABS\* 0+ i1
ffff0000ffff0000 l \*ABS\* 0+ i2
0+ g F .text 0+ Main
Disassembly of section \.text:
0+ <Main>:
0: f2010000 pushj \$1,0 <Main>
0: R_MMIX_PUSHJ_STUBBABLE \*ABS\*\+0xffff0000ffff0000
4: f2020000 pushj \$2,4 <Main\+0x4>
4: R_MMIX_PUSHJ_STUBBABLE i2

View File

@ -0,0 +1,251 @@
#objdump: -r
#as: -x
.*: file format elf64-mmix
R.* \[\.text\.a0\]:
O.*
0+40004 R_MMIX_PUSHJ \.text\.a0
0+40018 R_MMIX_PUSHJ \.text\.a0\+0x0+4
R.* \[\.text\.b0\]:
O.*
0+40004 R_MMIX_PUSHJ \.text\.b0
0+40018 R_MMIX_PUSHJ \.text\.b0\+0x0+4
0+4002c R_MMIX_PUSHJ \.text\.b0\+0x0+8
R.* \[\.text\.c0\]:
O.*
0+ R_MMIX_PUSHJ ca0
0+14 R_MMIX_PUSHJ cb0
R.* \[\.text\.d0\]:
O.*
0+ R_MMIX_PUSHJ da0
0+14 R_MMIX_PUSHJ db0
0+28 R_MMIX_PUSHJ dc0
R.* \[\.text\.a1\]:
O.*
0+40004 R_MMIX_PUSHJ \.text\.a1
0+40018 R_MMIX_PUSHJ_STUBBABLE \.text\.a1\+0x0+4
R.* \[\.text\.b1\]:
O.*
0+40004 R_MMIX_PUSHJ \.text\.b1
0+40018 R_MMIX_PUSHJ \.text\.b1\+0x0+4
0+4002c R_MMIX_PUSHJ_STUBBABLE \.text\.b1\+0x0+8
R.* \[\.text\.c1\]:
O.*
0+ R_MMIX_PUSHJ ca1
0+14 R_MMIX_PUSHJ_STUBBABLE cb1
R.* \[\.text\.d1\]:
O.*
0+ R_MMIX_PUSHJ da1
0+14 R_MMIX_PUSHJ db1
0+28 R_MMIX_PUSHJ_STUBBABLE dc1
# The following shows a limitation of the PUSHJ relaxation code when
# PUSHJ:s are close, and about 256k away from the section limit: On the
# first relaxation iteration, the first (or second) PUSHJ looks like it
# could reach a stub. However, the last PUSHJ is expanded and on the
# second iteration, the stubbed PUSHJ has to be expanded too because it
# can't reach the stubs anymore. This continues for the next iterations,
# because the max stub size is five tetrabytes (4-bytes). At the expense
# of much more complex relaxation code (including the relaxation machinery
# in write.c), this is fixable. Anyway, as long as PUSHJ:s aren't closer
# than five instructions, the existing code does suffice; we're just here
# to check that the border case *works* and doesn't generate invalid code.
R.* \[\.text\.a2\]:
O.*
0+40004 R_MMIX_PUSHJ \.text\.a2
0+40018 R_MMIX_PUSHJ \.text\.a2\+0x0+4
R.* \[\.text\.b2\]:
O.*
0+40004 R_MMIX_PUSHJ \.text\.b2
0+40018 R_MMIX_PUSHJ \.text\.b2\+0x0+4
0+4002c R_MMIX_PUSHJ \.text\.b2\+0x0+8
R.* \[\.text\.c2\]:
O.*
0+ R_MMIX_PUSHJ ca2
0+14 R_MMIX_PUSHJ cb2
R.* \[\.text\.d2\]:
O.*
0+ R_MMIX_PUSHJ da2
0+14 R_MMIX_PUSHJ db2
0+28 R_MMIX_PUSHJ dc2
R.* \[\.text\.a3\]:
O.*
0+40004 R_MMIX_PUSHJ \.text\.a3
0+40018 R_MMIX_PUSHJ \.text\.a3\+0x0+4
R.* \[\.text\.b3\]:
O.*
0+40004 R_MMIX_PUSHJ \.text\.b3
0+40018 R_MMIX_PUSHJ \.text\.b3\+0x0+4
0+4002c R_MMIX_PUSHJ \.text\.b3\+0x0+8
R.* \[\.text\.c3\]:
O.*
0+ R_MMIX_PUSHJ ca3
0+14 R_MMIX_PUSHJ cb3
R.* \[\.text\.d3\]:
O.*
0+ R_MMIX_PUSHJ da3
0+14 R_MMIX_PUSHJ db3
0+28 R_MMIX_PUSHJ dc3
R.* \[\.text\.a4\]:
O.*
0+40004 R_MMIX_PUSHJ \.text\.a4
0+40018 R_MMIX_PUSHJ \.text\.a4\+0x0+4
R.* \[\.text\.b4\]:
O.*
0+40004 R_MMIX_PUSHJ \.text\.b4
0+40018 R_MMIX_PUSHJ \.text\.b4\+0x0+4
0+4002c R_MMIX_PUSHJ \.text\.b4\+0x0+8
R.* \[\.text\.c4\]:
O.*
0+ R_MMIX_PUSHJ ca4
0+14 R_MMIX_PUSHJ cb4
R.* \[\.text\.d4\]:
O.*
0+ R_MMIX_PUSHJ da4
0+14 R_MMIX_PUSHJ db4
0+28 R_MMIX_PUSHJ dc4
R.* \[\.text\.a5\]:
O.*
0+40004 R_MMIX_PUSHJ \.text\.a5
0+40018 R_MMIX_PUSHJ \.text\.a5\+0x0+4
R.* \[\.text\.b5\]:
O.*
0+40004 R_MMIX_PUSHJ \.text\.b5
0+40018 R_MMIX_PUSHJ \.text\.b5\+0x0+4
0+4002c R_MMIX_PUSHJ \.text\.b5\+0x0+8
R.* \[\.text\.c5\]:
O.*
0+ R_MMIX_PUSHJ ca5
0+14 R_MMIX_PUSHJ cb5
R.* \[\.text\.d5\]:
O.*
0+ R_MMIX_PUSHJ da5
0+14 R_MMIX_PUSHJ db5
0+28 R_MMIX_PUSHJ dc5
R.* \[\.text\.a6\]:
O.*
0+40004 R_MMIX_PUSHJ_STUBBABLE \.text\.a6
0+40008 R_MMIX_PUSHJ_STUBBABLE \.text\.a6\+0x0+4
R.* \[\.text\.b6\]:
O.*
0+40004 R_MMIX_PUSHJ \.text\.b6
0+40018 R_MMIX_PUSHJ \.text\.b6\+0x0+4
0+4002c R_MMIX_PUSHJ_STUBBABLE \.text\.b6\+0x0+8
R.* \[\.text\.c6\]:
O.*
0+ R_MMIX_PUSHJ_STUBBABLE ca6
0+4 R_MMIX_PUSHJ_STUBBABLE cb6
R.* \[\.text\.d6\]:
O.*
0+ R_MMIX_PUSHJ da6
0+14 R_MMIX_PUSHJ db6
0+28 R_MMIX_PUSHJ_STUBBABLE dc6
R.* \[\.text\.a7\]:
O.*
0+40004 R_MMIX_PUSHJ_STUBBABLE \.text\.a7
0+40008 R_MMIX_PUSHJ_STUBBABLE \.text\.a7\+0x0+4
R.* \[\.text\.b7\]:
O.*
0+40004 R_MMIX_PUSHJ \.text\.b7
0+40018 R_MMIX_PUSHJ \.text\.b7\+0x0+4
0+4002c R_MMIX_PUSHJ \.text\.b7\+0x0+8
R.* \[\.text\.c7\]:
O.*
0+ R_MMIX_PUSHJ_STUBBABLE ca7
0+4 R_MMIX_PUSHJ_STUBBABLE cb7
R.* \[\.text\.d7\]:
O.*
0+ R_MMIX_PUSHJ da7
0+14 R_MMIX_PUSHJ db7
0+28 R_MMIX_PUSHJ dc7
R.* \[\.text\.a8\]:
O.*
0+40004 R_MMIX_PUSHJ_STUBBABLE \.text\.a8
0+40008 R_MMIX_PUSHJ_STUBBABLE \.text\.a8\+0x0+4
R.* \[\.text\.b8\]:
O.*
0+40004 R_MMIX_PUSHJ \.text\.b8
0+40018 R_MMIX_PUSHJ \.text\.b8\+0x0+4
0+4002c R_MMIX_PUSHJ \.text\.b8\+0x0+8
R.* \[\.text\.c8\]:
O.*
0+ R_MMIX_PUSHJ_STUBBABLE ca8
0+4 R_MMIX_PUSHJ_STUBBABLE cb8
R.* \[\.text\.d8\]:
O.*
0+ R_MMIX_PUSHJ da8
0+14 R_MMIX_PUSHJ db8
0+28 R_MMIX_PUSHJ dc8
R.* \[\.text\.a9\]:
O.*
0+40004 R_MMIX_PUSHJ_STUBBABLE \.text\.a9
0+40008 R_MMIX_PUSHJ_STUBBABLE \.text\.a9\+0x0+4
R.* \[\.text\.b9\]:
O.*
0+40004 R_MMIX_PUSHJ \.text\.b9
0+40018 R_MMIX_PUSHJ \.text\.b9\+0x0+4
0+4002c R_MMIX_PUSHJ \.text\.b9\+0x0+8
R.* \[\.text\.c9\]:
O.*
0+ R_MMIX_PUSHJ_STUBBABLE ca9
0+4 R_MMIX_PUSHJ_STUBBABLE cb9
R.* \[\.text\.d9\]:
O.*
0+ R_MMIX_PUSHJ da9
0+14 R_MMIX_PUSHJ db9
0+28 R_MMIX_PUSHJ dc9
R.* \[\.text\.a10\]:
O.*
0+40004 R_MMIX_PUSHJ_STUBBABLE \.text\.a10
0+40008 R_MMIX_PUSHJ_STUBBABLE \.text\.a10\+0x0+4
R.* \[\.text\.b10\]:
O.*
0+40004 R_MMIX_PUSHJ \.text\.b10
0+40018 R_MMIX_PUSHJ \.text\.b10\+0x0+4
0+4002c R_MMIX_PUSHJ \.text\.b10\+0x0+8
R.* \[\.text\.c10\]:
O.*
0+ R_MMIX_PUSHJ_STUBBABLE ca10
0+4 R_MMIX_PUSHJ_STUBBABLE cb10
R.* \[\.text\.d10\]:
O.*
0+ R_MMIX_PUSHJ da10
0+14 R_MMIX_PUSHJ db10
0+28 R_MMIX_PUSHJ dc10
R.* \[\.text\.a11\]:
O.*
0+40004 R_MMIX_PUSHJ_STUBBABLE \.text\.a11
0+40008 R_MMIX_PUSHJ_STUBBABLE \.text\.a11\+0x0+4
R.* \[\.text\.b11\]:
O.*
0+40004 R_MMIX_PUSHJ_STUBBABLE \.text\.b11
0+40008 R_MMIX_PUSHJ_STUBBABLE \.text\.b11\+0x0+4
0+4000c R_MMIX_PUSHJ_STUBBABLE \.text\.b11\+0x0+8
R.* \[\.text\.c11\]:
O.*
0+ R_MMIX_PUSHJ_STUBBABLE ca11
0+4 R_MMIX_PUSHJ_STUBBABLE cb11
R.* \[\.text\.d11\]:
O.*
0+ R_MMIX_PUSHJ_STUBBABLE da11
0+4 R_MMIX_PUSHJ_STUBBABLE db11
0+8 R_MMIX_PUSHJ_STUBBABLE dc11
R.* \[\.text\.a12\]:
O.*
0+40004 R_MMIX_PUSHJ_STUBBABLE \.text\.a12
0+40008 R_MMIX_PUSHJ_STUBBABLE \.text\.a12\+0x0+4
R.* \[\.text\.b12\]:
O.*
0+40004 R_MMIX_PUSHJ_STUBBABLE \.text\.b12
0+40008 R_MMIX_PUSHJ_STUBBABLE \.text\.b12\+0x0+4
0+4000c R_MMIX_PUSHJ_STUBBABLE \.text\.b12\+0x0+8
R.* \[\.text\.c12\]:
O.*
0+ R_MMIX_PUSHJ_STUBBABLE ca12
0+4 R_MMIX_PUSHJ_STUBBABLE cb12
R.* \[\.text\.d12\]:
O.*
0+ R_MMIX_PUSHJ_STUBBABLE da12
0+4 R_MMIX_PUSHJ_STUBBABLE db12
0+8 R_MMIX_PUSHJ_STUBBABLE dc12

View File

@ -0,0 +1,35 @@
# PUSHJ stub border-cases: two with either or both stubs unreachable,
# local symbols, ditto non-local labels, similar with three PUSHJs.
Main SWYM
.irp x,0,1,2,3,4,5,6,7,8,9,10,11,12
.section .text.a\x,"ax"
aa\x: .space 4,0
a\x: .space 65536*4,0
PUSHJ $33,aa\x
PUSHJ $22,a\x
.space 65535*4-4*\x
.section .text.b\x,"ax"
bbb\x: .space 4,0
bb\x: .space 4,0
b\x: .space 65535*4
PUSHJ $12,bbb\x
PUSHJ $13,bb\x
PUSHJ $14,b\x
.space 65535*4-4*\x
.section .text.c\x,"ax"
c\x: PUSHJ $100,ca\x
PUSHJ $101,cb\x
.space 65535*4-4*\x
.section .text.d\x,"ax"
d\x: PUSHJ $99,da\x
PUSHJ $98,db\x
PUSHJ $97,dc\x
.space 65535*4-4*\x
.endr

View File

@ -1,5 +1,5 @@
#objdump: -dr
#as: -linkrelax -x
#as: -linkrelax -x --no-stubs
#source: reloclab.s
.*: file format elf64-mmix

View File

@ -0,0 +1,42 @@
#objdump: -dr
#as: -linkrelax -x
#source: reloclab.s
.*: file format elf64-mmix
Disassembly of section \.text:
0000000000000000 <Main>:
0: f0000000 jmp 0 <Main>
0: R_MMIX_JMP foo\+0x8
4: fd000000 swym 0,0,0
8: fd000000 swym 0,0,0
c: fd000000 swym 0,0,0
10: fd000000 swym 0,0,0
14: f0000004 jmp 24 <here>
14: R_MMIX_ADDR27 \.text\+0x24
18: f4080003 geta \$8,24 <here>
18: R_MMIX_ADDR19 \.text\+0x24
1c: 46630002 bod \$99,24 <here>
1c: R_MMIX_ADDR19 \.text\+0x24
20: fd000000 swym 0,0,0
0000000000000024 <here>:
24: 42de0000 bz \$222,24 <here>
24: R_MMIX_CBRANCH bar\+0x10
28: fd000000 swym 0,0,0
2c: fd000000 swym 0,0,0
30: fd000000 swym 0,0,0
34: fd000000 swym 0,0,0
38: fd000000 swym 0,0,0
000000000000003c <there>:
3c: f4040000 geta \$4,3c <there>
3c: R_MMIX_GETA baz
40: fd000000 swym 0,0,0
44: fd000000 swym 0,0,0
48: fd000000 swym 0,0,0
4c: f2070000 pushj \$7,4c <there\+0x10>
4c: R_MMIX_PUSHJ_STUBBABLE foobar
50: f1fffffb jmp 3c <there>
50: R_MMIX_ADDR27 \.text\+0x3c
54: f558fffa geta \$88,3c <there>
54: R_MMIX_ADDR19 \.text\+0x3c
58: 476ffff9 bod \$111,3c <there>
58: R_MMIX_ADDR19 \.text\+0x3c

View File

@ -0,0 +1,36 @@
#objdump: -dr
#source: reloclab.s
#as: -x
.*: file format elf64-mmix
Disassembly of section \.text:
0000000000000000 <Main>:
0: f0000000 jmp 0 <Main>
0: R_MMIX_JMP foo\+0x8
4: fd000000 swym 0,0,0
8: fd000000 swym 0,0,0
c: fd000000 swym 0,0,0
10: fd000000 swym 0,0,0
14: f0000004 jmp 24 <here>
18: f4080003 geta \$8,24 <here>
1c: 46630002 bod \$99,24 <here>
20: fd000000 swym 0,0,0
0000000000000024 <here>:
24: 42de0000 bz \$222,24 <here>
24: R_MMIX_CBRANCH bar\+0x10
28: fd000000 swym 0,0,0
2c: fd000000 swym 0,0,0
30: fd000000 swym 0,0,0
34: fd000000 swym 0,0,0
38: fd000000 swym 0,0,0
000000000000003c <there>:
3c: f4040000 geta \$4,3c <there>
3c: R_MMIX_GETA baz
40: fd000000 swym 0,0,0
44: fd000000 swym 0,0,0
48: fd000000 swym 0,0,0
4c: f2070000 pushj \$7,4c <there\+0x10>
4c: R_MMIX_PUSHJ_STUBBABLE foobar
50: f1fffffb jmp 3c <there>
54: f558fffa geta \$88,3c <there>
58: 476ffff9 bod \$111,3c <there>

View File

@ -1,5 +1,5 @@
#objdump: -dr
#as: -x
#as: -x --no-stubs
.*: file format elf64-mmix

View File

@ -24,13 +24,9 @@ GAS for MMIX .*/reloclab\.s page 1
10 FD000000
10 FD000000
11 004c F2070000 PUSHJ \$7,foobar
11 FD000000
11 FD000000
11 FD000000
11 FD000000
12 0060 F1FFFFF7 JMP there
13 0064 F558FFF6 GETA \$88,there
14 0068 476FFFF5 BOD \$111,there
12 0050 F1FFFFFB JMP there
13 0054 F558FFFA GETA \$88,there
14 0058 476FFFF9 BOD \$111,there
GAS for MMIX .*/reloclab\.s page 2

View File

@ -0,0 +1,19 @@
#as: -x
#source: weak1.s
#objdump: -str
# Like weak1, but with PUSHJ stubs.
.*: file format elf64-mmix
SYMBOL TABLE:
0+ l d \.text 0+
0+ l d \.data 0+
0+ l d \.bss 0+
0+ w \.text 0+ foo
0+4 g \.text 0+ main
RELOCATION RECORDS FOR \[\.text\]:
OFFSET TYPE VALUE
0+8 R_MMIX_64 foo
0+4 R_MMIX_PUSHJ_STUBBABLE foo
Contents of section \.text:
0000 f8010000 f20f0000 00000000 00000000 .*

View File

@ -1,4 +1,4 @@
#as: -x
#as: -x --no-pushj-stubs
#objdump: -str
# Relaxation thought a weak symbol was within reach.