URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Subversion Repositories openrisc_2011-10-31
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk/gnu-src/binutils-2.18.50/ld/testsuite/ld-mmix
- from Rev 38 to Rev 156
- ↔ Reverse comparison
Rev 38 → Rev 156
/start2.s
0,0 → 1,5
.text |
SWYM 1 |
.global _start |
_start: |
SWYM 2 |
/sec-7a.s
0,0 → 1,6
.section .di |
.byte 42 |
.rept 32763 |
.byte 0 |
.endr |
.byte 43 |
/greg-2.s
0,0 → 1,3
# Have another GREG register allocation. |
.global b |
b GREG 34567891011121314 |
/b-bend.s
0,0 → 1,6
% The .text contents is supposed to be linked --oformat binary with |
% b-twoinsn.s and b-goodmain.s, and will provide an invalid LOP_END; one |
% not at the end of a file. It also does not in YZ specify a correct |
% number of bytes between it and a preceding lop_stab. |
.text |
.byte 0x98,12,0,0 |
/areg-256.s
0,0 → 1,2
.global areg |
areg IS $255+1 |
/greg-17.d
0,0 → 1,37
#source: gregget1.s |
#source: greg-1.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: a.s |
#source: start.s |
#as: -x |
#ld: -m mmo |
#error: Too many global registers: 224, max 223 |
|
# Allocating the maximum number of gregs *plus one* is an error, mmo. |
/loc2m.d
0,0 → 1,14
#source: loc1.s |
#source: start.s |
#ld: -m mmo |
#objdump: -str |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+1004 g \.text Main |
0+1004 g \.text _start |
0+1000 g \.text loc1 |
|
Contents of section \.text: |
1000 fd030303 e3fd0001 .* |
/bpo-1.d
0,0 → 1,21
#source: start.s |
#source: bpo-1.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix |
#objdump: -st |
|
# Just a simple linker-allocated GREG with no explicit GREGs. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0000000000000000 l d \.text 0+ (|\.text) |
0+7f0 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+4 l \.text 0+ x |
0+ g \.text 0+ _start |
#... |
|
Contents of section \.text: |
0000 e3fd0001 232afe00 .* |
Contents of section \.MMIX\.reg_contents: |
07f0 00000000 0000002e .* |
/pushja2f.d
0,0 → 1,21
#source: start.s |
#source: pushja.s |
#source: a.s |
#as: -no-expand |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <pushja>: |
4: e3fd0002 setl \$253,0x2 |
8: f20c0002 pushj \$12,10 <a> |
c: e3fd0003 setl \$253,0x3 |
|
0+10 <a>: |
10: e3fd0004 setl \$253,0x4 |
/bpo-9.d
0,0 → 1,26
#source: start3.s |
#source: bpo-6.s |
#source: bpo-5.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix --gc-sections |
#objdump: -st |
|
# Check that GC does not mess up things when no BPO:s are collected. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.init 0+ (|\.init) |
0+10 l d \.text 0+ (|\.text) |
0+7e8 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+ l \.init 0+ _start |
0+14 g \.text 0+ x |
0+10 g \.text 0+ x2 |
#... |
|
Contents of section \.init: |
0000 00000000 0000003d 00000000 0000003a .* |
Contents of section \.text: |
0010 232dfe00 232dfd00 .* |
Contents of section \.MMIX\.reg_contents: |
07e8 00000000 0000107c 00000000 0000a420 .* |
/getaa-6b.d
0,0 → 1,11
#source: start.s |
#source: a.s |
#source: pad2p18m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: pad4.s |
#source: getaa.s |
#as: -no-expand |
#ld: -m elf64mmix |
#error: relocation truncated to fit: R_MMIX_ADDR19 against symbol `a' |
/jumpa-7f.d
0,0 → 1,25
#source: start.s |
#source: jumpa.s |
#source: a.s |
#as: -x |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <jumpa>: |
4: e3fd0002 setl \$253,0x2 |
8: f0000006 jmp 20 <a> |
c: fd000000 swym 0,0,0 |
10: fd000000 swym 0,0,0 |
14: fd000000 swym 0,0,0 |
18: fd000000 swym 0,0,0 |
1c: e3fd0003 setl \$253,0x3 |
|
0+20 <a>: |
20: e3fd0004 setl \$253,0x4 |
/local5m.d
0,0 → 1,21
#source: greg-4.s |
#source: greg-4.s |
#source: local2.s |
#source: local1.s |
#source: regext1.s |
#source: start.s |
#ld: -m mmo |
#objdump: -str |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+8 g \.text Main |
0+fc g \*REG\* ext1 |
0+8 g \.text _start |
|
|
Contents of section \.text: |
0000 fd020202 fd030201 e3fd0001 .* |
Contents of section \.MMIX\.reg_contents: |
07e8 00000000 0000004e 00000000 0000004e .* |
/b-widec3.d
0,0 → 1,6
#source: b-twoinsn.s |
#source: b-post1.s |
#source: b-widec3.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#error: invalid symbol table: duplicate symbol `Main' |
/bpo-1.s
0,0 → 1,2
# A most simple instruction needing a linker-supplied GREG. |
x LDA $42,x+42 |
/loc1.d
0,0 → 1,19
#source: loc1.s |
#ld: -e loc1 -m elf64mmix |
#objdump: -str |
|
# Single text file. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+1000 l d \.text 0+ (|\.text) |
0+1000 g \.text 0+ loc1 |
0+1000 g \*ABS\* 0+ __\.MMIX\.start\.\.text |
2000000000000000 g \*ABS\* 0+ __bss_start |
2000000000000000 g \*ABS\* 0+ _edata |
2000000000000000 g \*ABS\* 0+ _end |
0+1000 g \.text 0+ _start\. |
|
Contents of section \.text: |
1000 fd030303 .* |
/bpo-10.d
0,0 → 1,22
#source: start4.s |
#source: bpo-6.s |
#source: bpo-5.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix --gc-sections |
#objdump: -st |
|
# Check that GC removes all (two) BPO:s when all are collected. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.init 0+ (|\.init) |
0+7f8 l +d \.MMIX.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+ l \.init 0+ _start |
2000000000000000 g \*ABS\* 0+ __bss_start |
2000000000000000 g \*ABS\* 0+ _edata |
2000000000000000 g \*ABS\* 0+ _end |
0+4 g \.init 0+ _start\. |
|
Contents of section \.init: |
0000 e37704a6 .* |
/pushjs2b.d
0,0 → 1,33
#source: start4.s |
#source: nop123.s |
#source: a.s |
#source: pad2p18m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: pad4.s |
#source: pushja.s |
#source: start.s |
#ld: -m elf64mmix |
#objdump: -dr |
|
# Check that PUSHJ with an offset just outside the offset range gets a JMP |
# stub expansion, backwards, ELF version. |
|
.*: file format elf64-mmix |
Disassembly of section \.init: |
0+ <_start>: |
0: e37704a6 setl \$119,0x4a6 |
Disassembly of section \.text: |
0+4 <a-0x4>: |
4: fd010203 swym 1,2,3 |
0+8 <a>: |
8: e3fd0004 setl \$253,0x4 |
\.\.\. |
0+40008 <pushja>: |
40008: e3fd0002 setl \$253,0x2 |
4000c: f20c0002 pushj \$12,40014 <pushja\+0xc> |
40010: e3fd0003 setl \$253,0x3 |
40014: f1fefffd jmp 8 <a> |
0+40018 <_start>: |
40018: e3fd0001 setl \$253,0x1 |
/b-badrx3.d
0,0 → 1,7
#source: b-twoinsn.s |
#source: b-badrx3.s |
#source: b-post1.s |
#source: b-goodmain.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#error: invalid mmo file: leading byte of operand word .* lop_fixrx |
/bspec801.s
0,0 → 1,3
BSPEC 80 |
TETRA 0x98000001 |
ESPEC |
/bpo-9.s
0,0 → 1,5
.set i,0 |
.rept 223*4 |
LDA $11,_start+i*64 |
.set i,i+1 |
.endr |
/bpo-18.d
0,0 → 1,29
#source: start.s |
#source: bpo-1.s |
#source: bpo-2.s |
#source: bpo-5.s |
#source: bpo-6.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix -T$srcdir/$subdir/bpo64addr.ld |
#objdump: -st |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+100 l d \.text 0+ (|\.text) |
4000000000001060 l d \.text\.away 0+ (|\.text\.away) |
0+7e0 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
4000000000001064 l \.text\.away 0+ x |
0+100 g \.text 0+ x |
4000000000001060 g \.text\.away 0+ Main |
0+104 g \.text 0+ x2 |
4000000000001060 g \.text\.away 0+ _start |
4000000000001068 g \.text\.away 0+ y |
|
Contents of section \.text: |
0100 232dfc00 232dfd00 .* |
Contents of section \.text\.away: |
4000000000001060 e3fd0001 232afe1e 2321fe00 .* |
Contents of section \.MMIX\.reg_contents: |
07e0 00000000 00001168 00000000 0000a514 .* |
07f0 40000000 00001070 .* |
/sec-2.d
0,0 → 1,26
#source: sec-1.s |
#source: start.s |
#source: data1.s |
#ld: -m mmo -T $srcdir/$subdir/mmosec1.ld |
#objdump: -sh |
|
.*: file format mmo |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+4 0+100 0+100 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
1 \.other 0+50 1000000000000000 1000000000000000 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE, DATA |
2 \.data 0+4 2000000000000004 2000000000000004 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD |
Contents of section \.text: |
0100 e3fd0001 .* |
Contents of section \.other: |
1000000000000000 00000001 00000002 00000003 00000004 .* |
1000000000000010 ffffffff fffff827 50000000 0000000a .* |
1000000000000020 00000009 00000008 00000007 25272900 .* |
1000000000000030 00030d41 000186a2 26280000 00000000 .* |
1000000000000040 00000000 0087a238 00000000 302a55a8 .* |
Contents of section \.data: |
2000000000000004 0000012c .* |
/b-widec3.s
0,0 → 1,8
% The .text contents is supposed to be linked --oformat binary with |
% b-twoinsn.s, and will provide a valid end of a mmo file, but with the |
% "n" in :Main in wide character format; the widening is with a nil, so it |
% is treated like a normal "n". Also, it provides a normal "n", so the |
% two symbols collide. |
.text |
.byte 0x98,0x0b,0x00,0x00,0x20,0x3a,0x30,0x4d,0x20,0x61,0x20,0x69 |
.byte 0x91,0,0x6e,0x04,0x81,0x01,0x6e,0x04,0x83,1,0x01,0x61,0x04,0x82,0,0,0x98,0x0c,0,0x06 |
/bpo-20m.d
0,0 → 1,8
#source: start.s |
#source: bpo-10.s |
#as: -linker-allocated-gregs |
#ld: -m mmo |
#error: Too many global registers |
|
# Check that many too many gregs are recognized (and not signed/unsigned |
# bugs with checks for < 32 appear). |
/loc1.s
0,0 → 1,3
LOC #1000 |
loc1 SWYM 3,3,3 |
.global loc1 |
/bpo-10.s
0,0 → 1,6
# Overflow; specify 223*8 registers. |
.set i,0 |
.rept 223*4*8 |
LDA $11,_start+i*64 |
.set i,i+1 |
.endr |
/local4.d
0,0 → 1,8
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: local1.s |
#source: ext1.s |
#source: start.s |
#ld: -m elf64mmix |
#error: not a local register |
/pushjs2r.d
0,0 → 1,27
#source: nop123.s |
#source: pushja.s |
#source: ext1l.s |
#source: pad2p18m32.s |
#source: pad16.s |
#source: nop123.s |
#ld: -r -m elf64mmix |
#objdump: -dr |
|
# When linking relocatably, check that PUSHJ with a distance to the end of |
# the section just outside the offset range gets expanded. |
|
.*: file format elf64-mmix |
Disassembly of section \.text: |
0+ <pushja-0x4>: |
0: fd010203 swym 1,2,3 |
0+4 <pushja>: |
4: e3fd0002 setl \$253,0x2 |
8: f20c0002 pushj \$12,10 <pushja\+0xc> |
c: e3fd0003 setl \$253,0x3 |
10: f0000000 jmp 10 <pushja\+0xc> |
10: R_MMIX_JMP a |
\.\.\. |
0+24 <ext1>: |
24: fd040810 swym 4,8,16 |
\.\.\. |
40018: fd010203 swym 1,2,3 |
/jumpa-2f.d
0,0 → 1,21
#source: start.s |
#source: jumpa.s |
#source: a.s |
#as: -no-expand |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <jumpa>: |
4: e3fd0002 setl \$253,0x2 |
8: f0000002 jmp 10 <a> |
c: e3fd0003 setl \$253,0x3 |
|
0+10 <a>: |
10: e3fd0004 setl \$253,0x4 |
/getaa-1b.d
0,0 → 1,24
#source: start.s |
#source: a.s |
#source: getaa.s |
#as: -x |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0+: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
|
0+8 <getaa>: |
8: e3fd0002 setl \$253,0x2 |
c: e37b0004 setl \$123,0x4 |
10: e67b0000 incml \$123,0x0 |
14: e57b0000 incmh \$123,0x0 |
18: e47b0000 inch \$123,0x0 |
1c: e3fd0003 setl \$253,0x3 |
/b-badrx3.s
0,0 → 1,6
% The .text contents is supposed to be linked --oformat binary with |
% b-twoinsn.s and b-goodmain.s, and will provide a LOP_FIXRX with invalid |
% (!= 0, != 1), first byte of the operand word. |
.text |
.byte 0x98,5,0,24 |
.byte 2,0,0,0 |
/pushja7b-s.d
0,0 → 1,19
#source: start.s |
#source: a.s |
#source: pushja.s |
#as: -x |
#ld: -m mmo |
#objdump: -dr |
|
# Like pushja7b, but with PUSHJ stub. |
|
.*: file format mmo |
Disassembly of section \.text: |
0+ <(Main|_start)>: |
0: e3fd0001 setl \$253,0x1 |
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
0+8 <pushja>: |
8: e3fd0002 setl \$253,0x2 |
c: f30cfffe pushj \$12,4 <a> |
10: e3fd0003 setl \$253,0x3 |
/bza-8b.d
0,0 → 1,21
#source: start.s |
#source: a.s |
#source: bza.s |
#as: -no-expand |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0+: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
|
0+8 <bza>: |
8: e3fd0002 setl \$253,0x2 |
c: 43eafffe bz \$234,4 <a> |
10: e3fd0003 setl \$253,0x3 |
/greg-3.d
0,0 → 1,36
#source: greg-1.s |
#source: gregget1.s |
#source: start.s |
#source: a.s |
#as: -x |
#ld: -m elf64mmix |
#objdump: -dt |
|
# A greg usage with an expanding insn. The register reloc must be |
# evaluated before the expanding reloc. Here, it doesn't appear in the |
# wrong order, and it doesn't seem like they would naturally appear in the |
# wrong order, but anyway. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
0+7f0 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+10 g \.text 0+ _start |
0+fe g \*REG\* 0+ areg |
#... |
0+14 g \.text 0+ a |
|
Disassembly of section \.text: |
|
0+ <_start-0x10>: |
0: e3fe0014 setl \$254,0x14 |
4: e6fe0000 incml \$254,0x0 |
8: e5fe0000 incmh \$254,0x0 |
c: e4fe0000 inch \$254,0x0 |
|
0+10 <_start>: |
10: e3fd0001 setl \$253,0x1 |
|
0+14 <a>: |
14: e3fd0004 setl \$253,0x4 |
/jumpa12f.d
0,0 → 1,25
#source: start.s |
#source: jumpa.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pad4.s |
#source: a.s |
#as: -no-expand |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <jumpa>: |
4: e3fd0002 setl \$253,0x2 |
8: f0ffffff jmp 4000004 <a> |
c: e3fd0003 setl \$253,0x3 |
\.\.\. |
|
0+4000004 <a>: |
4000004: e3fd0004 setl \$253,0x4 |
/spec804.d
0,0 → 1,24
#source: bspec804.s |
#source: start.s |
#ld: -m mmo |
#objdump: -sh |
|
# See spec801.d. |
# #4: non-quote LOP in section length, high part. |
|
.*: file format mmo |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+4 0+ 0+ 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
1 \.data 0+4 2000000000000000 2000000000000000 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD |
2 \.MMIX\.spec_data\.80 0+10 0+ 0+ 0+ 2\*\*2 |
CONTENTS |
Contents of section \.text: |
0000 e3fd0001 .* |
Contents of section \.data: |
2000000000000000 00112233 .* |
Contents of section \.MMIX\.spec_data\.80: |
0000 00000002 61616161 61616161 00000011 .* |
/pushja7f-s.d
0,0 → 1,19
#source: start.s |
#source: pushja.s |
#source: a.s |
#as: -x |
#ld: -m mmo |
#objdump: -dr |
|
# Like pushja7f, but with PUSHJ stub. |
|
.*: file format mmo |
Disassembly of section \.text: |
0+ <(Main|_start)>: |
0: e3fd0001 setl \$253,0x1 |
0+4 <pushja>: |
4: e3fd0002 setl \$253,0x2 |
8: f20c0002 pushj \$12,10 <a> |
c: e3fd0003 setl \$253,0x3 |
0+10 <a>: |
10: e3fd0004 setl \$253,0x4 |
/sec-2.s
0,0 → 1,2
.section .other,"ax" |
TETRA 12,34,1 |
/b-badmain.s
0,0 → 1,7
% The .text contents is supposed to be linked --oformat binary with |
% b-twoinsn.s, and will provide the end of a mmo file with a value of |
% :Main that does not correspond to the address in the initialization of |
% $255 - the start address. |
.text |
.byte 0x98,0x0b,0,0,0x20,0x3a,0x30,0x4d,0x20,0x61,0x20,0x69 |
.byte 1,0x6e,0,0x81,1,0x61,4,0x82,0x98,0x0c,0,4 |
/bspec2m.d
0,0 → 1,21
#source: bspec1.s |
#source: bspec2.s |
#source: bspec1.s |
#source: start.s |
#source: ext1.s |
#ld: -m mmo |
#objdump: -str |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+ g \.text Main |
0+fc g \*ABS\* ext1 |
0+ g \.text _start |
|
Contents of section \.text: |
0+ e3fd0001 .* |
Contents of section \.MMIX\.spec_data\.2: |
0000 0000002a 0000002a .* |
Contents of section \.MMIX\.spec_data\.3: |
0000 000000fc .* |
/undef-1.d
0,0 → 1,4
#source: undef-1.s |
#source: start.s |
#ld: -m elf64mmix |
#error: undefined reference to `regvar' |
/start3.s
0,0 → 1,7
# When GC, all sections in each file must be referenced from within a kept |
# section. |
.section .init,"ax",@progbits |
_start: |
.quad x+41 |
.quad x2+42 |
|
/sec-7b.s
0,0 → 1,6
.section .di |
.byte 44 |
.rept 32764 |
.byte 0 |
.endr |
.byte 45 |
/bpo-8m.d
0,0 → 1,7
#source: start.s |
#source: bpo-4.s |
#source: pad2p18m32.s |
#source: bpo-1.s |
#as: -linker-allocated-gregs |
#ld: -m mmo |
#error: Too many global registers: 224 |
/greg-10.d
0,0 → 1,25
#source: greg-1.s |
#source: gregldo1.s |
#source: start.s |
#ld: -m mmo |
#objdump: -dt |
|
# Most simple greg usage: relocate to each possible location within an |
# insn; mmo. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+c g \.text Main |
0+c g \.text _start |
0+fe g \*REG\* areg |
|
Disassembly of section \.text: |
|
0+ <Main-0xc>: |
0: 8c0c20fe ldo \$12,\$32,areg |
4: 8d7bfe22 ldo \$123,areg,34 |
8: 8dfeea38 ldo areg,\$234,56 |
|
0+c <(Main|_start)>: |
c: e3fd0001 setl \$253,0x1 |
/greg-3.s
0,0 → 1,3
# Have yet another GREG register allocation. |
.global c |
c GREG #42 |
/local10m.d
0,0 → 1,5
#source: local1.s |
#source: ext1g.s |
#source: start.s |
#ld: -m mmo |
#error: 254 is not a local register |
/greg-18.d
0,0 → 1,39
#source: gregget1.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-1.s |
#source: a.s |
#source: start.s |
#as: -x |
#ld: -m mmo |
#objdump: -dt |
#error: Too many global registers: 224, max 223 |
|
# Allocating the maximum number of gregs *plus one* is an error; other end |
# of the stick, mmo. |
/undef-2m.d
0,0 → 1,5
#source: undef-2.s |
#source: start.s |
#as: -x |
#ld: -m mmo |
#error: undefined reference to `undefd' |
/undef-1.s
0,0 → 1,5
ADDU regvar,$8,$9 |
/bpo-2.d
0,0 → 1,23
#source: start.s |
#source: greg-1.s |
#source: bpo-1.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix |
#objdump: -st |
|
# Just a simple linker-allocated GREG plus one explicit GREG. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
0+7e8 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+4 l \.text 0+ x |
0+ g \.text 0+ _start |
0+fe g \*REG\* 0+ areg |
#... |
|
Contents of section \.text: |
0000 e3fd0001 232afd00 .* |
Contents of section \.MMIX\.reg_contents: |
07e8 00000000 0000002e 00007048 860f3a38 .* |
/jumpa-5b.d
0,0 → 1,31
#source: start.s |
#source: a.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: pad4.s |
#source: jumpa.s |
#as: -x |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
\.\.\. |
|
0+4000004 <jumpa>: |
4000004: e3fd0002 setl \$253,0x2 |
4000008: e3ff0004 setl \$255,0x4 |
400000c: e6ff0000 incml \$255,0x0 |
4000010: e5ff0000 incmh \$255,0x0 |
4000014: e4ff0000 inch \$255,0x0 |
4000018: 9fffff00 go \$255,\$255,0 |
400001c: e3fd0003 setl \$253,0x3 |
/bpo-17m.d
0,0 → 1,22
#source: start.s |
#source: bpo-8.s |
#source: areg-t.s |
#as: -linker-allocated-gregs |
#ld: -m mmo |
#objdump: -st |
|
# A BPO and another reloc in the same section. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+ g \.text Main |
0+ g \.text _start |
0+10 g \.text areg |
|
|
Contents of section \.text: |
0000 e3fd0001 2336fe00 00000000 0000000c .* |
0010 fd040810 .* |
Contents of section \.MMIX\.reg_contents: |
07f0 00000000 00000008 .* |
/gregldo1.s
0,0 → 1,4
# Use a symbolic register areg, presumably allocated by greg in another file. |
LDO $12,$32,areg |
LDO $123,areg,34 |
LDO areg,$234,56 |
/reg-1m.d
0,0 → 1,7
#source: areg-256.s |
#source: gregget1.s |
#source: start.s |
#source: a.s |
#as: -x |
#ld: -m mmo |
#error: relocation truncated to fit: R_MMIX_REG against `areg' |
/pushja8f.d
0,0 → 1,21
#source: start.s |
#source: pushja.s |
#source: a.s |
#as: -no-expand |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <pushja>: |
4: e3fd0002 setl \$253,0x2 |
8: f20c0002 pushj \$12,10 <a> |
c: e3fd0003 setl \$253,0x3 |
|
0+10 <a>: |
10: e3fd0004 setl \$253,0x4 |
/getaa-4f.d
0,0 → 1,25
#source: start.s |
#source: getaa.s |
#source: pad2p18m32.s |
#source: pad16.s |
#source: pad4.s |
#source: a.s |
#as: -no-expand |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <getaa>: |
4: e3fd0002 setl \$253,0x2 |
8: f47bffff geta \$123,40004 <a> |
c: e3fd0003 setl \$253,0x3 |
\.\.\. |
|
0+40004 <a>: |
40004: e3fd0004 setl \$253,0x4 |
/b-bstab1.d
0,0 → 1,7
#source: b-twoinsn.s |
#source: b-bstab1.s |
#source: b-post1.s |
#source: b-goodmain.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#error: invalid mmo file: fields y and z of lop_stab non-zero, y: 1, z: 2 |
/getaa14f.d
0,0 → 1,10
#source: start.s |
#source: getaa.s |
#source: pad2p18m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: a.s |
#as: -no-expand |
#ld: -m mmo |
#error: relocation truncated to fit: R_MMIX_ADDR19 against `a'$ |
/bpo-3m.d
0,0 → 1,20
#source: start.s |
#source: bpo-1.s |
#source: bpo-2.s |
#as: -linker-allocated-gregs |
#ld: -m mmo |
#objdump: -st |
|
# Just two BPO relocs merged as one linker-allocated GREG. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+ g \.text Main |
0+ g \.text _start |
0+8 g \.text y |
|
Contents of section \.text: |
0000 e3fd0001 232afe1e 2321fe00 .* |
Contents of section \.MMIX\.reg_contents: |
07f0 00000000 00000010 .* |
/bpo-2.s
0,0 → 1,2
.global y |
y LDA $33,y+8 |
/bpo-11.d
0,0 → 1,31
#source: start3.s |
#source: bpo-6.s |
#source: bpo-2.s |
#source: bpo-5.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix --gc-sections |
#objdump: -st |
|
# Check that GC removes one of the three BPO:s, for the collected section. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.init 0+ (|\.init) |
0+10 l d \.text 0+ (|\.text) |
0+7e8 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+ l \.init 0+ _start |
0+14 g \.text 0+ x |
0+10 g \.text 0+ x2 |
2000000000000000 g \*ABS\* 0+ __bss_start |
2000000000000000 g \*ABS\* 0+ _edata |
2000000000000000 g \*ABS\* 0+ _end |
0+10 g \.text 0+ _start\. |
|
|
Contents of section \.init: |
0000 00000000 0000003d 00000000 0000003a .* |
Contents of section \.text: |
0010 232dfe00 232dfd00 .* |
Contents of section \.MMIX\.reg_contents: |
07e8 00000000 0000107c 00000000 0000a420 .* |
/loc2.d
0,0 → 1,21
#source: loc1.s |
#source: start.s |
#ld: -m elf64mmix |
#objdump: -str |
|
# Two text files. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+1000 l d \.text 0+ (|\.text) |
0+1004 g \.text 0+ _start |
0+1000 g \.text 0+ loc1 |
0+1000 g \*ABS\* 0+ __\.MMIX\.start\.\.text |
2000000000000000 g \*ABS\* 0+ __bss_start |
2000000000000000 g \*ABS\* 0+ _edata |
2000000000000000 g \*ABS\* 0+ _end |
0+1004 g \.text 0+ _start\. |
|
Contents of section \.text: |
1000 fd030303 e3fd0001 .* |
/sec-8a.s
0,0 → 1,4
.section .text.1 |
.byte 42 |
.space 32759 |
.byte 43 |
/bpo64addr.ld
0,0 → 1,13
OUTPUT_ARCH(mmix) |
ENTRY(Main) |
SECTIONS |
{ |
.text 0x100 : |
{ *(.text.x); *(.text.x2); } |
|
.text.away 0x4000000000001060 : |
{ *(.text); Main = _start; } |
|
.MMIX.reg_contents : |
{ *(.MMIX.reg_contents.linker_allocated); *(.MMIX.reg_contents); } |
} |
/bspec802.s
0,0 → 1,7
BSPEC 80 |
TETRA 4 % Decent section length name (in 32-bit words). However... |
ESPEC % Everything ends here. The next thing is a LOP_LOC for .data, or |
% an ending LOP-something, hence a non-LOP_QUOTE in the name. |
|
.data |
TETRA 0x112233 |
/b-offloc.s
0,0 → 1,9
% The .text contents is supposed to be linked --oformat binary with |
% b-post1.s and b-goodmain.s. The code below will provide a LOP_LOC |
% with a 64-bit address (0x789abcdef0123456) then 16 bytes of % random data. |
|
.text |
.byte 0x98,1,0,2 |
.8byte 0x789abcdef0123458 |
.byte 0xb0,0x45,0x19,0x7d,0x2c,0x1b,0x3,0xb2 |
.byte 0xe4,0xdb,0xf8,0x77,0xf,0xc7,0x66,0xfb |
/b-fixo2.d
0,0 → 1,27
#source: b-twoinsn.s |
#source: b-fixo2.s |
#source: b-post1.s |
#source: b-goodmain.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#objdump: -sht |
|
# Note that we "optimize" out the high tetrabyte of 0 written to |
# 2068098510aa5560, hence only the low part is left. |
|
.*: file format mmo |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+8 0+ 0+ 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
1 \.data 0+4 2068098510aa5564 2068098510aa5564 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD |
SYMBOL TABLE: |
0+4 g \.text Main |
0+4 g \.text a |
|
Contents of section \.text: |
0000 e3fd0001 e3fd0004 .* |
Contents of section \.data: |
2068098510aa5564 00000008 .* |
/bpo-19.d
0,0 → 1,33
#source: start.s |
#source: bpo-9.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix |
#objdump: -st |
|
# 223 (max) linker-allocated GREGs, four relocs merged for each register |
# allocated. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
0+100 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
#... |
0+ g \.text 0+ _start |
#... |
|
Contents of section \.text: |
0000 e3fd0001 230b2000 230b2040 230b2080 .* |
0010 230b20c0 230b2100 230b2140 230b2180 .* |
0020 230b21c0 230b2200 230b2240 230b2280 .* |
#... |
0dd0 230bfcc0 230bfd00 230bfd40 230bfd80 .* |
0de0 230bfdc0 230bfe00 230bfe40 230bfe80 .* |
0df0 230bfec0 .* |
Contents of section \.MMIX\.reg_contents: |
0100 00000000 00000000 00000000 00000100 .* |
0110 00000000 00000200 00000000 00000300 .* |
#... |
07d0 00000000 0000da00 00000000 0000db00 .* |
07e0 00000000 0000dc00 00000000 0000dd00 .* |
07f0 00000000 0000de00 .* |
/data1.s
0,0 → 1,2
LOC #20 << 56 |
xx OCTA Main+44 |
/b-bstab1.s
0,0 → 1,5
% The .text contents is supposed to be linked --oformat binary with |
% b-twoinsn.s and b-goodmain.s, and will provide an invalid LOP_STAB, one |
% with non-zero y and/or z. |
.text |
.byte 0x98,11,1,2 |
/sec-3.d
0,0 → 1,36
#source: sec-1.s |
#source: start.s |
#source: data1.s |
#ld: -m mmo |
#objdump: -sh |
|
.*: file format mmo |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+4 0+ 0+ 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
1 secname 0+19 0+4 0+4 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
2 \.a\.fourth\.section 0+10 0+20 0+20 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, READONLY, DATA |
3 \.data 0+4 2000000000000004 2000000000000004 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD |
4 anothersec 0+13 2000000000000008 2000000000000008 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, DATA |
5 thirdsec 0+a 200000000000001c 200000000000001c 0+ 2\*\*2 |
CONTENTS, READONLY |
Contents of section \.text: |
0000 e3fd0001 .* |
Contents of section secname: |
0004 00000001 00000002 00000003 00000004 .* |
0014 ffffffff fffff827 50 .* |
Contents of section \.a\.fourth\.section: |
0020 00000000 0087a238 00000000 302a55a8 .* |
Contents of section \.data: |
2000000000000004 0000002c .* |
Contents of section anothersec: |
2000000000000008 0000000a 00000009 00000008 00000007 .* |
2000000000000018 252729 .* |
Contents of section thirdsec: |
200000000000001c 00030d41 000186a2 2628 .* |
/ext1l.s
0,0 → 1,2
.global ext1 |
ext1 SWYM 4,8,16 |
/loc3m.d
0,0 → 1,14
#source: start.s |
#source: loc1.s |
#ld: -m mmo |
#objdump: -str |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+1000 g \.text Main |
0+1000 g \.text _start |
0+1004 g \.text loc1 |
|
Contents of section \.text: |
1000 e3fd0001 fd030303 .* |
/bpo-12m.d
0,0 → 1,9
#source: start.s |
#source: bpo-7.s |
#source: greg-1.s |
#as: -linker-allocated-gregs |
#ld: -m mmo |
#error: base-plus-offset relocation against register symbol |
|
# Check that we get an error message if we see a BPO against a register |
# symbol. Variant 1: a GREG allocated register. |
/bspec1.d
0,0 → 1,43
#source: bspec1.s |
#source: start.s |
#ld: -m elf64mmix |
#readelf: -Ssr -x1 -x2 |
|
There are 6 section headers, starting at offset 0xb8: |
|
Section Headers: |
\[Nr\] Name Type Address Offset |
Size EntSize Flags Link Info Align |
\[ 0\] NULL 0+ 0+ |
0+ 0+ 0 0 0 |
\[ 1\] \.text PROGBITS 0+ 0+78 |
0+4 0+ AX 0 0 4 |
\[ 2\] \.MMIX\.spec_data\.2 PROGBITS 0+ 0+7c |
0+4 0+ 0 0 4 |
\[ 3\] \.shstrtab STRTAB 0+ 0+80 |
0+33 0+ 0 0 1 |
\[ 4\] \.symtab SYMTAB 0+ 0+238 |
0+d8 0+18 5 3 8 |
\[ 5\] \.strtab STRTAB 0+ 0+310 |
0+2d 0+ 0 0 1 |
Key to Flags: |
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) |
I \(info\), L \(link order\), G \(group\), x \(unknown\) |
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) |
|
There are no relocations in this file\. |
|
Symbol table '\.symtab' contains 9 entries: |
Num: Value Size Type Bind Vis Ndx Name |
0: 0+ 0 NOTYPE LOCAL DEFAULT UND |
1: 0+ 0 SECTION LOCAL DEFAULT 1 |
2: 0+ 0 SECTION LOCAL DEFAULT 2 |
3: 0+ 0 FUNC GLOBAL DEFAULT 1 Main |
4: 0+ 0 NOTYPE GLOBAL DEFAULT 1 _start |
#... |
|
Hex dump of section '\.text': |
0x0+ e3fd0001 .* |
|
Hex dump of section '\.MMIX\.spec_data\.2': |
0x0+ 0000002a .* |
/pushja1b-s.d
0,0 → 1,19
#source: start.s |
#source: a.s |
#source: pushja.s |
#as: -x |
#ld: -m elf64mmix |
#objdump: -dr |
|
# Like pushja1b but with PUSHJ stub. |
|
.*: file format elf64-mmix |
Disassembly of section \.text: |
0+ <_start>: |
0: e3fd0001 setl \$253,0x1 |
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
0+8 <pushja>: |
8: e3fd0002 setl \$253,0x2 |
c: f30cfffe pushj \$12,4 <a> |
10: e3fd0003 setl \$253,0x3 |
/loc2.s
0,0 → 1,3
LOC #2000 |
loc2 SWYM 3,2,3 |
.global loc2 |
/bpo-11.s
0,0 → 1,5
.set i,0 |
.rept 222 |
LDA $11,_start+i*256 |
.set i,i+1 |
.endr |
/pushjs3bm.d
0,0 → 1,28
#source: nop123.s |
#source: nop123.s |
#source: a.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pushja.s |
#source: start.s |
#ld: -m mmo |
#objdump: -dr |
|
# Check that PUSHJ with an offset just inside the offset range of a JMP |
# stub expansion works, backwards, mmo version. |
|
.*: file format mmo |
Disassembly of section \.text: |
0+ <a-0x8>: |
0: fd010203 swym 1,2,3 |
4: fd010203 swym 1,2,3 |
0+8 <a>: |
8: e3fd0004 setl \$253,0x4 |
\.\.\. |
0+3fffffc <pushja>: |
3fffffc: e3fd0002 setl \$253,0x2 |
4000000: f20c0002 pushj \$12,4000008 <pushja\+0xc> |
4000004: e3fd0003 setl \$253,0x3 |
4000008: f1000000 jmp 8 <a> |
0+400000c <Main>: |
400000c: e3fd0001 setl \$253,0x1 |
/local5.d
0,0 → 1,49
#source: greg-4.s |
#source: greg-4.s |
#source: local2.s |
#source: local1.s |
#source: regext1.s |
#source: start.s |
#ld: -m elf64mmix |
#readelf: -Ssx1 -x2 |
|
# Like local1, but with two checks for a local register. |
|
There are 6 section headers, starting at offset 0xc8: |
|
Section Headers: |
\[Nr\] Name Type Address Offset |
Size EntSize Flags Link Info Align |
\[ 0\] NULL 0+ 0+ |
0+ 0+ 0 0 0 |
\[ 1\] \.text PROGBITS 0+ 0+78 |
0+c 0+ AX 0 0 4 |
\[ 2\] \.MMIX\.reg_content PROGBITS 0+7e8 0+84 |
0+10 0+ W 0 0 1 |
\[ 3\] \.shstrtab STRTAB 0+ 0+94 |
0+34 0+ 0 0 1 |
\[ 4\] \.symtab SYMTAB 0+ 0+248 |
0+108 0+18 5 5 8 |
\[ 5\] \.strtab STRTAB 0+ 0+350 |
0+32 0+ 0 0 1 |
Key to Flags: |
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) |
I \(info\), L \(link order\), G \(group\), x \(unknown\) |
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) |
|
Symbol table '\.symtab' contains 11 entries: |
Num: Value Size Type Bind Vis Ndx Name |
0: 0+ 0 NOTYPE LOCAL DEFAULT UND |
1: 0+ 0 SECTION LOCAL DEFAULT 1 |
2: 0+7e8 0 SECTION LOCAL DEFAULT 2 |
3: 0+fd 0 NOTYPE LOCAL DEFAULT PRC\[0xff00\] lsym |
4: 0+fe 0 NOTYPE LOCAL DEFAULT PRC\[0xff00\] lsym |
5: 0+fc 0 NOTYPE GLOBAL DEFAULT PRC\[0xff00\] ext1 |
6: 0+8 0 NOTYPE GLOBAL DEFAULT 1 _start |
#... |
|
Hex dump of section '\.text': |
0x0+ fd020202 fd030201 e3fd0001 .* |
|
Hex dump of section '\.MMIX\.reg_contents': |
0x0+7e8 00000000 0000004e 00000000 0000004e .* |
/pushja1f-s.d
0,0 → 1,19
#source: start.s |
#source: pushja.s |
#source: a.s |
#as: -x |
#ld: -m elf64mmix |
#objdump: -dr |
|
# Like pushja1f, but with PUSHJ stub. |
|
.*: file format elf64-mmix |
Disassembly of section \.text: |
0+ <_start>: |
0: e3fd0001 setl \$253,0x1 |
0+4 <pushja>: |
4: e3fd0002 setl \$253,0x2 |
8: f20c0002 pushj \$12,10 <a> |
c: e3fd0003 setl \$253,0x3 |
0+10 <a>: |
10: e3fd0004 setl \$253,0x4 |
/b-badm.d
0,0 → 1,6
#source: b-twoinsn.s |
#source: b-post1.s |
#source: b-badmain.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#error: invalid mmo file: initialization value for .255 is not `Main' |
/b-nosym.d
0,0 → 1,18
#source: b-twoinsn.s |
#source: b-post1.s |
#source: b-nosym.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#objdump: -st 2>/dev/null |
|
# Note that we have to redirect stderr when objdumping to get rid of the |
# "no symbols" message that would otherwise cause a spurious failure and |
# which we seemingly can't identify or prune in another way. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
no symbols |
|
Contents of section \.text: |
0000 e3fd0001 e3fd0004 .* |
/greg-4.d
0,0 → 1,35
#source: greg-1.s |
#source: gregbza1.s |
#source: start.s |
#source: a.s |
#as: -x |
#ld: -m elf64mmix |
#objdump: -dt |
|
# Like greg-3, but a different expanding insn. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
0+7f0 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+18 g \.text 0+ _start |
0+fe g \*REG\* 0+ areg |
#... |
0+1c g \.text 0+ a |
|
Disassembly of section \.text: |
|
0+ <_start-0x18>: |
0: 5afe0006 pbnz \$254,18 <_start> |
4: e3ff001c setl \$255,0x1c |
8: e6ff0000 incml \$255,0x0 |
c: e5ff0000 incmh \$255,0x0 |
10: e4ff0000 inch \$255,0x0 |
14: 9fffff00 go \$255,\$255,0 |
|
0+18 <_start>: |
18: e3fd0001 setl \$253,0x1 |
|
0+1c <a>: |
1c: e3fd0004 setl \$253,0x4 |
/b-fixo2.s
0,0 → 1,6
% The .text contents is supposed to be linked --oformat binary with |
% b-twoinsn.s and b-goodmain.s, and will provide a LOP_FIXO storing the |
% current address at address 0x2068098510aa5560. |
.text |
.byte 0x98,3,0x20,2 |
.8byte 0x68098510aa5560 |
/jumpa-8f.d
0,0 → 1,21
#source: start.s |
#source: jumpa.s |
#source: a.s |
#as: -no-expand |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <jumpa>: |
4: e3fd0002 setl \$253,0x2 |
8: f0000002 jmp 10 <a> |
c: e3fd0003 setl \$253,0x3 |
|
0+10 <a>: |
10: e3fd0004 setl \$253,0x4 |
/getaa-7b.d
0,0 → 1,24
#source: start.s |
#source: a.s |
#source: getaa.s |
#as: -x |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section .text: |
|
0+ <(Main|_start)>: |
0+: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
|
0+8 <getaa>: |
8: e3fd0002 setl \$253,0x2 |
c: e37b0004 setl \$123,0x4 |
10: e67b0000 incml \$123,0x0 |
14: e57b0000 incmh \$123,0x0 |
18: e47b0000 inch \$123,0x0 |
1c: e3fd0003 setl \$253,0x3 |
/spec805.d
0,0 → 1,25
#source: bspec805.s |
#source: start.s |
#ld: -m mmo |
#objdump: -sh |
|
# See spec801.d. |
# #5: non-quote LOP in section length, low part. |
|
.*: file format mmo |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+4 0+ 0+ 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
1 \.data 0+4 2000000000000000 2000000000000000 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD |
2 \.MMIX\.spec_data\.80 0+14 0+ 0+ 0+ 2\*\*2 |
CONTENTS |
Contents of section \.text: |
0000 e3fd0001 .* |
Contents of section \.data: |
2000000000000000 00112233 .* |
Contents of section \.MMIX\.spec_data\.80: |
0000 00000002 61616161 61616161 00000011 .* |
0010 00000000 .* |
/pad16.s
0,0 → 1,4
* Padding 16 bytes, suitable for testing relocs together with the larger |
* padding files. |
.text |
.space 16,0 |
/start-1.d
0,0 → 1,21
#source: start2.s |
#ld: -m elf64mmix |
#objdump: -td |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
0+4 g \.text 0+ _start |
2000000000000000 g \*ABS\* 0+ __bss_start |
2000000000000000 g \*ABS\* 0+ _edata |
2000000000000000 g \*ABS\* 0+ _end |
0+4 g \.text 0+ _start\. |
|
Disassembly of section \.text: |
|
0+ <_start-0x4>: |
0: fd000001 swym 0,0,1 |
|
0+4 <_start>: |
4: fd000002 swym 0,0,2 |
/bspec1.s
0,0 → 1,3
BSPEC 2 |
TETRA :Main+42 |
ESPEC |
/local6m.d
0,0 → 1,9
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: local1.s |
#source: local2.s |
#source: ext1.s |
#source: start.s |
#ld: -m mmo |
#error: not a local register |
/bpo-20.d
0,0 → 1,8
#source: start.s |
#source: bpo-10.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix |
#error: Too many global registers |
|
# Check that many too many gregs are recognized (and not signed/unsigned |
# bugs with checks for < 32 appear). |
/sec-7c.s
0,0 → 1,6
.section .di |
.byte 46 |
.rept 32765 |
.byte 0 |
.endr |
.byte 47 |
/start4.s
0,0 → 1,6
# When GC, all sections in each file must be referenced from within a kept |
# section (which .init is, which .text isn't). Here, we don't refer to |
# anything so whatever is linked will be discarded. |
.section .init,"ax",@progbits |
_start: |
SETL $119,1190 |
/undef-2.d
0,0 → 1,5
#source: undef-2.s |
#source: start.s |
#as: -x |
#ld: -m elf64mmix |
#error: undefined reference to `undefd' |
/gregpsj1.s
0,0 → 1,4
# Use a symbolic register areg, presumably allocated by greg in another file. |
# The "PUSHJ" will be expanded, and the reloc for areg must be resolved |
# before the other relocs for that insn. |
PUSHJ areg,a |
/pushjs3b.d
0,0 → 1,30
#source: start4.s |
#source: nop123.s |
#source: a.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pushja.s |
#source: start.s |
#ld: -m elf64mmix |
#objdump: -dr |
|
# Check that PUSHJ with an offset just inside the offset range of a JMP |
# stub expansion works, backwards, ELF version. |
|
.*: file format elf64-mmix |
Disassembly of section \.init: |
0+ <_start>: |
0: e37704a6 setl \$119,0x4a6 |
Disassembly of section \.text: |
0+4 <a-0x4>: |
4: fd010203 swym 1,2,3 |
0+8 <a>: |
8: e3fd0004 setl \$253,0x4 |
\.\.\. |
0+3fffffc <pushja>: |
3fffffc: e3fd0002 setl \$253,0x2 |
4000000: f20c0002 pushj \$12,4000008 <pushja\+0xc> |
4000004: e3fd0003 setl \$253,0x3 |
4000008: f1000000 jmp 8 <a> |
0+400000c <_start>: |
400000c: e3fd0001 setl \$253,0x1 |
/greg-11.d
0,0 → 1,39
#source: greg-1.s |
#source: gregldo1.s |
#source: gregget2.s |
#source: a.s |
#source: greg-3.s |
#source: start.s |
#source: greg-2.s |
#as: -x |
#ld: -m mmo |
#objdump: -dt |
|
# Have two used gregs and one unused, mmo. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+20 g \.text Main |
0+fe g \*REG\* b |
0+20 g \.text _start |
0+fc g \*REG\* areg |
0+fd g \*REG\* c |
0+1c g \.text a |
|
Disassembly of section \.text: |
|
0+ <a-0x1c>: |
0: 8c0c20fc ldo \$12,\$32,areg |
4: 8d7bfc22 ldo \$123,areg,34 |
8: 8dfcea38 ldo areg,\$234,56 |
c: e3fe001c setl b,0x1c |
10: e6fe0000 incml b,0x0 |
14: e5fe0000 incmh b,0x0 |
18: e4fe0000 inch b,0x0 |
|
0+1c <a>: |
1c: e3fd0004 setl c,0x4 |
|
0+20 <(Main|_start)>: |
20: e3fd0001 setl c,0x1 |
/b-nosym.s
0,0 → 1,5
% The .text contents is supposed to be linked --oformat binary with |
% b-twoinsn.s, and will provide a valid end of a mmo file but with no |
% symbols (if that is actually valid). |
.text |
.byte 0x98,0x0b,0x00,0x00,0x98,0x0c,0x00,0x00 |
/greg-4.s
0,0 → 1,2
# A single local greg. |
lsym GREG 78 |
/ext1-254.s
0,0 → 1,2
.global ext1 |
ext1 IS 254 |
/pushja.s
0,0 → 1,7
* Just PUSHJs to an external symbol, with some padding. |
.text |
.global pushja |
pushja: |
SET $253,2 |
PUSHJ $12,a |
SET $253,3 |
/pushjs1m.d
0,0 → 1,26
#source: nop123.s |
#source: pushja.s |
#source: pad2p18m32.s |
#source: pad16.s |
#source: pad4.s |
#source: a.s |
#source: start.s |
#ld: -m mmo |
#objdump: -dr |
|
# Check that PUSHJ with an offset just within the offset range gets no |
# stub expansion, mmo version. |
|
.*: file format mmo |
Disassembly of section \.text: |
0+ <pushja-0x4>: |
0: fd010203 swym 1,2,3 |
0+4 <pushja>: |
4: e3fd0002 setl \$253,0x2 |
8: f20cffff pushj \$12,40004 <a> |
c: e3fd0003 setl \$253,0x3 |
\.\.\. |
0+40004 <a>: |
40004: e3fd0004 setl \$253,0x4 |
0+40008 <Main>: |
40008: e3fd0001 setl \$253,0x1 |
/hdr-1.d
0,0 → 1,19
#source: start.s |
#source: a.s |
#ld: -T $srcdir/$subdir/mmohdr1.ld |
#objdump: -sht |
|
.*: file format mmo |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+8 0+100 0+100 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
SYMBOL TABLE: |
0+100 g \.text Main |
0+100 g \.text _start |
0+104 g \.text a |
|
|
Contents of section \.text: |
0100 e3fd0001 e3fd0004 .* |
/greg-19.d
0,0 → 1,21
#source: start.s |
#source: aregm.s |
#source: gregldo1.s |
#ld: -m elf64mmix |
#objdump: -str |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
0+7f0 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+ g F \.text 0+ Main |
0+ g \.text 0+ _start |
0+fe g \*REG\* 0+ areg |
#... |
|
Contents of section \.text: |
0+ e3fd0001 8f03fe10 8e0307fe 8f05fe04 .* |
0+10 8c0c20fe 8d7bfe22 8dfeea38 .* |
Contents of section \.MMIX\.reg_contents: |
07f0 00000000 00000004 .* |
/bpo-21m.d
0,0 → 1,9
#source: start.s |
#source: bpo-11.s |
#source: bpo-7.s |
#as: -linker-allocated-gregs |
#ld: -m mmo |
#error: ^[^c][^h][^i][^l][^d].* undefined reference to `areg'$ |
|
# A BPO reloc against an undefined symbol, with a full set of normal |
# BPO:s. |
/b-badquot.d
0,0 → 1,7
#source: b-twoinsn.s |
#source: b-badquot.s |
#source: b-post1.s |
#source: b-goodmain.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#error: invalid mmo file: .* lop_quote |
/pad2p26m32.s
0,0 → 1,4
* Padding (1 << 27)/2 - 32 bytes; that is, suitable for testing the |
* long-range relocs. |
.text |
.space (1 << 27)/2 - 32,0 |
/undef-2.s
0,0 → 1,4
PUSHJ $5,undefd |
/bpo-3.d
0,0 → 1,24
#source: start.s |
#source: bpo-1.s |
#source: bpo-2.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix |
#objdump: -st |
|
# Just two BPO relocs merged as one linker-allocated GREG. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
0+7f0 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+4 l \.text 0+ x |
0+ g \.text 0+ _start |
#... |
0+8 g \.text 0+ y |
#... |
|
Contents of section \.text: |
0000 e3fd0001 232afe1e 2321fe00 .* |
Contents of section \.MMIX\.reg_contents: |
07f0 00000000 00000010 .* |
/bza-1f.d
0,0 → 1,26
#source: start.s |
#source: bza.s |
#source: a.s |
#as: -x |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0+: e3fd0001 setl \$253,0x1 |
|
0+4 <bza>: |
4: e3fd0002 setl \$253,0x2 |
8: 5aea0006 pbnz \$234,20 <bza\+0x1c> |
c: e3ff0024 setl \$255,0x24 |
10: e6ff0000 incml \$255,0x0 |
14: e5ff0000 incmh \$255,0x0 |
18: e4ff0000 inch \$255,0x0 |
1c: 9fffff00 go \$255,\$255,0 |
20: e3fd0003 setl \$253,0x3 |
|
0+24 <a>: |
24: e3fd0004 setl \$253,0x4 |
/pushjs3r.d
0,0 → 1,32
#source: nop123.s |
#source: pushja.s |
#source: undef-2.s |
#source: nop123.s |
#source: pad16.s |
#source: pad2p18m32.s |
#ld: -r -m elf64mmix |
#objdump: -dr |
|
# When linking relocatably, check two expanded stubbable PUSHJs. |
|
# With better relaxation support for relocatable links, both should be |
# able to pass through unexpanded. Right now, we just check that they can |
# coexist peacefully. |
|
.*: file format elf64-mmix |
Disassembly of section \.text: |
0+ <pushja-0x4>: |
0: fd010203 swym 1,2,3 |
0+4 <pushja>: |
4: e3fd0002 setl \$253,0x2 |
8: f20c0002 pushj \$12,10 <pushja\+0xc> |
c: e3fd0003 setl \$253,0x3 |
10: f0000000 jmp 10 <pushja\+0xc> |
10: R_MMIX_JMP a |
\.\.\. |
24: f2050001 pushj \$5,28 <pushja\+0x24> |
28: f0000000 jmp 28 <pushja\+0x24> |
28: R_MMIX_JMP undefd |
\.\.\. |
3c: fd010203 swym 1,2,3 |
\.\.\. |
/jumpa-3f.d
0,0 → 1,28
#source: start.s |
#source: jumpa.s |
#source: pad2p26m32.s |
#source: pad4.s |
#source: a.s |
#as: -x |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <jumpa>: |
4: e3fd0002 setl \$253,0x2 |
8: f0ffffff jmp 4000004 <a> |
c: fd000000 swym 0,0,0 |
10: fd000000 swym 0,0,0 |
14: fd000000 swym 0,0,0 |
18: fd000000 swym 0,0,0 |
1c: e3fd0003 setl \$253,0x3 |
\.\.\. |
|
0+4000004 <a>: |
4000004: e3fd0004 setl \$253,0x4 |
/getaa-2b.d
0,0 → 1,21
#source: start.s |
#source: a.s |
#source: getaa.s |
#as: -no-expand |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0+: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
|
0+8 <getaa>: |
8: e3fd0002 setl \$253,0x2 |
c: f57bfffe geta \$123,4 <a> |
10: e3fd0003 setl \$253,0x3 |
/zeroehelf.d
0,0 → 1,17
#source: x.s |
#source: y.s |
#ld: -m elf64mmix -Ttext 0xa00 -T $srcdir/$subdir/zeroeh.ld |
#objdump: -s |
|
# The word at address 201c, for the linkonce-excluded section, must be zero. |
|
.*: file format elf64-mmix |
|
Contents of section \.text: |
0a00 00000a08 00000a10 00000001 00000002 .* |
0a10 00000003 .* |
Contents of section \.eh_frame: |
2000 00000002 00000a08 00000008 00000007 .* |
2010 00000a10 00000004 00006066 00000000 .* |
2020 00000004 .* |
#pass |
/main1.s
0,0 → 1,5
% For tests regarding the Main symbol and mmo. Most tests use start.s as |
% a base file. |
.text |
Main: |
SET $253,1 |
/jumpa13f.d
0,0 → 1,29
#source: start.s |
#source: jumpa.s |
#source: pad2p26m32.s |
#source: pad4.s |
#source: pad4.s |
#source: a.s |
#as: -x |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <jumpa>: |
4: e3fd0002 setl \$253,0x2 |
8: e3ff0008 setl \$255,0x8 |
c: e6ff0400 incml \$255,0x400 |
10: e5ff0000 incmh \$255,0x0 |
14: e4ff0000 inch \$255,0x0 |
18: 9fffff00 go \$255,\$255,0 |
1c: e3fd0003 setl \$253,0x3 |
\.\.\. |
|
0+4000008 <a>: |
4000008: e3fd0004 setl \$253,0x4 |
/getaa12b.d
0,0 → 1,26
#source: start.s |
#source: a.s |
#source: pad2p18m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: getaa.s |
#as: -no-expand |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
\.\.\. |
|
0+40000 <getaa>: |
40000: e3fd0002 setl \$253,0x2 |
40004: f57b0000 geta \$123,4 <a> |
40008: e3fd0003 setl \$253,0x3 |
/local1m.d
0,0 → 1,19
#source: greg-4.s |
#source: greg-4.s |
#source: local1.s |
#source: regext1.s |
#source: start.s |
#ld: -m mmo |
#objdump: -str |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+4 g \.text Main |
0+fc g \*REG\* ext1 |
0+4 g \.text _start |
|
Contents of section \.text: |
0000 fd030201 e3fd0001 .* |
Contents of section \.MMIX\.reg_contents: |
07e8 00000000 0000004e 00000000 0000004e .* |
/sec-6m.d
0,0 → 1,32
#source: start.s |
#source: sec-6.s |
#source: a.s |
#as: -x |
#ld: -m mmo |
#objdump: -xs |
|
# A non-loaded section with relocs would have the SEC_RELOC bit set in the |
# output if we didn't clear it. |
|
.*: file format mmo |
.* |
architecture: mmix, flags 0x0+10: |
HAS_SYMS |
start address 0x0+ |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+8 0+ 0+ 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
1 \.debug_frame 0+10 0+ 0+ 0+ 2\*\*2 |
CONTENTS, READONLY, DEBUGGING |
SYMBOL TABLE: |
0+ g \.text Main |
0+ g \.text _start |
0+8 g \.text debugb |
0+4 g \.text a |
|
Contents of section \.text: |
0000 e3fd0001 e3fd0004 .* |
Contents of section \.debug_frame: |
0000 00000000 00000004 00000000 00000008 .* |
/bza.s
0,0 → 1,7
* Just BEQs to an external symbol, with some padding. |
.text |
.global bza |
bza: |
SET $253,2 |
BZ $234,a |
SET $253,3 |
/b-badquot.s
0,0 → 1,5
% The .text contents is supposed to be linked --oformat binary with |
% b-twoinsn.s and b-goodmain.s, and will provide a LOP_QUOTE with invalid; |
% non-zero, YZ field. |
.text |
.byte 0x98,0,0xff,0 |
/bpo-3.s
0,0 → 1,5
LDOU $121,_start+42+4+4+257 |
/sec-8b.s
0,0 → 1,4
.section .text.1 |
.byte 44 |
.space 32764 |
.byte 45 |
/loc3.d
0,0 → 1,21
#source: start.s |
#source: loc1.s |
#ld: -m elf64mmix |
#objdump: -str |
|
# Two text files in opposite order. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+1000 l d \.text 0+ (|\.text) |
0+1000 g \.text 0+ _start |
0+1004 g \.text 0+ loc1 |
0+1000 g \*ABS\* 0+ __\.MMIX\.start\.\.text |
2000000000000000 g \*ABS\* 0+ __bss_start |
2000000000000000 g \*ABS\* 0+ _edata |
2000000000000000 g \*ABS\* 0+ _end |
0+1000 g \.text 0+ _start\. |
|
Contents of section \.text: |
1000 e3fd0001 fd030303 .* |
/bpo-12.d
0,0 → 1,9
#source: start.s |
#source: bpo-7.s |
#source: greg-1.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix |
#error: base-plus-offset relocation against register symbol |
|
# Check that we get an error message if we see a BPO against a register |
# symbol. Variant 1: a GREG allocated register. |
/bpo-9m.d
0,0 → 1,22
#source: start3.s |
#source: bpo-6.s |
#source: bpo-5.s |
#as: -linker-allocated-gregs |
#ld: -m mmo --gc-sections |
#objdump: -st |
|
# Check that GC does not mess up things when no BPO:s are collected. |
# Note that mmo doesn't support GC at the moment; it's a nop. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+ g \.text Main |
0+4 g \.text x |
0+ g \.text x2 |
|
Contents of section \.text: |
0000 232dfe00 232dfd00 00000000 0000002d .* |
0010 00000000 0000002a .* |
Contents of section \.MMIX\.reg_contents: |
07e8 00000000 0000106c 00000000 0000a410 .* |
/greg-20.d
0,0 → 1,18
#source: start.s |
#source: aregm.s |
#source: gregldo1.s |
#ld: -m mmo |
#objdump: -str |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+ g \.text Main |
0+ g \.text _start |
0+fe g \*REG\* areg |
|
Contents of section \.text: |
0+ e3fd0001 8f03fe10 8e0307fe 8f05fe04 .* |
0+10 8c0c20fe 8d7bfe22 8dfeea38 .* |
Contents of section \.MMIX\.reg_contents: |
07f0 00000000 00000004 .* |
/bspec803.s
0,0 → 1,9
BSPEC 80 |
TETRA 2 % Decent section length name (in 32-bit words). However... |
BYTE "aaaa" |
BYTE 0x98,"aaa" # A LOP_QUOTEd part here. And also... |
ESPEC % Everything ends here. The next thing is a LOP_LOC for .data, or |
% an ending LOP-something, hence a non-LOP_QUOTE in the section flags. |
|
.data |
TETRA 0x112233 |
/local11m.d
0,0 → 1,6
#source: local1.s |
#source: greg-1.s |
#source: ext1l.s |
#source: start.s |
#ld: -m mmo |
#error: valid only with a register or absolute value |
/sec-4.d
0,0 → 1,22
#source: sec-2.s |
#source: start.s |
#source: data1.s |
#ld: -m mmo -T $srcdir/$subdir/mmosec1.ld |
#objdump: -sh |
|
.*: file format mmo |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+4 0+100 0+100 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
1 \.data 0+4 2000000000000004 2000000000000004 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD |
2 \.other 0+c 1000000000000000 1000000000000000 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
Contents of section \.text: |
0100 e3fd0001 .* |
Contents of section \.data: |
2000000000000004 0000012c .* |
Contents of section \.other: |
1000000000000000 0000000c 00000022 00000001 .* |
/pushja1b.d
0,0 → 1,25
#source: start.s |
#source: a.s |
#source: pushja.s |
#as: -x --no-pushj-stubs |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
|
0+8 <pushja>: |
8: e3fd0002 setl \$253,0x2 |
c: e3ff0004 setl \$255,0x4 |
10: e6ff0000 incml \$255,0x0 |
14: e5ff0000 incmh \$255,0x0 |
18: e4ff0000 inch \$255,0x0 |
1c: bf0cff00 pushgo \$12,\$255,0 |
20: e3fd0003 setl \$253,0x3 |
/undef-3m.d
0,0 → 1,18
#source: start.s |
#ld: -m mmo -u undefd |
#objdump: -x |
|
.*: file format mmo |
.* |
architecture: mmix, flags 0x0+10: |
HAS_SYMS |
start address 0x0+ |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+4 0+ 0+ 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
SYMBOL TABLE: |
0+ g \.text Main |
0+ g \*UND\* undefd |
0+ g \.text _start |
/bspec2.d
0,0 → 1,53
#source: bspec1.s |
#source: bspec2.s |
#source: bspec1.s |
#source: start.s |
#source: ext1.s |
#ld: -m elf64mmix |
#readelf: -Ssr -x1 -x2 -x3 |
|
There are 7 section headers, starting at offset 0xd0: |
|
Section Headers: |
\[Nr\] Name Type Address Offset |
Size EntSize Flags Link Info Align |
\[ 0\] NULL 0+ 0+ |
0+ 0+ 0 0 0 |
\[ 1\] \.text PROGBITS 0+ 0+78 |
0+4 0+ AX 0 0 4 |
\[ 2\] \.MMIX\.spec_data\.2 PROGBITS 0+ 0+7c |
0+8 0+ 0 0 4 |
\[ 3\] \.MMIX\.spec_data\.3 PROGBITS 0+ 0+84 |
0+4 0+ 0 0 4 |
\[ 4\] \.shstrtab STRTAB 0+ 0+88 |
0+45 0+ 0 0 1 |
\[ 5\] \.symtab SYMTAB 0+ 0+290 |
0+108 0+18 6 4 8 |
\[ 6\] \.strtab STRTAB 0+ 0+398 |
0+32 0+ 0 0 1 |
Key to Flags: |
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) |
I \(info\), L \(link order\), G \(group\), x \(unknown\) |
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) |
|
There are no relocations in this file\. |
|
Symbol table '\.symtab' contains 11 entries: |
Num: Value Size Type Bind Vis Ndx Name |
0: 0+ 0 NOTYPE LOCAL DEFAULT UND |
1: 0+ 0 SECTION LOCAL DEFAULT 1 |
2: 0+ 0 SECTION LOCAL DEFAULT 2 |
3: 0+ 0 SECTION LOCAL DEFAULT 3 |
4: 0+ 0 FUNC GLOBAL DEFAULT 1 Main |
5: 0+fc 0 NOTYPE GLOBAL DEFAULT ABS ext1 |
6: 0+ 0 NOTYPE GLOBAL DEFAULT 1 _start |
#... |
|
Hex dump of section '\.text': |
0x0+ e3fd0001 .* |
|
Hex dump of section '\.MMIX\.spec_data\.2': |
0x0+ 0000002a 0000002a .* |
|
Hex dump of section '\.MMIX\.spec_data\.3': |
0x0+ 000000fc .* |
/mmosec1.ld
0,0 → 1,16
OUTPUT_ARCH(mmix) |
ENTRY(Main) |
SECTIONS |
{ |
.text 0x100 : |
{ *(.text); Main = _start; } |
|
.other 0x1000000000000000 : |
{ *(secname); *(anothersec); *(thirdsec); *(.a.fourth.section); } |
|
.data 0x2000000000000000 : |
{ *(.data); } |
|
.MMIX.reg_contents : |
{ *(.MMIX.reg_contents); } |
} |
/local6.d
0,0 → 1,9
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: local1.s |
#source: local2.s |
#source: ext1.s |
#source: start.s |
#ld: -m elf64mmix |
#error: not a local register |
/jumpa-6b.d
0,0 → 1,11
#source: start.s |
#source: a.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: pad4.s |
#source: jumpa.s |
#as: -no-expand |
#ld: -m elf64mmix |
#error: relocation truncated to fit: R_MMIX_ADDR27 against symbol `a' |
/bpo-18m.d
0,0 → 1,25
#source: start.s |
#source: bpo-1.s |
#source: bpo-2.s |
#source: bpo-5.s |
#source: bpo-6.s |
#as: -linker-allocated-gregs |
#ld: -m mmo -T$srcdir/$subdir/bpo64addr.ld |
#objdump: -st |
|
.*: file format mmo |
|
SYMBOL TABLE: |
4000000000001060 g \*ABS\* Main |
0+100 g \.text x |
0+104 g \.text x2 |
4000000000001060 g \*ABS\* _start |
4000000000001068 g \*ABS\* y |
|
Contents of section \.text: |
0100 232dfc00 232dfd00 .* |
Contents of section \.text\.away: |
4000000000001060 e3fd0001 232afe1e 2321fe00 .* |
Contents of section \.MMIX\.reg_contents: |
07e0 00000000 00001168 00000000 0000a514 .* |
07f0 40000000 00001070 .* |
/greg-5.d
0,0 → 1,34
#source: greg-1.s |
#source: gregpsj1.s |
#source: start.s |
#source: a.s |
#as: -x --no-pushj-stubs |
#ld: -m elf64mmix |
#objdump: -dt |
|
# Like greg-3, but a different expanding insn. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
0+7f0 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+14 g \.text 0+ _start |
0+fe g \*REG\* 0+ areg |
#... |
0+18 g \.text 0+ a |
|
Disassembly of section \.text: |
|
0+ <_start-0x14>: |
0: e3ff0018 setl \$255,0x18 |
4: e6ff0000 incml \$255,0x0 |
8: e5ff0000 incmh \$255,0x0 |
c: e4ff0000 inch \$255,0x0 |
10: bffeff00 pushgo \$254,\$255,0 |
|
0+14 <_start>: |
14: e3fd0001 setl \$253,0x1 |
|
0+18 <a>: |
18: e3fd0004 setl \$253,0x4 |
/spec806.d
0,0 → 1,25
#source: bspec806.s |
#source: start.s |
#ld: -m mmo |
#objdump: -sh |
|
# See spec801.d. |
# #6: non-quote LOP in section vma, high part. |
|
.*: file format mmo |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+4 0+ 0+ 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
1 \.data 0+4 2000000000000000 2000000000000000 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD |
2 \.MMIX\.spec_data\.80 0+18 0+ 0+ 0+ 2\*\*2 |
CONTENTS |
Contents of section \.text: |
0000 e3fd0001 .* |
Contents of section \.data: |
2000000000000000 00112233 .* |
Contents of section \.MMIX\.spec_data\.80: |
0000 00000002 61616161 61616161 00000011 .* |
0010 00000000 0000000c .* |
/reg-2m.d
0,0 → 1,7
#source: areg-t.s |
#source: gregget1.s |
#source: start.s |
#source: a.s |
#as: -x |
#ld: -m mmo |
#error: register relocation against non-register symbol: areg in \.text |
/start-2.d
0,0 → 1,4
#source: main1.s |
#source: a.s |
#ld: -m mmo -e a |
#error: Bad symbol definition: `Main' set to |
/bspec2.s
0,0 → 1,3
BSPEC 3 |
TETRA ext1 |
ESPEC |
/bpo-4m.d
0,0 → 1,22
#source: start.s |
#source: greg-1.s |
#source: bpo-3.s |
#source: bpo-1.s |
#as: -linker-allocated-gregs |
#ld: -m mmo |
#objdump: -st |
|
# Three GREGs: one explicit, two linker-allocated. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+ g \.text Main |
0+ g \.text _start |
0+fe g \*REG\* areg |
|
Contents of section \.text: |
0000 e3fd0001 8f79fd00 232afc00 .* |
Contents of section \.MMIX\.reg_contents: |
07e0 00000000 00000032 00000000 00000133 .* |
07f0 00007048 860f3a38 .* |
/ext1.s
0,0 → 1,2
.global ext1 |
ext1 IS 252 |
/bpo-21.d
0,0 → 1,10
#source: start.s |
#source: bpo-11.s |
#source: bpo-7.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix |
#error: ^[^c][^h][^i][^l][^d].* undefined reference to `areg'$ |
|
# A BPO reloc against an undefined symbol, with a full set of normal |
# BPO:s. |
|
/undef-3.d
0,0 → 1,34
#source: start.s |
#ld: -u undefd -m elf64mmix |
#readelf: -S -s |
|
There are 5 section headers, starting at offset 0xa0: |
|
Section Headers: |
\[Nr\] Name Type Address Offset |
Size EntSize Flags Link Info Align |
\[ 0\] NULL 0+ 0+ |
0+ 0+ 0 0 0 |
\[ 1\] \.text PROGBITS 0+ 0+78 |
0+4 0+ AX 0 0 4 |
\[ 2\] \.shstrtab STRTAB 0+ 0+7c |
0+21 0+ 0 0 1 |
\[ 3\] \.symtab SYMTAB 0+ 0+1e0 |
0+c0 0+18 4 2 8 |
\[ 4\] \.strtab STRTAB 0+ 0+2a0 |
0+2f 0+ 0 0 1 |
Key to Flags: |
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) |
I \(info\), L \(link order\), G \(group\), x \(unknown\) |
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) |
|
Symbol table '\.symtab' contains 8 entries: |
Num: Value Size Type Bind Vis Ndx Name |
0: 0+ 0 NOTYPE LOCAL DEFAULT UND |
1: 0+ 0 SECTION LOCAL DEFAULT 1 |
2: 0+ 0 NOTYPE GLOBAL DEFAULT UND undefd |
3: 0+ 0 NOTYPE GLOBAL DEFAULT 1 _start |
4: 2000000000000000 0 NOTYPE GLOBAL DEFAULT ABS __bss_start |
5: 2000000000000000 0 NOTYPE GLOBAL DEFAULT ABS _edata |
6: 2000000000000000 0 NOTYPE GLOBAL DEFAULT ABS _end |
7: 0+ 0 NOTYPE GLOBAL DEFAULT 1 _start\. |
/sec-7d.s
0,0 → 1,6
.section .di |
.byte 48 |
.rept 32766 |
.byte 0 |
.endr |
.byte 49 |
/greg-12.d
0,0 → 1,34
#source: greg-1.s |
#source: gregget1.s |
#source: start.s |
#source: a.s |
#as: -x |
#ld: -m mmo |
#objdump: -dt |
|
# A greg usage with an expanding insn. The register reloc must be |
# evaluated before the expanding reloc. Here, it doesn't appear in the |
# wrong order, and it doesn't seem like they would naturally appear in the |
# wrong order, but anyway; mmo. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+10 g \.text Main |
0+10 g \.text _start |
0+fe g \*REG\* areg |
0+14 g \.text a |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)-0x10>: |
0: e3fe0014 setl areg,0x14 |
4: e6fe0000 incml areg,0x0 |
8: e5fe0000 incmh areg,0x0 |
c: e4fe0000 inch areg,0x0 |
|
0+10 <(Main|_start)>: |
10: e3fd0001 setl \$253,0x1 |
|
0+14 <a>: |
14: e3fd0004 setl \$253,0x4 |
/greg-5.s
0,0 → 1,20
# 16 local gregs. |
A GREG |
B GREG |
C GREG |
D GREG |
|
E GREG |
F GREG |
G GREG |
H GREG |
|
I GREG |
J GREG |
K GREG |
L GREG |
|
M GREG |
N GREG |
O GREG |
P GREG |
/pad4.s
0,0 → 1,4
* Padding 16 bytes, suitable for testing relocs together with the larger |
* padding files. |
.text |
.space 4,0 |
/greg-5s.d
0,0 → 1,25
#source: greg-1.s |
#source: gregpsj1.s |
#source: start.s |
#source: a.s |
#as: -x |
#ld: -m elf64mmix |
#objdump: -dt |
|
# Like greg-3, but a different expanding insn. |
|
.*: file format elf64-mmix |
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
0+7f0 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+4 g \.text 0+ _start |
0+fe g \*REG\* 0+ areg |
#... |
0+8 g \.text 0+ a |
Disassembly of section \.text: |
0+ <_start-0x4>: |
0: f2fe0002 pushj \$254,8 <a> |
0+4 <_start>: |
4: e3fd0001 setl \$253,0x1 |
0+8 <a>: |
8: e3fd0004 setl \$253,0x4 |
/aregm.s
0,0 → 1,5
.global areg |
areg GREG Main+4 |
LDOU $3,areg,16 |
LDOU $3,$7,areg |
LDOU $5,Main+8 |
/jumpa-1b.d
0,0 → 1,25
#source: start.s |
#source: a.s |
#source: jumpa.s |
#as: -x |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
|
0+8 <jumpa>: |
8: e3fd0002 setl \$253,0x2 |
c: f1fffffe jmp 4 <a> |
10: fd000000 swym 0,0,0 |
14: fd000000 swym 0,0,0 |
18: fd000000 swym 0,0,0 |
1c: fd000000 swym 0,0,0 |
20: e3fd0003 setl \$253,0x3 |
/bpo-13m.d
0,0 → 1,9
#source: start.s |
#source: bpo-7.s |
#source: areg-256.s |
#as: -linker-allocated-gregs |
#ld: -m mmo |
#error: base-plus-offset relocation against register symbol |
|
# Check that we get an error message if we see a BPO against a register |
# symbol. Variant 2: a register symbol. |
/loc4m.d
0,0 → 1,17
#source: loc1.s |
#source: data1.s |
#source: start.s |
#ld: -m mmo |
#objdump: -str |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+1004 g \.text Main |
0+1004 g \.text _start |
0+1000 g \.text loc1 |
|
Contents of section \.text: |
1000 fd030303 e3fd0001 .* |
Contents of section \.data: |
2000000000000004 00001030 .* |
/bpo-4.d
0,0 → 1,25
#source: start.s |
#source: greg-1.s |
#source: bpo-3.s |
#source: bpo-1.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix |
#objdump: -st |
|
# Three GREGs: one explicit, two linker-allocated. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
0+7e0 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+8 l \.text 0+ x |
0+ g \.text 0+ _start |
0+fe g \*REG\* 0+ areg |
#... |
|
Contents of section \.text: |
0000 e3fd0001 8f79fd00 232afc00 .* |
Contents of section \.MMIX\.reg_contents: |
07e0 00000000 00000032 00000000 00000133 .* |
07f0 00007048 860f3a38 .* |
/x.s
0,0 → 1,26
;# Main file, x.s, with the program (_start) referring to two |
;# linkonce functions fn and fn2. The functions fn and fn2 are |
;# supposed to be equivalent of C++ template instantiations; the |
;# main file instantiates fn. There's the equivalent of an FDE |
;# entry in .eh_frame, referring to fn via a local label. |
|
.text |
.global _start |
_start: |
.long fn |
.long fn2 |
|
.section .gnu.linkonce.t.fn,"ax",@progbits |
.weak fn |
.type fn,@function |
fn: |
L:a: |
.long 1 |
.long 2 |
L:b: |
.size fn,L:b-L:a |
|
.section .eh_frame,"aw",@progbits |
.long 2 |
.long L:a |
.long L:b-L:a |
/bza-7f.d
0,0 → 1,26
#source: start.s |
#source: bza.s |
#source: a.s |
#as: -x |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0+: e3fd0001 setl \$253,0x1 |
|
0+4 <bza>: |
4: e3fd0002 setl \$253,0x2 |
8: 5aea0006 pbnz \$234,20 <bza\+0x1c> |
c: e3ff0024 setl \$255,0x24 |
10: e6ff0000 incml \$255,0x0 |
14: e5ff0000 incmh \$255,0x0 |
18: e4ff0000 inch \$255,0x0 |
1c: 9fffff00 go \$255,\$255,0 |
20: e3fd0003 setl \$253,0x3 |
|
0+24 <a>: |
24: e3fd0004 setl \$253,0x4 |
/getaa-8b.d
0,0 → 1,21
#source: start.s |
#source: a.s |
#source: getaa.s |
#as: -no-expand |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0+: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
|
0+8 <getaa>: |
8: e3fd0002 setl \$253,0x2 |
c: f57bfffe geta \$123,4 <a> |
10: e3fd0003 setl \$253,0x3 |
/jumpa-9f.d
0,0 → 1,28
#source: start.s |
#source: jumpa.s |
#source: pad2p26m32.s |
#source: pad4.s |
#source: a.s |
#as: -x |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <jumpa>: |
4: e3fd0002 setl \$253,0x2 |
8: f0ffffff jmp 4000004 <a> |
c: fd000000 swym 0,0,0 |
10: fd000000 swym 0,0,0 |
14: fd000000 swym 0,0,0 |
18: fd000000 swym 0,0,0 |
1c: e3fd0003 setl \$253,0x3 |
\.\.\. |
|
0+4000004 <a>: |
4000004: e3fd0004 setl \$253,0x4 |
/local7m.d
0,0 → 1,20
#source: greg-4.s |
#source: greg-4.s |
#source: local1.s |
#source: local2.s |
#source: ext1.s |
#source: start.s |
#ld: -m mmo |
#objdump: -str |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+8 g \.text Main |
0+fc g \*ABS\* ext1 |
0+8 g \.text _start |
|
Contents of section \.text: |
0000 fd030201 fd020202 e3fd0001 .* |
Contents of section \.MMIX\.reg_contents: |
07e8 00000000 0000004e 00000000 0000004e .* |
/bpo-4.s
0,0 → 1,5
.set i,0 |
.rept 223 |
LDA $11,_start+i*256 |
.set i,i+1 |
.endr |
/bpo-13.d
0,0 → 1,9
#source: start.s |
#source: bpo-7.s |
#source: areg-256.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix |
#error: base-plus-offset relocation against register symbol |
|
# Check that we get an error message if we see a BPO against a register |
# symbol. Variant 2: a register symbol. |
/loc4.d
0,0 → 1,28
#source: loc1.s |
#source: data1.s |
#source: start.s |
#ld: -m elf64mmix |
#objdump: -str |
|
# Two text files and one data. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+1000 l d \.text 0+ (|\.text) |
2000000000000000 l d \.data 0+ (|\.data) |
2000000000000000 l \.data 0+ xx |
0+1004 g F \.text 0+ Main |
2000000000000000 g \*ABS\* 0+ __\.MMIX\.start\.\.data |
0+1004 g \.text 0+ _start |
0+1000 g \.text 0+ loc1 |
0+1000 g \*ABS\* 0+ __\.MMIX\.start\.\.text |
2000000000000008 g \*ABS\* 0+ __bss_start |
2000000000000008 g \*ABS\* 0+ _edata |
2000000000000008 g \*ABS\* 0+ _end |
0+1004 g \.text 0+ _start\. |
|
Contents of section \.text: |
1000 fd030303 e3fd0001 .* |
Contents of section \.data: |
2000000000000000 00000000 00001030 .* |
/pushjs4b.d
0,0 → 1,35
#source: start4.s |
#source: nop123.s |
#source: a.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pushja.s |
#source: start.s |
#ld: -m elf64mmix |
#objdump: -dr |
|
# Check that PUSHJ with an offset just outside the offset range of a JMP |
# stub expansion works, backwards, ELF version. |
|
.*: file format elf64-mmix |
Disassembly of section \.init: |
0+ <_start>: |
0: e37704a6 setl \$119,0x4a6 |
Disassembly of section \.text: |
0+4 <a-0x4>: |
4: fd010203 swym 1,2,3 |
0+8 <a>: |
8: e3fd0004 setl \$253,0x4 |
\.\.\. |
0+4000000 <pushja>: |
4000000: e3fd0002 setl \$253,0x2 |
4000004: f20c0002 pushj \$12,400000c <pushja\+0xc> |
4000008: e3fd0003 setl \$253,0x3 |
400000c: e3ff0008 setl \$255,0x8 |
4000010: e6ff0000 incml \$255,0x0 |
4000014: e5ff0000 incmh \$255,0x0 |
4000018: e4ff0000 inch \$255,0x0 |
400001c: 9f00ff00 go \$0,\$255,0 |
0+4000020 <_start>: |
4000020: e3fd0001 setl \$253,0x1 |
/b-post1.s
0,0 → 1,5
% The .text contents is supposed to be linked --oformat binary, and will |
% correspond to a LOP_POST for an initialization of $255 with 4. A |
% LOP_STAB, such as in b-goodmain.s should follow. |
.text |
.byte 0x98,0x0a,0,0xff,0,0,0,0,0,0,0,4 |
/bspec804.s
0,0 → 1,9
BSPEC 80 |
TETRA 2 % Decent section length name (in 32-bit words). |
BYTE "aaaaaaaa" |
TETRA 0x11 % Flags. However... |
ESPEC % Everything ends here. The next thing is a LOP_LOC for .data, or |
% an ending LOP-something, hence a non-LOP_QUOTE in the section |
% length, high part. |
.data |
TETRA 0x112233 |
/pushjs2m.d
0,0 → 1,28
#source: nop123.s |
#source: pushja.s |
#source: pad2p18m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: a.s |
#source: start.s |
#ld: -m mmo |
#objdump: -dr |
|
# Check that PUSHJ with an offset just outside the PUSHJ offset range gets |
# a JMP stub expansion, mmo version. |
|
.*: file format mmo |
Disassembly of section \.text: |
0+ <pushja-0x4>: |
0: fd010203 swym 1,2,3 |
0+4 <pushja>: |
4: e3fd0002 setl \$253,0x2 |
8: f20c0002 pushj \$12,10 <pushja\+0xc> |
c: e3fd0003 setl \$253,0x3 |
10: f000ffff jmp 4000c <a> |
\.\.\. |
0+4000c <a>: |
4000c: e3fd0004 setl \$253,0x4 |
0+40010 <Main>: |
40010: e3fd0001 setl \$253,0x1 |
/sec-5.d
0,0 → 1,28
#source: b-twoinsn.s |
#source: b-offloc.s |
#source: b-post1.s |
#source: b-goodmain.s |
#ld: --oformat binary |
#objdump: -sh |
|
# Check that sections are automatically created to cope with contents at |
# unexpected addresses when an mmo is read in. We used to do this by |
# e.g. linking .text at an unexpected address, like in sec-9.d. That no |
# longer works, because .text and .data now gets section descriptors at |
# mmo output when the address and contents doesn't trivially reflect the |
# section contents at link time. To test, we instead read in an mmo |
# formed from a link to binary format, like the b-*.d tests for mmo |
# execution paths. |
|
.*: file format mmo |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+8 0+ 0+ 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
1 \.MMIX\.sec\.0 0+10 789abcdef0123458 789abcdef0123458 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD |
Contents of section \.text: |
0+ e3fd0001 e3fd0004 .* |
Contents of section \.MMIX\.sec\.0: |
789abcdef0123458 b045197d 2c1b03b2 e4dbf877 0fc766fb .* |
/pushjs4bm.d
0,0 → 1,33
#source: nop123.s |
#source: nop123.s |
#source: a.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pushja.s |
#source: start.s |
#ld: -m mmo |
#objdump: -dr |
|
# Check that PUSHJ with an offset just outside the offset range of a JMP |
# stub expansion works, backwards, mmo version. |
|
.*: file format mmo |
Disassembly of section \.text: |
0+ <a-0x8>: |
0: fd010203 swym 1,2,3 |
4: fd010203 swym 1,2,3 |
0+8 <a>: |
8: e3fd0004 setl \$253,0x4 |
\.\.\. |
0+4000000 <pushja>: |
4000000: e3fd0002 setl \$253,0x2 |
4000004: f20c0002 pushj \$12,400000c <pushja\+0xc> |
4000008: e3fd0003 setl \$253,0x3 |
400000c: e3ff0008 setl \$255,0x8 |
4000010: e6ff0000 incml \$255,0x0 |
4000014: e5ff0000 incmh \$255,0x0 |
4000018: e4ff0000 inch \$255,0x0 |
400001c: 9f00ff00 go \$0,\$255,0 |
0+4000020 <Main>: |
4000020: e3fd0001 setl \$253,0x1 |
/bza-2f.d
0,0 → 1,21
#source: start.s |
#source: bza.s |
#source: a.s |
#as: -no-expand |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <bza>: |
4: e3fd0002 setl \$253,0x2 |
8: 42ea0002 bz \$234,10 <a> |
c: e3fd0003 setl \$253,0x3 |
|
0+10 <a>: |
10: e3fd0004 setl \$253,0x4 |
/local7.d
0,0 → 1,50
#source: greg-4.s |
#source: greg-4.s |
#source: local1.s |
#source: local2.s |
#source: ext1.s |
#source: start.s |
#ld: -m elf64mmix |
#readelf: -Ssx1 -x2 |
|
# Like local1, but ext1 is here a constant, not a global register and two |
# local-register checks. |
|
There are 6 section headers, starting at offset 0xc8: |
|
Section Headers: |
\[Nr\] Name Type Address Offset |
Size EntSize Flags Link Info Align |
\[ 0\] NULL 0+ 0+ |
0+ 0+ 0 0 0 |
\[ 1\] \.text PROGBITS 0+ 0+78 |
0+c 0+ AX 0 0 4 |
\[ 2\] \.MMIX\.reg_content PROGBITS 0+7e8 0+84 |
0+10 0+ W 0 0 1 |
\[ 3\] \.shstrtab STRTAB 0+ 0+94 |
0+34 0+ 0 0 1 |
\[ 4\] \.symtab SYMTAB 0+ 0+248 |
0+108 0+18 5 5 8 |
\[ 5\] \.strtab STRTAB 0+ 0+350 |
0+32 0+ 0 0 1 |
Key to Flags: |
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) |
I \(info\), L \(link order\), G \(group\), x \(unknown\) |
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) |
|
Symbol table '\.symtab' contains 11 entries: |
Num: Value Size Type Bind Vis Ndx Name |
0: 0+ 0 NOTYPE LOCAL DEFAULT UND |
1: 0+ 0 SECTION LOCAL DEFAULT 1 |
2: 0+7e8 0 SECTION LOCAL DEFAULT 2 |
3: 0+fd 0 NOTYPE LOCAL DEFAULT PRC\[0xff00\] lsym |
4: 0+fe 0 NOTYPE LOCAL DEFAULT PRC\[0xff00\] lsym |
5: 0+fc 0 NOTYPE GLOBAL DEFAULT ABS ext1 |
6: 0+8 0 NOTYPE GLOBAL DEFAULT 1 _start |
#... |
|
Hex dump of section '\.text': |
0x0+ fd030201 fd020202 e3fd0001 .* |
|
Hex dump of section '\.MMIX\.reg_contents': |
0x0+7e8 00000000 0000004e 00000000 0000004e .* |
/pushjs4r.d
0,0 → 1,29
#source: nop123.s |
#source: pushja.s |
#source: undef-2.s |
#source: pad2p18m32.s |
#source: nop123.s |
#ld: -r -m elf64mmix |
#objdump: -dr |
|
# When linking relocatably, check two stubbable PUSHJ:s, one expanded. |
|
# With better relaxation support for relocatable links, both should be |
# able to pass through unexpanded. Right now, we just check that they can |
# coexist peacefully. |
|
.*: file format elf64-mmix |
Disassembly of section \.text: |
0+ <pushja-0x4>: |
0: fd010203 swym 1,2,3 |
0+4 <pushja>: |
4: e3fd0002 setl \$253,0x2 |
8: f20c0002 pushj \$12,10 <pushja\+0xc> |
c: e3fd0003 setl \$253,0x3 |
10: f0000000 jmp 10 <pushja\+0xc> |
10: R_MMIX_JMP a |
\.\.\. |
24: f2050000 pushj \$5,24 <pushja\+0x20> |
24: R_MMIX_PUSHJ_STUBBABLE undefd |
\.\.\. |
40008: fd010203 swym 1,2,3 |
/pushja7b.d
0,0 → 1,25
#source: start.s |
#source: a.s |
#source: pushja.s |
#as: -x --no-pushj-stubs |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
|
0+8 <pushja>: |
8: e3fd0002 setl \$253,0x2 |
c: e3ff0004 setl \$255,0x4 |
10: e6ff0000 incml \$255,0x0 |
14: e5ff0000 incmh \$255,0x0 |
18: e4ff0000 inch \$255,0x0 |
1c: bf0cff00 pushgo \$12,\$255,0 |
20: e3fd0003 setl \$253,0x3 |
/jumpa-4f.d
0,0 → 1,25
#source: start.s |
#source: jumpa.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pad4.s |
#source: a.s |
#as: -no-expand |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <jumpa>: |
4: e3fd0002 setl \$253,0x2 |
8: f0ffffff jmp 4000004 <a> |
c: e3fd0003 setl \$253,0x3 |
\.\.\. |
|
0+4000004 <a>: |
4000004: e3fd0004 setl \$253,0x4 |
/greg-6.d
0,0 → 1,286
#source: gregget1.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-1.s |
#source: a.s |
#source: start.s |
#as: -x |
#ld: -m elf64mmix |
#objdump: -dt |
|
# Allocating the maximum number of gregs and referring to one at the end |
# still works. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+0 l d \.text 0+ (|\.text) |
0+100 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+20 l \*REG\* 0+ P |
0+21 l \*REG\* 0+ O |
0+22 l \*REG\* 0+ N |
0+23 l \*REG\* 0+ M |
0+24 l \*REG\* 0+ L |
0+25 l \*REG\* 0+ K |
0+26 l \*REG\* 0+ J |
0+27 l \*REG\* 0+ I |
0+28 l \*REG\* 0+ H |
0+29 l \*REG\* 0+ G |
0+2a l \*REG\* 0+ F |
0+2b l \*REG\* 0+ E |
0+2c l \*REG\* 0+ D |
0+2d l \*REG\* 0+ C |
0+2e l \*REG\* 0+ B |
0+2f l \*REG\* 0+ A |
0+30 l \*REG\* 0+ P |
0+31 l \*REG\* 0+ O |
0+32 l \*REG\* 0+ N |
0+33 l \*REG\* 0+ M |
0+34 l \*REG\* 0+ L |
0+35 l \*REG\* 0+ K |
0+36 l \*REG\* 0+ J |
0+37 l \*REG\* 0+ I |
0+38 l \*REG\* 0+ H |
0+39 l \*REG\* 0+ G |
0+3a l \*REG\* 0+ F |
0+3b l \*REG\* 0+ E |
0+3c l \*REG\* 0+ D |
0+3d l \*REG\* 0+ C |
0+3e l \*REG\* 0+ B |
0+3f l \*REG\* 0+ A |
0+40 l \*REG\* 0+ P |
0+41 l \*REG\* 0+ O |
0+42 l \*REG\* 0+ N |
0+43 l \*REG\* 0+ M |
0+44 l \*REG\* 0+ L |
0+45 l \*REG\* 0+ K |
0+46 l \*REG\* 0+ J |
0+47 l \*REG\* 0+ I |
0+48 l \*REG\* 0+ H |
0+49 l \*REG\* 0+ G |
0+4a l \*REG\* 0+ F |
0+4b l \*REG\* 0+ E |
0+4c l \*REG\* 0+ D |
0+4d l \*REG\* 0+ C |
0+4e l \*REG\* 0+ B |
0+4f l \*REG\* 0+ A |
0+50 l \*REG\* 0+ P |
0+51 l \*REG\* 0+ O |
0+52 l \*REG\* 0+ N |
0+53 l \*REG\* 0+ M |
0+54 l \*REG\* 0+ L |
0+55 l \*REG\* 0+ K |
0+56 l \*REG\* 0+ J |
0+57 l \*REG\* 0+ I |
0+58 l \*REG\* 0+ H |
0+59 l \*REG\* 0+ G |
0+5a l \*REG\* 0+ F |
0+5b l \*REG\* 0+ E |
0+5c l \*REG\* 0+ D |
0+5d l \*REG\* 0+ C |
0+5e l \*REG\* 0+ B |
0+5f l \*REG\* 0+ A |
0+60 l \*REG\* 0+ P |
0+61 l \*REG\* 0+ O |
0+62 l \*REG\* 0+ N |
0+63 l \*REG\* 0+ M |
0+64 l \*REG\* 0+ L |
0+65 l \*REG\* 0+ K |
0+66 l \*REG\* 0+ J |
0+67 l \*REG\* 0+ I |
0+68 l \*REG\* 0+ H |
0+69 l \*REG\* 0+ G |
0+6a l \*REG\* 0+ F |
0+6b l \*REG\* 0+ E |
0+6c l \*REG\* 0+ D |
0+6d l \*REG\* 0+ C |
0+6e l \*REG\* 0+ B |
0+6f l \*REG\* 0+ A |
0+70 l \*REG\* 0+ P |
0+71 l \*REG\* 0+ O |
0+72 l \*REG\* 0+ N |
0+73 l \*REG\* 0+ M |
0+74 l \*REG\* 0+ L |
0+75 l \*REG\* 0+ K |
0+76 l \*REG\* 0+ J |
0+77 l \*REG\* 0+ I |
0+78 l \*REG\* 0+ H |
0+79 l \*REG\* 0+ G |
0+7a l \*REG\* 0+ F |
0+7b l \*REG\* 0+ E |
0+7c l \*REG\* 0+ D |
0+7d l \*REG\* 0+ C |
0+7e l \*REG\* 0+ B |
0+7f l \*REG\* 0+ A |
0+80 l \*REG\* 0+ P |
0+81 l \*REG\* 0+ O |
0+82 l \*REG\* 0+ N |
0+83 l \*REG\* 0+ M |
0+84 l \*REG\* 0+ L |
0+85 l \*REG\* 0+ K |
0+86 l \*REG\* 0+ J |
0+87 l \*REG\* 0+ I |
0+88 l \*REG\* 0+ H |
0+89 l \*REG\* 0+ G |
0+8a l \*REG\* 0+ F |
0+8b l \*REG\* 0+ E |
0+8c l \*REG\* 0+ D |
0+8d l \*REG\* 0+ C |
0+8e l \*REG\* 0+ B |
0+8f l \*REG\* 0+ A |
0+90 l \*REG\* 0+ P |
0+91 l \*REG\* 0+ O |
0+92 l \*REG\* 0+ N |
0+93 l \*REG\* 0+ M |
0+94 l \*REG\* 0+ L |
0+95 l \*REG\* 0+ K |
0+96 l \*REG\* 0+ J |
0+97 l \*REG\* 0+ I |
0+98 l \*REG\* 0+ H |
0+99 l \*REG\* 0+ G |
0+9a l \*REG\* 0+ F |
0+9b l \*REG\* 0+ E |
0+9c l \*REG\* 0+ D |
0+9d l \*REG\* 0+ C |
0+9e l \*REG\* 0+ B |
0+9f l \*REG\* 0+ A |
0+a0 l \*REG\* 0+ P |
0+a1 l \*REG\* 0+ O |
0+a2 l \*REG\* 0+ N |
0+a3 l \*REG\* 0+ M |
0+a4 l \*REG\* 0+ L |
0+a5 l \*REG\* 0+ K |
0+a6 l \*REG\* 0+ J |
0+a7 l \*REG\* 0+ I |
0+a8 l \*REG\* 0+ H |
0+a9 l \*REG\* 0+ G |
0+aa l \*REG\* 0+ F |
0+ab l \*REG\* 0+ E |
0+ac l \*REG\* 0+ D |
0+ad l \*REG\* 0+ C |
0+ae l \*REG\* 0+ B |
0+af l \*REG\* 0+ A |
0+b0 l \*REG\* 0+ P |
0+b1 l \*REG\* 0+ O |
0+b2 l \*REG\* 0+ N |
0+b3 l \*REG\* 0+ M |
0+b4 l \*REG\* 0+ L |
0+b5 l \*REG\* 0+ K |
0+b6 l \*REG\* 0+ J |
0+b7 l \*REG\* 0+ I |
0+b8 l \*REG\* 0+ H |
0+b9 l \*REG\* 0+ G |
0+ba l \*REG\* 0+ F |
0+bb l \*REG\* 0+ E |
0+bc l \*REG\* 0+ D |
0+bd l \*REG\* 0+ C |
0+be l \*REG\* 0+ B |
0+bf l \*REG\* 0+ A |
0+c0 l \*REG\* 0+ P |
0+c1 l \*REG\* 0+ O |
0+c2 l \*REG\* 0+ N |
0+c3 l \*REG\* 0+ M |
0+c4 l \*REG\* 0+ L |
0+c5 l \*REG\* 0+ K |
0+c6 l \*REG\* 0+ J |
0+c7 l \*REG\* 0+ I |
0+c8 l \*REG\* 0+ H |
0+c9 l \*REG\* 0+ G |
0+ca l \*REG\* 0+ F |
0+cb l \*REG\* 0+ E |
0+cc l \*REG\* 0+ D |
0+cd l \*REG\* 0+ C |
0+ce l \*REG\* 0+ B |
0+cf l \*REG\* 0+ A |
0+d0 l \*REG\* 0+ P |
0+d1 l \*REG\* 0+ O |
0+d2 l \*REG\* 0+ N |
0+d3 l \*REG\* 0+ M |
0+d4 l \*REG\* 0+ L |
0+d5 l \*REG\* 0+ K |
0+d6 l \*REG\* 0+ J |
0+d7 l \*REG\* 0+ I |
0+d8 l \*REG\* 0+ H |
0+d9 l \*REG\* 0+ G |
0+da l \*REG\* 0+ F |
0+db l \*REG\* 0+ E |
0+dc l \*REG\* 0+ D |
0+dd l \*REG\* 0+ C |
0+de l \*REG\* 0+ B |
0+df l \*REG\* 0+ A |
0+e0 l \*REG\* 0+ P |
0+e1 l \*REG\* 0+ O |
0+e2 l \*REG\* 0+ N |
0+e3 l \*REG\* 0+ M |
0+e4 l \*REG\* 0+ L |
0+e5 l \*REG\* 0+ K |
0+e6 l \*REG\* 0+ J |
0+e7 l \*REG\* 0+ I |
0+e8 l \*REG\* 0+ H |
0+e9 l \*REG\* 0+ G |
0+ea l \*REG\* 0+ F |
0+eb l \*REG\* 0+ E |
0+ec l \*REG\* 0+ D |
0+ed l \*REG\* 0+ C |
0+ee l \*REG\* 0+ B |
0+ef l \*REG\* 0+ A |
0+f0 l \*REG\* 0+ lsym |
0+f1 l \*REG\* 0+ lsym |
0+f2 l \*REG\* 0+ lsym |
0+f3 l \*REG\* 0+ lsym |
0+f4 l \*REG\* 0+ lsym |
0+f5 l \*REG\* 0+ lsym |
0+f6 l \*REG\* 0+ lsym |
0+f7 l \*REG\* 0+ lsym |
0+f8 l \*REG\* 0+ lsym |
0+f9 l \*REG\* 0+ lsym |
0+fa l \*REG\* 0+ lsym |
0+fb l \*REG\* 0+ lsym |
0+fc l \*REG\* 0+ lsym |
0+fd l \*REG\* 0+ lsym |
0+14 g \.text 0+ _start |
0+fe g \*REG\* 0+ areg |
2000000000000000 g \*ABS\* 0+ __bss_start |
2000000000000000 g \*ABS\* 0+ _edata |
2000000000000000 g \*ABS\* 0+ _end |
0+14 g \.text 0+ _start\. |
0+10 g \.text 0+ a |
|
Disassembly of section \.text: |
|
0+ <a-0x10>: |
0: e3fe0010 setl \$254,0x10 |
4: e6fe0000 incml \$254,0x0 |
8: e5fe0000 incmh \$254,0x0 |
c: e4fe0000 inch \$254,0x0 |
|
0+10 <a>: |
10: e3fd0004 setl \$253,0x4 |
|
0+14 <_start>: |
14: e3fd0001 setl \$253,0x1 |
/jumpa14f.d
0,0 → 1,10
#source: start.s |
#source: jumpa.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: a.s |
#as: -no-expand |
#ld: -m mmo |
#error: relocation truncated to fit: R_MMIX_ADDR27 against `a'$ |
/spec807.d
0,0 → 1,25
#source: bspec807.s |
#source: start.s |
#ld: -m mmo |
#objdump: -sh |
|
# See spec801.d. |
# #7: non-quote LOP in section vma, low part. |
|
.*: file format mmo |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+4 0+ 0+ 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
1 \.data 0+4 2000000000000000 2000000000000000 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD |
2 \.MMIX\.spec_data\.80 0+1c 0+ 0+ 0+ 2\*\*2 |
CONTENTS |
Contents of section \.text: |
0000 e3fd0001 .* |
Contents of section \.data: |
2000000000000000 00112233 .* |
Contents of section \.MMIX\.spec_data\.80: |
0000 00000002 61616161 61616161 00000011 .* |
0010 00000000 0000000c 00000000 .* |
/local2m.d
0,0 → 1,8
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: local1.s |
#source: regext1.s |
#source: start.s |
#ld: -m mmo |
#error: not a local register |
/sec-7m.d
0,0 → 1,38
#source: start.s |
#source: sec-7a.s |
#source: sec-7b.s |
#source: sec-7c.s |
#source: sec-7d.s |
#source: sec-7e.s |
#ld: -m mmo |
#objcopy_linked_file: |
#objdump: -hs |
|
# When producing mmo output: sections with an input length not a |
# multiple of 4, and whose total length in linked output |
# exceeded the "chunk size" (32768), would get to-4-padding |
# inserted at each chunk division. Also check that section |
# sizes aren't rounded up at objcopy. |
|
.*: file format mmo |
|
Sections: |
Idx Name[ ]+Size[ ]+VMA[ ]+LMA[ ]+File off Algn |
0 \.text[ ]+0+4 0+ 0+ 0+ 2\*\*2 |
[ ]+CONTENTS, ALLOC, LOAD, CODE |
1 \.di +0+27ffb +0+4 +0+4 +0+ +2\*\*2 |
[ ]+CONTENTS, READONLY |
Contents of section \.text: |
0000 e3fd0001[ ]+.* |
Contents of section \.di: |
00004 2a000000 00000000 00000000 00000000 .* |
#... |
07ff4 00000000 00000000 00000000 2b2c0000 .* |
#... |
0fff4 00000000 00000000 00002d2e 00000000 .* |
#... |
17ff4 00000000 00000000 002f3000 00000000 .* |
#... |
1fff4 00000000 00000000 00313200 00000000 .* |
#... |
27ff4 00000000 00000000 000033[ ]+.* |
/a.s
0,0 → 1,5
* The symbol "a" is found here. |
.text |
.global a |
a: |
SET $253,4 |
/bpo-22.d
0,0 → 1,22
#source: start.s |
#source: bpo-1.s |
#as: -linker-allocated-gregs |
#ld: -m mmo --oformat elf64-mmix |
#objdump: -st |
|
# This weird combination of format and emulation options caused hiccups in |
# the reloc accounting machinery. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0000000000000000 l d \.text 0+ (|\.text) |
0+7f0 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+4 l \.text 0+ x |
0+ g \.text 0+ Main |
0+ g \.text 0+ _start |
|
Contents of section \.text: |
0000 e3fd0001 232afe00 .* |
Contents of section \.MMIX\.reg_contents: |
07f0 00000000 0000002e .* |
/sec-7e.s
0,0 → 1,6
.section .di |
.byte 50 |
.rept 32767 |
.byte 0 |
.endr |
.byte 51 |
/greg-13.d
0,0 → 1,33
#source: greg-1.s |
#source: gregbza1.s |
#source: start.s |
#source: a.s |
#as: -x |
#ld: -m mmo |
#objdump: -dt |
|
# Like greg-3, but a different expanding insn, mmo. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+18 g \.text Main |
0+18 g \.text _start |
0+fe g \*REG\* areg |
0+1c g \.text a |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)-0x18>: |
0: 5afe0006 pbnz areg,18 <(Main|_start)> |
4: e3ff001c setl \$255,0x1c |
8: e6ff0000 incml \$255,0x0 |
c: e5ff0000 incmh \$255,0x0 |
10: e4ff0000 inch \$255,0x0 |
14: 9fffff00 go \$255,\$255,0 |
|
0+18 <(Main|_start)>: |
18: e3fd0001 setl \$253,0x1 |
|
0+1c <a>: |
1c: e3fd0004 setl \$253,0x4 |
/local12m.d
0,0 → 1,16
#source: local1.s |
#source: ext1-254.s |
#source: start.s |
#ld: -m mmo |
#objdump: -shr |
|
# Check that 254 is local when we don't have any registers. |
|
.*: file format mmo |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+8 0+ 0+ 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
Contents of section \.text: |
0000 fd030201 e3fd0001 .* |
/pushja2b.d
0,0 → 1,21
#source: start.s |
#source: a.s |
#source: pushja.s |
#as: -no-expand |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
|
0+8 <pushja>: |
8: e3fd0002 setl \$253,0x2 |
c: f30cfffe pushj \$12,4 <a> |
10: e3fd0003 setl \$253,0x3 |
/pad2p18m32.s
0,0 → 1,4
* Padding (1 << 19)/2 - 32 bytes; that is, suitable for testing the |
* short-range relocs. |
.text |
.space (1 << 19)/2 - 32,0 |
/mmosec2.ld
0,0 → 1,13
OUTPUT_ARCH(mmix) |
ENTRY(Main) |
SECTIONS |
{ |
.text 0x1000000000000000 : |
{ *(.text); Main = _start; } |
|
.data 0x2000000000000000 : |
{ *(.data); } |
|
.MMIX.reg_contents : |
{ *(.MMIX.reg_contents); } |
} |
/b-loc64k.d
0,0 → 1,24
#source: b-loc64k.s |
#source: b-goodmain.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#objdump: -dht |
|
.*: file format mmo |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+10004 0+ 0+ 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
SYMBOL TABLE: |
0+4 g \.text Main |
0+4 g \.text a |
|
Disassembly of section \.text: |
|
0+ <Main-0x4>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <Main>: |
\.\.\. |
10000: e3fd0004 setl \$253,0x4 |
/bpo-5.d
0,0 → 1,25
#source: start.s |
#source: bpo-1.s |
#source: bpo-3.s |
#source: bpo-2.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix |
#objdump: -st |
|
# Three linker-allocated GREGs: one eliminated. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
0+7e8 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+4 l \.text 0+ x |
0+ g \.text 0+ _start |
#... |
0+c g \.text 0+ y |
#... |
|
Contents of section \.text: |
0000 e3fd0001 232afd1a 8f79fe00 2321fd00 .* |
Contents of section \.MMIX\.reg_contents: |
07e8 00000000 00000014 00000000 00000133 .* |
/jumpa-7b.d
0,0 → 1,25
#source: start.s |
#source: a.s |
#source: jumpa.s |
#as: -x |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
|
0+8 <jumpa>: |
8: e3fd0002 setl \$253,0x2 |
c: f1fffffe jmp 4 <a> |
10: fd000000 swym 0,0,0 |
14: fd000000 swym 0,0,0 |
18: fd000000 swym 0,0,0 |
1c: fd000000 swym 0,0,0 |
20: e3fd0003 setl \$253,0x3 |
/bpo-19m.d
0,0 → 1,30
#source: start.s |
#source: bpo-9.s |
#as: -linker-allocated-gregs |
#ld: -m mmo |
#objdump: -st |
|
# 223 (max) linker-allocated GREGs, four relocs merged for each register |
# allocated. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+ g \.text Main |
0+ g \.text _start |
|
Contents of section \.text: |
0000 e3fd0001 230b2000 230b2040 230b2080 .* |
0010 230b20c0 230b2100 230b2140 230b2180 .* |
0020 230b21c0 230b2200 230b2240 230b2280 .* |
#... |
0dd0 230bfcc0 230bfd00 230bfd40 230bfd80 .* |
0de0 230bfdc0 230bfe00 230bfe40 230bfe80 .* |
0df0 230bfec0 .* |
Contents of section \.MMIX\.reg_contents: |
0100 00000000 00000000 00000000 00000100 .* |
0110 00000000 00000200 00000000 00000300 .* |
#... |
07d0 00000000 0000da00 00000000 0000db00 .* |
07e0 00000000 0000dc00 00000000 0000dd00 .* |
07f0 00000000 0000de00 .* |
/y.s
0,0 → 1,33
;# Library file y.s has linkonce entries for fn and fn2. Note |
;# that this version of fn has different code, as if compiled |
;# with different optimization flags than the one in x.s (not |
;# important for this test, though). The reference from |
;# .eh_frame to the linkonce-excluded fn2 must be zero, or g++ |
;# EH will not work. |
|
.section .gnu.linkonce.t.fn2,"ax",@progbits |
.weak fn2 |
.type fn2,@function |
fn2: |
L:c: |
.long 3 |
L:d: |
.size fn2,L:d-L:c |
|
.section .gnu.linkonce.t.fn,"ax",@progbits |
.weak fn |
.type fn,@function |
fn: |
L:e: |
.long 4 |
L:f: |
.size fn,L:f-L:e |
|
.section .eh_frame,"aw",@progbits |
.long 7 |
.long L:c |
.long L:d-L:c |
|
.long 0x6066 |
.long L:e |
.long L:f-L:e |
/getaa-6f.d
0,0 → 1,10
#source: start.s |
#source: getaa.s |
#source: pad2p18m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: a.s |
#as: -no-expand |
#ld: -m elf64mmix |
#error: relocation truncated to fit: R_MMIX_ADDR19 against symbol `a' |
/local10.d
0,0 → 1,5
#source: local1.s |
#source: ext1g.s |
#source: start.s |
#ld: -m elf64mmix |
#error: 254 is not a local register |
/pushjs1.d
0,0 → 1,27
#source: start4.s |
#source: pushja.s |
#source: pad2p18m32.s |
#source: pad16.s |
#source: pad4.s |
#source: a.s |
#source: start.s |
#ld: -m elf64mmix |
#objdump: -dr |
|
# Check that PUSHJ with an offset just within the offset range gets no |
# stub expansion, ELF version. |
|
.*: file format elf64-mmix |
Disassembly of section \.init: |
0+ <_start>: |
0: e37704a6 setl \$119,0x4a6 |
Disassembly of section \.text: |
0+4 <pushja>: |
4: e3fd0002 setl \$253,0x2 |
8: f20cffff pushj \$12,40004 <a> |
c: e3fd0003 setl \$253,0x3 |
\.\.\. |
0+40004 <a>: |
40004: e3fd0004 setl \$253,0x4 |
0+40008 <_start>: |
40008: e3fd0001 setl \$253,0x1 |
/bpo-5m.d
0,0 → 1,21
#source: start.s |
#source: bpo-1.s |
#source: bpo-3.s |
#source: bpo-2.s |
#as: -linker-allocated-gregs |
#ld: -m mmo |
#objdump: -st |
|
# Three linker-allocated GREGs: one eliminated. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+ g \.text Main |
0+ g \.text _start |
0+c g \.text y |
|
Contents of section \.text: |
0000 e3fd0001 232afd1a 8f79fe00 2321fd00 .* |
Contents of section \.MMIX\.reg_contents: |
07e8 00000000 00000014 00000000 00000133 .* |
/loct-1.d
0,0 → 1,19
#source: loct.s |
#source: start.s |
#ld: -m elf64mmix |
#objdump: -str |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+1004 l d \.text 0+ (|\.text) |
0+1004 l \.text 0+ t |
0+100c g \.text 0+ _start |
0+1004 g \*ABS\* 0+ __\.MMIX\.start\.\.text |
2000000000000000 g \*ABS\* 0+ __bss_start |
2000000000000000 g \*ABS\* 0+ _edata |
2000000000000000 g \*ABS\* 0+ _end |
0+100c g \.text 0+ _start\. |
|
Contents of section \.text: |
1004 fd000000 00001004 e3fd0001 .* |
/b-loc64k.s
0,0 → 1,8
% The .text contents is supposed to be linked --oformat binary, and will |
% correspond to the start of a mmo file with two instructions, 64k apart. |
% This file ends before the LOP_STAB. |
.text |
.byte 0x98,9,1,1,0x3b,0x7f,0x9c,0xe3,0x98,1,0,2,0,0,0,0 |
.byte 0,0,0,0,0xe3,0xfd,0,1,0x98,1,0,2,0,0,0,0 |
.byte 0,1,0,0,0xe3,0xfd,0,4,0x98,0x0a,0,0xff,0,0,0,0 |
.byte 0,0,0,4 |
/bpo-5.s
0,0 → 1,4
# A section with a symbol and a BPO allocation. |
.section .text.x,"ax",@progbits |
.global x |
x LDA $45,x+4200 |
/sec-8d.s
0,0 → 1,4
.section .text.1 |
.byte 48 |
.space 32766 |
.byte 49 |
/bpo-14.d
0,0 → 1,22
#source: start.s |
#source: bpo-7.s |
#source: areg-t.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix |
#objdump: -st |
|
# A BPO against an external symbol. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
0+7f0 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+ g \.text 0+ _start |
0+8 g \.text 0+ areg |
#... |
|
Contents of section \.text: |
0000 e3fd0001 234dfe00 fd040810 .* |
Contents of section \.MMIX\.reg_contents: |
07f0 00000000 00000003 .* |
/loc5.d
0,0 → 1,6
#source: loc1.s |
#source: start.s |
#source: loc2.s |
#ld: -m elf64mmix |
#objdump: -str |
#error: multiple definition of `__\.MMIX\.start\.\.text' |
/ext1g.s
0,0 → 1,2
.global ext1 |
ext1 GREG |
/bspec805.s
0,0 → 1,10
BSPEC 80 |
TETRA 2 % Decent section length name (in 32-bit words). |
BYTE "aaaaaaaa" |
TETRA 0x11 % Flags. |
TETRA 0 % Decent high-part of section length. However... |
ESPEC % Everything ends here. The next thing is a LOP_LOC for .data, or |
% an ending LOP-something, hence a non-LOP_QUOTE in the section |
% length, high part. |
.data |
TETRA 0x112233 |
/reg-1.d
0,0 → 1,7
#source: areg-256.s |
#source: gregget1.s |
#source: start.s |
#source: a.s |
#as: -x |
#ld: -m elf64mmix |
#error: relocation truncated to fit: R_MMIX_REG against symbol `areg' |
/sec-6.d
0,0 → 1,37
#source: start.s |
#source: sec-6.s |
#source: a.s |
#as: -x |
#ld: -m elf64mmix |
#objcopy_linked_file: -O mmo |
#objdump: -xs |
|
# A non-loaded section with relocs would have the SEC_RELOC bit set in the |
# output if we didn't clear it. For reference, here's the ELF copied to |
# mmo, so we make sure no spurious flags are introduced. |
|
.*: file format mmo |
.* |
architecture: mmix, flags 0x0+10: |
HAS_SYMS |
start address 0x0+ |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+8 0+ 0+ 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
1 \.debug_frame 0+10 0+ 0+ 0+ 2\*\*2 |
CONTENTS, READONLY, DEBUGGING |
SYMBOL TABLE: |
0+ g \.text Main |
0+ g \.text _start |
0+8 g \.text debugb |
2000000000000000 g \*ABS\* __bss_start |
2000000000000000 g \*ABS\* _edata |
2000000000000000 g \*ABS\* _end |
0+4 g \.text a |
|
Contents of section \.text: |
0000 e3fd0001 e3fd0004 .* |
Contents of section \.debug_frame: |
0000 00000000 00000004 00000000 00000008 .* |
/jumpa-2b.d
0,0 → 1,21
#source: start.s |
#source: a.s |
#source: jumpa.s |
#as: -no-expand |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
|
0+8 <jumpa>: |
8: e3fd0002 setl \$253,0x2 |
c: f1fffffe jmp 4 <a> |
10: e3fd0003 setl \$253,0x3 |
/bpo-14m.d
0,0 → 1,20
#source: start.s |
#source: bpo-7.s |
#source: areg-t.s |
#as: -linker-allocated-gregs |
#ld: -m mmo |
#objdump: -st |
|
# A BPO against an external symbol. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+ g \.text Main |
0+ g \.text _start |
0+8 g \.text areg |
|
Contents of section \.text: |
0000 e3fd0001 234dfe00 fd040810 .* |
Contents of section \.MMIX\.reg_contents: |
07f0 00000000 00000003 .* |
/loc5m.d
0,0 → 1,6
#source: loc1.s |
#source: start.s |
#source: loc2.s |
#ld: -m mmo |
#objdump: -str |
#error: multiple definition of `__\.MMIX\.start\.\.text' |
/b-badlop.d
0,0 → 1,7
#source: b-twoinsn.s |
#source: b-badlop.s |
#source: b-post1.s |
#source: b-goodmain.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#error: invalid mmo file: unsupported lopcode |
/loct.s
0,0 → 1,3
LOC #1002 |
t SWYM |
TETRA t |
/jumpa12b.d
0,0 → 1,26
#source: start.s |
#source: a.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: jumpa.s |
#as: -no-expand |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
\.\.\. |
|
0+4000000 <jumpa>: |
4000000: e3fd0002 setl \$253,0x2 |
4000004: f1000000 jmp 4 <a> |
4000008: e3fd0003 setl \$253,0x3 |
/local8.d
0,0 → 1,28
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: local2.s |
#source: local1.s |
#source: ext1.s |
#source: start.s |
#ld: -m elf64mmix |
#error: 128 is not a local register |
/getaa-1f.d
0,0 → 1,24
#source: start.s |
#source: getaa.s |
#source: a.s |
#as: -x |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0+: e3fd0001 setl \$253,0x1 |
|
0+4 <getaa>: |
4: e3fd0002 setl \$253,0x2 |
8: e37b001c setl \$123,0x1c |
c: e67b0000 incml \$123,0x0 |
10: e57b0000 incmh \$123,0x0 |
14: e47b0000 inch \$123,0x0 |
18: e3fd0003 setl \$253,0x3 |
|
0+1c <a>: |
1c: e3fd0004 setl \$253,0x4 |
/bza-8f.d
0,0 → 1,21
#source: start.s |
#source: bza.s |
#source: a.s |
#as: -no-expand |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0+: e3fd0001 setl \$253,0x1 |
|
0+4 <bza>: |
4: e3fd0002 setl \$253,0x2 |
8: 42ea0002 bz \$234,10 <a> |
c: e3fd0003 setl \$253,0x3 |
|
0+10 <a>: |
10: e3fd0004 setl \$253,0x4 |
/greg-7.d
0,0 → 1,286
#source: gregget1.s |
#source: greg-1.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: a.s |
#source: start.s |
#as: -x |
#ld: -m elf64mmix |
#objdump: -dt |
|
# Allocating the maximum number of gregs and referring to one at the |
# *other* end still works. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
0+100 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+21 l \*REG\* 0+ P |
0+22 l \*REG\* 0+ O |
0+23 l \*REG\* 0+ N |
0+24 l \*REG\* 0+ M |
0+25 l \*REG\* 0+ L |
0+26 l \*REG\* 0+ K |
0+27 l \*REG\* 0+ J |
0+28 l \*REG\* 0+ I |
0+29 l \*REG\* 0+ H |
0+2a l \*REG\* 0+ G |
0+2b l \*REG\* 0+ F |
0+2c l \*REG\* 0+ E |
0+2d l \*REG\* 0+ D |
0+2e l \*REG\* 0+ C |
0+2f l \*REG\* 0+ B |
0+30 l \*REG\* 0+ A |
0+31 l \*REG\* 0+ P |
0+32 l \*REG\* 0+ O |
0+33 l \*REG\* 0+ N |
0+34 l \*REG\* 0+ M |
0+35 l \*REG\* 0+ L |
0+36 l \*REG\* 0+ K |
0+37 l \*REG\* 0+ J |
0+38 l \*REG\* 0+ I |
0+39 l \*REG\* 0+ H |
0+3a l \*REG\* 0+ G |
0+3b l \*REG\* 0+ F |
0+3c l \*REG\* 0+ E |
0+3d l \*REG\* 0+ D |
0+3e l \*REG\* 0+ C |
0+3f l \*REG\* 0+ B |
0+40 l \*REG\* 0+ A |
0+41 l \*REG\* 0+ P |
0+42 l \*REG\* 0+ O |
0+43 l \*REG\* 0+ N |
0+44 l \*REG\* 0+ M |
0+45 l \*REG\* 0+ L |
0+46 l \*REG\* 0+ K |
0+47 l \*REG\* 0+ J |
0+48 l \*REG\* 0+ I |
0+49 l \*REG\* 0+ H |
0+4a l \*REG\* 0+ G |
0+4b l \*REG\* 0+ F |
0+4c l \*REG\* 0+ E |
0+4d l \*REG\* 0+ D |
0+4e l \*REG\* 0+ C |
0+4f l \*REG\* 0+ B |
0+50 l \*REG\* 0+ A |
0+51 l \*REG\* 0+ P |
0+52 l \*REG\* 0+ O |
0+53 l \*REG\* 0+ N |
0+54 l \*REG\* 0+ M |
0+55 l \*REG\* 0+ L |
0+56 l \*REG\* 0+ K |
0+57 l \*REG\* 0+ J |
0+58 l \*REG\* 0+ I |
0+59 l \*REG\* 0+ H |
0+5a l \*REG\* 0+ G |
0+5b l \*REG\* 0+ F |
0+5c l \*REG\* 0+ E |
0+5d l \*REG\* 0+ D |
0+5e l \*REG\* 0+ C |
0+5f l \*REG\* 0+ B |
0+60 l \*REG\* 0+ A |
0+61 l \*REG\* 0+ P |
0+62 l \*REG\* 0+ O |
0+63 l \*REG\* 0+ N |
0+64 l \*REG\* 0+ M |
0+65 l \*REG\* 0+ L |
0+66 l \*REG\* 0+ K |
0+67 l \*REG\* 0+ J |
0+68 l \*REG\* 0+ I |
0+69 l \*REG\* 0+ H |
0+6a l \*REG\* 0+ G |
0+6b l \*REG\* 0+ F |
0+6c l \*REG\* 0+ E |
0+6d l \*REG\* 0+ D |
0+6e l \*REG\* 0+ C |
0+6f l \*REG\* 0+ B |
0+70 l \*REG\* 0+ A |
0+71 l \*REG\* 0+ P |
0+72 l \*REG\* 0+ O |
0+73 l \*REG\* 0+ N |
0+74 l \*REG\* 0+ M |
0+75 l \*REG\* 0+ L |
0+76 l \*REG\* 0+ K |
0+77 l \*REG\* 0+ J |
0+78 l \*REG\* 0+ I |
0+79 l \*REG\* 0+ H |
0+7a l \*REG\* 0+ G |
0+7b l \*REG\* 0+ F |
0+7c l \*REG\* 0+ E |
0+7d l \*REG\* 0+ D |
0+7e l \*REG\* 0+ C |
0+7f l \*REG\* 0+ B |
0+80 l \*REG\* 0+ A |
0+81 l \*REG\* 0+ P |
0+82 l \*REG\* 0+ O |
0+83 l \*REG\* 0+ N |
0+84 l \*REG\* 0+ M |
0+85 l \*REG\* 0+ L |
0+86 l \*REG\* 0+ K |
0+87 l \*REG\* 0+ J |
0+88 l \*REG\* 0+ I |
0+89 l \*REG\* 0+ H |
0+8a l \*REG\* 0+ G |
0+8b l \*REG\* 0+ F |
0+8c l \*REG\* 0+ E |
0+8d l \*REG\* 0+ D |
0+8e l \*REG\* 0+ C |
0+8f l \*REG\* 0+ B |
0+90 l \*REG\* 0+ A |
0+91 l \*REG\* 0+ P |
0+92 l \*REG\* 0+ O |
0+93 l \*REG\* 0+ N |
0+94 l \*REG\* 0+ M |
0+95 l \*REG\* 0+ L |
0+96 l \*REG\* 0+ K |
0+97 l \*REG\* 0+ J |
0+98 l \*REG\* 0+ I |
0+99 l \*REG\* 0+ H |
0+9a l \*REG\* 0+ G |
0+9b l \*REG\* 0+ F |
0+9c l \*REG\* 0+ E |
0+9d l \*REG\* 0+ D |
0+9e l \*REG\* 0+ C |
0+9f l \*REG\* 0+ B |
0+a0 l \*REG\* 0+ A |
0+a1 l \*REG\* 0+ P |
0+a2 l \*REG\* 0+ O |
0+a3 l \*REG\* 0+ N |
0+a4 l \*REG\* 0+ M |
0+a5 l \*REG\* 0+ L |
0+a6 l \*REG\* 0+ K |
0+a7 l \*REG\* 0+ J |
0+a8 l \*REG\* 0+ I |
0+a9 l \*REG\* 0+ H |
0+aa l \*REG\* 0+ G |
0+ab l \*REG\* 0+ F |
0+ac l \*REG\* 0+ E |
0+ad l \*REG\* 0+ D |
0+ae l \*REG\* 0+ C |
0+af l \*REG\* 0+ B |
0+b0 l \*REG\* 0+ A |
0+b1 l \*REG\* 0+ P |
0+b2 l \*REG\* 0+ O |
0+b3 l \*REG\* 0+ N |
0+b4 l \*REG\* 0+ M |
0+b5 l \*REG\* 0+ L |
0+b6 l \*REG\* 0+ K |
0+b7 l \*REG\* 0+ J |
0+b8 l \*REG\* 0+ I |
0+b9 l \*REG\* 0+ H |
0+ba l \*REG\* 0+ G |
0+bb l \*REG\* 0+ F |
0+bc l \*REG\* 0+ E |
0+bd l \*REG\* 0+ D |
0+be l \*REG\* 0+ C |
0+bf l \*REG\* 0+ B |
0+c0 l \*REG\* 0+ A |
0+c1 l \*REG\* 0+ P |
0+c2 l \*REG\* 0+ O |
0+c3 l \*REG\* 0+ N |
0+c4 l \*REG\* 0+ M |
0+c5 l \*REG\* 0+ L |
0+c6 l \*REG\* 0+ K |
0+c7 l \*REG\* 0+ J |
0+c8 l \*REG\* 0+ I |
0+c9 l \*REG\* 0+ H |
0+ca l \*REG\* 0+ G |
0+cb l \*REG\* 0+ F |
0+cc l \*REG\* 0+ E |
0+cd l \*REG\* 0+ D |
0+ce l \*REG\* 0+ C |
0+cf l \*REG\* 0+ B |
0+d0 l \*REG\* 0+ A |
0+d1 l \*REG\* 0+ P |
0+d2 l \*REG\* 0+ O |
0+d3 l \*REG\* 0+ N |
0+d4 l \*REG\* 0+ M |
0+d5 l \*REG\* 0+ L |
0+d6 l \*REG\* 0+ K |
0+d7 l \*REG\* 0+ J |
0+d8 l \*REG\* 0+ I |
0+d9 l \*REG\* 0+ H |
0+da l \*REG\* 0+ G |
0+db l \*REG\* 0+ F |
0+dc l \*REG\* 0+ E |
0+dd l \*REG\* 0+ D |
0+de l \*REG\* 0+ C |
0+df l \*REG\* 0+ B |
0+e0 l \*REG\* 0+ A |
0+e1 l \*REG\* 0+ P |
0+e2 l \*REG\* 0+ O |
0+e3 l \*REG\* 0+ N |
0+e4 l \*REG\* 0+ M |
0+e5 l \*REG\* 0+ L |
0+e6 l \*REG\* 0+ K |
0+e7 l \*REG\* 0+ J |
0+e8 l \*REG\* 0+ I |
0+e9 l \*REG\* 0+ H |
0+ea l \*REG\* 0+ G |
0+eb l \*REG\* 0+ F |
0+ec l \*REG\* 0+ E |
0+ed l \*REG\* 0+ D |
0+ee l \*REG\* 0+ C |
0+ef l \*REG\* 0+ B |
0+f0 l \*REG\* 0+ A |
0+f1 l \*REG\* 0+ lsym |
0+f2 l \*REG\* 0+ lsym |
0+f3 l \*REG\* 0+ lsym |
0+f4 l \*REG\* 0+ lsym |
0+f5 l \*REG\* 0+ lsym |
0+f6 l \*REG\* 0+ lsym |
0+f7 l \*REG\* 0+ lsym |
0+f8 l \*REG\* 0+ lsym |
0+f9 l \*REG\* 0+ lsym |
0+fa l \*REG\* 0+ lsym |
0+fb l \*REG\* 0+ lsym |
0+fc l \*REG\* 0+ lsym |
0+fd l \*REG\* 0+ lsym |
0+fe l \*REG\* 0+ lsym |
0+14 g \.text 0+ _start |
0+20 g \*REG\* 0+ areg |
2000000000000000 g \*ABS\* 0+ __bss_start |
2000000000000000 g \*ABS\* 0+ _edata |
2000000000000000 g \*ABS\* 0+ _end |
0+14 g \.text 0+ _start\. |
0+10 g \.text 0+ a |
|
Disassembly of section \.text: |
|
0+ <a-0x10>: |
0: e3200010 setl \$32,0x10 |
4: e6200000 incml \$32,0x0 |
8: e5200000 incmh \$32,0x0 |
c: e4200000 inch \$32,0x0 |
|
0+10 <a>: |
10: e3fd0004 setl \$253,0x4 |
|
0+14 <_start>: |
14: e3fd0001 setl \$253,0x1 |
/spec808.d
0,0 → 1,25
#source: bspec808.s |
#source: start.s |
#ld: -m mmo |
#objdump: -sh |
|
# See spec801.d. |
# #8: Indecent section length. |
|
.*: file format mmo |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+4 0+ 0+ 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
1 \.data 0+4 2000000000000000 2000000000000000 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD |
2 \.MMIX\.spec_data\.80 0+20 0+ 0+ 0+ 2\*\*2 |
CONTENTS |
Contents of section \.text: |
0000 e3fd0001 .* |
Contents of section \.data: |
2000000000000000 00112233 .* |
Contents of section \.MMIX\.spec_data\.80: |
0000 00000002 61616161 61616161 00000011 .* |
0010 0000ff00 00000000 000000ff 00000000 .* |
/sec-6.s
0,0 → 1,5
.global debugb |
.section .debug_frame,"",@progbits |
.8byte a |
debugb: |
.8byte debugb |
/locdo-1.d
0,0 → 1,23
#source: locdo.s -globalize-symbols |
#source: start.s |
#ld: -m elf64mmix |
#objdump: -str |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
2000000000000008 l d \.data 0+ (|\.data) |
2000000000000008 g \*ABS\* 0+ __\.MMIX\.start\.\.data |
2000000000000008 g \.data 0+ od |
0+ g \.text 0+ _start |
2000000000000010 g \*ABS\* 0+ __bss_start |
2000000000000000 g \*ABS\* 0+ Data_Segment |
2000000000000010 g \*ABS\* 0+ _edata |
2000000000000010 g \*ABS\* 0+ _end |
0+ g \.text 0+ _start\. |
|
Contents of section \.text: |
0000 e3fd0001 .* |
Contents of section \.data: |
2000000000000008 20000000 00000008 .* |
/b-badlop.s
0,0 → 1,4
% The .text contents is supposed to be linked --oformat binary with |
% b-twoinsn.s and b-goodmain.s, and will provide an invalid lopcode. |
.text |
.byte 0x98,0xff,0,0 |
/local8m.d
0,0 → 1,28
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: local2.s |
#source: local1.s |
#source: ext1.s |
#source: start.s |
#ld: -m mmo |
#error: 128 is not a local register |
/zeroehmmo.d
0,0 → 1,16
#source: x.s |
#source: y.s |
#ld: -m mmo -Ttext 0xa00 -T $srcdir/$subdir/zeroeh.ld |
#objdump: -s |
|
# The word at address 201c, for the linkonce-excluded section, must be zero. |
|
.*: file format mmo |
|
Contents of section \.text: |
0a00 00000a08 00000a10 00000001 00000002 .* |
0a10 00000003 .* |
Contents of section \.eh_frame: |
2000 00000002 00000a08 00000008 00000007 .* |
2010 00000a10 00000004 00006066 00000000 .* |
2020 00000004 .* |
/greg-14.d
0,0 → 1,32
#source: greg-1.s |
#source: gregpsj1.s |
#source: start.s |
#source: a.s |
#as: -x --no-pushj-stubs |
#ld: -m mmo |
#objdump: -dt |
|
# Like greg-3, but a different expanding insn. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+14 g \.text Main |
0+14 g \.text _start |
0+fe g \*REG\* areg |
0+18 g \.text a |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)-0x14>: |
0: e3ff0018 setl \$255,0x18 |
4: e6ff0000 incml \$255,0x0 |
8: e5ff0000 incmh \$255,0x0 |
c: e4ff0000 inch \$255,0x0 |
10: bffeff00 pushgo areg,\$255,0 |
|
0+14 <(Main|_start)>: |
14: e3fd0001 setl \$253,0x1 |
|
0+18 <a>: |
18: e3fd0004 setl \$253,0x4 |
/zeroeh.ld
0,0 → 1,4
SECTIONS { |
.text 0xa00 : { *(.text); *(.gnu.linkonce.t.*) } |
.eh_frame 0x2000 : { *(.eh_frame) } |
} |
/pushjs3m.d
0,0 → 1,28
#source: nop123.s |
#source: pushja.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: a.s |
#source: start.s |
#ld: -m mmo |
#objdump: -dr |
|
# Check that PUSHJ with an offset just within reach of JMP gets it, mmo |
# version. |
|
.*: file format mmo |
Disassembly of section \.text: |
0+ <pushja-0x4>: |
0: fd010203 swym 1,2,3 |
0+4 <pushja>: |
4: e3fd0002 setl \$253,0x2 |
8: f20c0002 pushj \$12,10 <pushja\+0xc> |
c: e3fd0003 setl \$253,0x3 |
10: f0ffffff jmp 400000c <a> |
\.\.\. |
0+400000c <a>: |
400000c: e3fd0004 setl \$253,0x4 |
0+4000010 <Main>: |
4000010: e3fd0001 setl \$253,0x1 |
/locto-1.d
0,0 → 1,19
#source: locto.s -globalize-symbols |
#source: start.s |
#ld: -m elf64mmix |
#objdump: -str |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+1008 l d \.text 0+ (|\.text) |
0+1008 g \.text 0+ od |
0+1010 g \.text 0+ _start |
0+1008 g \*ABS\* 0+ __\.MMIX\.start\.\.text |
2000000000000000 g \*ABS\* 0+ __bss_start |
2000000000000000 g \*ABS\* 0+ _edata |
2000000000000000 g \*ABS\* 0+ _end |
0+1010 g \.text 0+ _start\. |
|
Contents of section \.text: |
1008 00000000 00001008 e3fd0001 .* |
/mmohdr1.ld
0,0 → 1,11
OUTPUT_ARCH(mmix) |
OUTPUT_FORMAT("mmo") |
ENTRY(Main) |
SECTIONS |
{ |
.text 0x100 + sizeof_headers : |
{ *(.text); Main = _start; } |
|
.MMIX.reg_contents : |
{ *(.MMIX.reg_contents); } |
} |
/bpo-6.d
0,0 → 1,30
#source: start.s |
#source: bpo-4.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix |
#objdump: -st |
|
# 223 (max) linker-allocated GREGs. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
0+100 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
#... |
0+ g \.text 0+ _start |
#... |
|
Contents of section \.text: |
0000 e3fd0001 230b2000 230b2100 230b2200 .* |
0010 230b2300 230b2400 230b2500 230b2600 .* |
#... |
0360 230bf700 230bf800 230bf900 230bfa00 .* |
0370 230bfb00 230bfc00 230bfd00 230bfe00 .* |
Contents of section \.MMIX\.reg_contents: |
0100 00000000 00000000 00000000 00000100 .* |
0110 00000000 00000200 00000000 00000300 .* |
#... |
07d0 00000000 0000da00 00000000 0000db00 .* |
07e0 00000000 0000dc00 00000000 0000dd00 .* |
07f0 00000000 0000de00 .* |
/pushja8b.d
0,0 → 1,21
#source: start.s |
#source: a.s |
#source: pushja.s |
#as: -no-expand |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
|
0+8 <pushja>: |
8: e3fd0002 setl \$253,0x2 |
c: f30cfffe pushj \$12,4 <a> |
10: e3fd0003 setl \$253,0x3 |
/getaa-4b.d
0,0 → 1,26
#source: start.s |
#source: a.s |
#source: pad2p18m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: getaa.s |
#as: -no-expand |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
\.\.\. |
|
0+40000 <getaa>: |
40000: e3fd0002 setl \$253,0x2 |
40004: f57b0000 geta \$123,4 <a> |
40008: e3fd0003 setl \$253,0x3 |
/jumpa-5f.d
0,0 → 1,29
#source: start.s |
#source: jumpa.s |
#source: pad2p26m32.s |
#source: pad4.s |
#source: pad4.s |
#source: a.s |
#as: -x |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <jumpa>: |
4: e3fd0002 setl \$253,0x2 |
8: e3ff0008 setl \$255,0x8 |
c: e6ff0400 incml \$255,0x400 |
10: e5ff0000 incmh \$255,0x0 |
14: e4ff0000 inch \$255,0x0 |
18: 9fffff00 go \$255,\$255,0 |
1c: e3fd0003 setl \$253,0x3 |
\.\.\. |
|
0+4000008 <a>: |
4000008: e3fd0004 setl \$253,0x4 |
/getaa14b.d
0,0 → 1,11
#source: start.s |
#source: a.s |
#source: pad2p18m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: pad4.s |
#source: getaa.s |
#as: -no-expand |
#ld: -m mmo |
#error: relocation truncated to fit: R_MMIX_ADDR19 against `a'$ |
/greg-14s.d
0,0 → 1,23
#source: greg-1.s |
#source: gregpsj1.s |
#source: start.s |
#source: a.s |
#as: -x |
#ld: -m mmo |
#objdump: -dt |
|
# Like greg-14, but using PUSHJ stubs. |
|
.*: file format mmo |
SYMBOL TABLE: |
0+4 g \.text Main |
0+4 g \.text _start |
0+fe g \*REG\* areg |
0+8 g \.text a |
Disassembly of section \.text: |
0+ <(Main|_start)-0x4>: |
0: f2fe0002 pushj areg,8 <a> |
0+4 <(Main|_start)>: |
4: e3fd0001 setl \$253,0x1 |
0+8 <a>: |
8: e3fd0004 setl \$253,0x4 |
/local3m.d
0,0 → 1,19
#source: greg-4.s |
#source: greg-4.s |
#source: local1.s |
#source: ext1.s |
#source: start.s |
#ld: -m mmo |
#objdump: -str |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+4 g \.text Main |
0+fc g \*ABS\* ext1 |
0+4 g \.text _start |
|
Contents of section \.text: |
0000 fd030201 e3fd0001 .* |
Contents of section \.MMIX\.reg_contents: |
07e8 00000000 0000004e 00000000 0000004e .* |
/sec-8m.d
0,0 → 1,30
#source: start.s |
#source: sec-8a.s |
#source: sec-8b.s |
#source: sec-8m.s |
#source: sec-8d.s |
#ld: -m mmo |
#objdump: -s |
|
# Distantly related to sec-7m.s in that section lengths mattered for the |
# bug. When one input-section (seen in mmo.c as a chunk of data to |
# output) had a length not a multiple of four, the last bytes were saved |
# to be concatenated with the next chunk. If it was followed by a chunk |
# with a leading multiple-of-four number of zero bytes, those zero bytes |
# would be omitted, and the "saved" bytes would be concatenated with the |
# following (not-all-zeros) bytes. Hence a shift of the last bytes of the |
# first chunk. |
|
.*: file format mmo |
|
Contents of section \.text: |
00000 e3fd0001 2a000000 00000000 00000000 .* |
#... |
07ff0 00000000 00000000 00000000 2b2c0000 .* |
#... |
0fff0 00000000 00000000 00002d00 00000000 .* |
10000 00000000 00000000 0000002e 2f303132 .* |
10010 33000000 00000000 00000000 00000000 .* |
10020 00300000 00000000 00000000 00000000 .* |
#... |
18020 31 .* |
/local11.d
0,0 → 1,6
#source: local1.s |
#source: greg-1.s |
#source: ext1l.s |
#source: start.s |
#ld: -m elf64mmix |
#error: valid only with a register or absolute value |
/pushjs2.d
0,0 → 1,29
#source: start4.s |
#source: pushja.s |
#source: pad2p18m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: a.s |
#source: start.s |
#ld: -m elf64mmix |
#objdump: -dr |
|
# Check that PUSHJ with an offset just outside the PUSHJ offset range gets |
# a JMP stub expansion, ELF version. |
|
.*: file format elf64-mmix |
Disassembly of section \.init: |
0+ <_start>: |
0: e37704a6 setl \$119,0x4a6 |
Disassembly of section \.text: |
0+4 <pushja>: |
4: e3fd0002 setl \$253,0x2 |
8: f20c0002 pushj \$12,10 <pushja\+0xc> |
c: e3fd0003 setl \$253,0x3 |
10: f000ffff jmp 4000c <a> |
\.\.\. |
0+4000c <a>: |
4000c: e3fd0004 setl \$253,0x4 |
0+40010 <_start>: |
40010: e3fd0001 setl \$253,0x1 |
/getaa.s
0,0 → 1,7
* Just geta an external symbol, with some padding. |
.text |
.global getaa |
getaa: |
SET $253,2 |
GETA $123,a |
SET $253,3 |
/bpo-6.s
0,0 → 1,4
# A section with a symbol and a BPO allocation. |
.section .text.x2,"ax",@progbits |
.global x2 |
x2 LDA $45,x2+42000 |
/bpo-15.d
0,0 → 1,7
#source: start.s |
#source: bpo-7.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix |
#error: ^[^c][^h][^i][^l][^d].* undefined reference to `areg'$ |
|
# A BPO against an undefined symbol. |
/loc6.d
0,0 → 1,24
#source: dloc1.s |
#source: start.s |
#ld: -m elf64mmix |
#objdump: -str |
|
# Text files and one loc:ed data at offset. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
2000000000000200 l d \.data 0+ (|\.data) |
2000000000000200 g \.data 0+ dloc1 |
2000000000000200 g \*ABS\* 0+ __\.MMIX\.start\.\.data |
0+ g \.text 0+ _start |
200000000000020c g \*ABS\* 0+ __bss_start |
200000000000020c g \*ABS\* 0+ _edata |
2000000000000210 g \*ABS\* 0+ _end |
0+ g \.text 0+ _start\. |
|
Contents of section \.text: |
0000 e3fd0001 .* |
Contents of section \.data: |
2000000000000200 00000004 00000005 00000006 .* |
/b-bend1.d
0,0 → 1,11
#source: b-twoinsn.s |
#source: b-bend.s |
#source: b-post1.s |
#source: b-goodmain.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#error: invalid mmo file: lop_end not last item in file |
|
# This test depend on that the non-at-end condition is tested before |
# not-correct-YZ-field and might need tweaking if the implementation |
# changes. |
/bspec806.s
0,0 → 1,10
BSPEC 80 |
TETRA 2 % Decent section length name (in 32-bit words). |
BYTE "aaaaaaaa" |
TETRA 0x11 % Flags. |
OCTA 12 % Decent section length. However... |
ESPEC % Everything ends here. The next thing is a LOP_LOC for .data, or |
% an ending LOP-something, hence a non-LOP_QUOTE in the section |
% length, high part. |
.data |
TETRA 0x112233 |
/sec-8m.s
0,0 → 1,4
.section .text.1 |
.byte 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 |
.byte 46, 47, 48, 49, 50, 51 |
.byte 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 |
/local1.d
0,0 → 1,50
#source: greg-4.s |
#source: greg-4.s |
#source: local1.s |
#source: regext1.s |
#source: start.s |
#ld: -m elf64mmix |
#readelf: -Ssx1 -x2 |
|
# We check that the externally visible symbol ext1 is a local register |
# (different meaning of "local" than for symbol), which can be seen as |
# somewhat twisted. |
|
There are 6 section headers, starting at offset 0xc8: |
|
Section Headers: |
\[Nr\] Name Type Address Offset |
Size EntSize Flags Link Info Align |
\[ 0\] NULL 0+ 0+ |
0+ 0+ 0 0 0 |
\[ 1\] \.text PROGBITS 0+ 0+78 |
0+8 0+ AX 0 0 4 |
\[ 2\] \.MMIX\.reg_content PROGBITS 0+7e8 0+80 |
0+10 0+ W 0 0 1 |
\[ 3\] \.shstrtab STRTAB 0+ 0+90 |
0+34 0+ 0 0 1 |
\[ 4\] \.symtab SYMTAB 0+ 0+248 |
0+108 0+18 5 5 8 |
\[ 5\] \.strtab STRTAB 0+ 0+350 |
0+32 0+ 0 0 1 |
Key to Flags: |
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) |
I \(info\), L \(link order\), G \(group\), x \(unknown\) |
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) |
|
Symbol table '\.symtab' contains 11 entries: |
Num: Value Size Type Bind Vis Ndx Name |
0: 0+ 0 NOTYPE LOCAL DEFAULT UND |
1: 0+ 0 SECTION LOCAL DEFAULT 1 |
2: 0+7e8 0 SECTION LOCAL DEFAULT 2 |
3: 0+fd 0 NOTYPE LOCAL DEFAULT PRC\[0xff00\] lsym |
4: 0+fe 0 NOTYPE LOCAL DEFAULT PRC\[0xff00\] lsym |
5: 0+fc 0 NOTYPE GLOBAL DEFAULT PRC\[0xff00\] ext1 |
6: 0+4 0 NOTYPE GLOBAL DEFAULT 1 _start |
#... |
|
Hex dump of section '\.text': |
0x0+ fd030201 e3fd0001 .* |
|
Hex dump of section '\.MMIX\.reg_contents': |
0x0+7e8 00000000 0000004e 00000000 0000004e .* |
/reg-2.d
0,0 → 1,7
#source: areg-t.s |
#source: gregget1.s |
#source: start.s |
#source: a.s |
#as: -x |
#ld: -m elf64mmix |
#error: register relocation against non-register symbol: areg in \.text |
/pushjs1bm.d
0,0 → 1,29
#source: nop123.s |
#source: nop123.s |
#source: a.s |
#source: pad2p18m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: pushja.s |
#source: start.s |
#ld: -m mmo |
#objdump: -dr |
|
# Check that PUSHJ with an offset just within the offset range gets no |
# stub expansion, backwards, mmo version. |
|
.*: file format mmo |
Disassembly of section \.text: |
0+ <a-0x8>: |
0: fd010203 swym 1,2,3 |
4: fd010203 swym 1,2,3 |
0+8 <a>: |
8: e3fd0004 setl \$253,0x4 |
\.\.\. |
0+40004 <pushja>: |
40004: e3fd0002 setl \$253,0x2 |
40008: f30c0000 pushj \$12,8 <a> |
4000c: e3fd0003 setl \$253,0x3 |
0+40010 <Main>: |
40010: e3fd0001 setl \$253,0x1 |
/b-badfil1.d
0,0 → 1,7
#source: b-twoinsn.s |
#source: b-badfil1.s |
#source: b-post1.s |
#source: b-goodmain.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#error: invalid mmo file: file number 42 `bar.s', was already entered as `foo.s' |
/jumpa-8b.d
0,0 → 1,21
#source: start.s |
#source: a.s |
#source: jumpa.s |
#as: -no-expand |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
|
0+8 <jumpa>: |
8: e3fd0002 setl \$253,0x2 |
c: f1fffffe jmp 4 <a> |
10: e3fd0003 setl \$253,0x3 |
/local9.d
0,0 → 1,5
#source: local1.s |
#source: ext1l.s |
#source: start.s |
#ld: -m elf64mmix |
#error: valid only with a register or absolute value |
/mmix.exp
0,0 → 1,35
# Expect script for ld-mmix tests |
# Copyright 2001, 2007 Free Software Foundation, Inc. |
# |
# This file is part of the GNU Binutils. |
# |
# This program is free software; you can redistribute it and/or modify |
# it under the terms of the GNU General Public License as published by |
# the Free Software Foundation; either version 3 of the License, or |
# (at your option) any later version. |
# |
# This program is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
# GNU General Public License for more details. |
# |
# You should have received a copy of the GNU General Public License |
# along with this program; if not, write to the Free Software |
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, |
# MA 02110-1301, USA. |
# |
# Written by Hans-Peter Nilsson (hp@bitrange.com) |
# |
|
# Test MMIX and mmo object format handling. |
|
if ![istarget mmix-*-*] { |
return |
} |
|
set rd_test_list [lsort [glob -nocomplain $srcdir/$subdir/*.d]] |
foreach mmixtest $rd_test_list { |
# We need to strip the ".d", but can leave the dirname. |
verbose [file rootname $mmixtest] |
run_dump_test [file rootname $mmixtest] |
} |
/spec801.d
0,0 → 1,21
#source: bspec801.s |
#source: start.s |
#ld: -m mmo |
#objdump: -sh |
|
# Check exceptional cases for LOP_SPEC 80, which we parse according to a |
# specific format: see documentation and mmo.c |
# #1: name length has LOP_QUOTE. |
|
.*: file format mmo |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 00000004 0000000000000000 0000000000000000 00000000 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
1 \.MMIX\.spec_data\.80 00000004 0000000000000000 0000000000000000 00000000 2\*\*2 |
CONTENTS |
Contents of section \.text: |
0000 e3fd0001 .* |
Contents of section \.MMIX\.spec_data\.80: |
0000 98000001 .* |
/greg-8.d
0,0 → 1,37
#source: gregget1.s |
#source: greg-1.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: a.s |
#source: start.s |
#as: -x |
#ld: -m elf64mmix |
#error: Too many global registers: 224, max 223 |
|
# Allocating the maximum number of gregs *plus one* is an error. |
/local1.s
0,0 → 1,2
LOCAL ext1 |
SWYM 3,2,1 |
/getaa-7f.d
0,0 → 1,24
#source: start.s |
#source: getaa.s |
#source: a.s |
#as: -x |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0+: e3fd0001 setl \$253,0x1 |
|
0+4 <getaa>: |
4: e3fd0002 setl \$253,0x2 |
8: e37b001c setl \$123,0x1c |
c: e67b0000 incml \$123,0x0 |
10: e57b0000 incmh \$123,0x0 |
14: e47b0000 inch \$123,0x0 |
18: e3fd0003 setl \$253,0x3 |
|
0+1c <a>: |
1c: e3fd0004 setl \$253,0x4 |
/areg-t.s
0,0 → 1,3
.text |
.global areg |
areg SWYM 4,8,16 |
/b-badfil1.s
0,0 → 1,10
% The .text contents is supposed to be linked --oformat binary with |
% b-twoinsn.s and b-goodmain.s, and will provide two LOP_FILEs, but |
% specifying the same file number. |
.text |
.byte 0x98,06,42,2 |
.ascii "foo.s" |
.byte 0,0,0 |
.byte 0x98,06,42,2 |
.ascii "bar.s" |
.byte 0,0,0 |
/bpo-6m.d
0,0 → 1,27
#source: start.s |
#source: bpo-4.s |
#as: -linker-allocated-gregs |
#ld: -m mmo |
#objdump: -st |
|
# 223 (max) linker-allocated GREGs. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+ g \.text Main |
0+ g \.text _start |
|
Contents of section \.text: |
0000 e3fd0001 230b2000 230b2100 230b2200 .* |
0010 230b2300 230b2400 230b2500 230b2600 .* |
#... |
0360 230bf700 230bf800 230bf900 230bfa00 .* |
0370 230bfb00 230bfc00 230bfd00 230bfe00 .* |
Contents of section \.MMIX\.reg_contents: |
0100 00000000 00000000 00000000 00000100 .* |
0110 00000000 00000200 00000000 00000300 .* |
#... |
07d0 00000000 0000da00 00000000 0000db00 .* |
07e0 00000000 0000dc00 00000000 0000dd00 .* |
07f0 00000000 0000de00 .* |
/sym-1.d
0,0 → 1,11
#source: start.s |
#source: a.s |
#ld: -m mmo |
#nm: -n |
|
# Test that nm can grok a simple mmo symbol table (or that mmo lets nm |
# grok it). |
|
0+ T Main |
0+ T _start |
0+4 T a |
/greg-15.d
0,0 → 1,59
#source: gregget1.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-1.s |
#source: a.s |
#source: start.s |
#as: -x |
#ld: -m mmo |
#objdump: -dt |
|
# Allocating the maximum number of gregs and referring to one at the end |
# still works, mmo. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+14 g \.text Main |
0+14 g \.text _start |
0+fe g \*REG\* areg |
0+10 g \.text a |
|
Disassembly of section \.text: |
|
0+ <a-0x10>: |
0: e3fe0010 setl areg,0x10 |
4: e6fe0000 incml areg,0x0 |
8: e5fe0000 incmh areg,0x0 |
c: e4fe0000 inch areg,0x0 |
|
0+10 <a>: |
10: e3fd0004 setl \$253,0x4 |
|
0+14 <(Main|_start)>: |
14: e3fd0001 setl \$253,0x1 |
/bza-1b.d
0,0 → 1,26
#source: start.s |
#source: a.s |
#source: bza.s |
#as: -x |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0+: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
|
0+8 <bza>: |
8: e3fd0002 setl \$253,0x2 |
c: 5aea0006 pbnz \$234,24 <bza\+0x1c> |
10: e3ff0004 setl \$255,0x4 |
14: e6ff0000 incml \$255,0x0 |
18: e5ff0000 incmh \$255,0x0 |
1c: e4ff0000 inch \$255,0x0 |
20: 9fffff00 go \$255,\$255,0 |
24: e3fd0003 setl \$253,0x3 |
/start.s
0,0 → 1,5
* Just a start symbol and some non-NOP padding. |
.text |
.global _start |
_start: |
SET $253,1 |
/jumpa-3b.d
0,0 → 1,30
#source: start.s |
#source: a.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: jumpa.s |
#as: -x |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
\.\.\. |
|
0+4000000 <jumpa>: |
4000000: e3fd0002 setl \$253,0x2 |
4000004: f1000000 jmp 4 <a> |
4000008: fd000000 swym 0,0,0 |
400000c: fd000000 swym 0,0,0 |
4000010: fd000000 swym 0,0,0 |
4000014: fd000000 swym 0,0,0 |
4000018: e3fd0003 setl \$253,0x3 |
/locdo.s
0,0 → 1,2
LOC Data_Segment+2 |
od OCTA od |
/loc6m.d
0,0 → 1,18
#source: dloc1.s |
#source: start.s |
#ld: -m mmo |
#objdump: -str |
|
# Text files and one loc:ed data at offset. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+ g \.text Main |
2000000000000200 g \.data dloc1 |
0+ g \.text _start |
|
Contents of section \.text: |
0000 e3fd0001 .* |
Contents of section \.data: |
2000000000000200 00000004 00000005 00000006 .* |
/bpo-15m.d
0,0 → 1,7
#source: start.s |
#source: bpo-7.s |
#as: -linker-allocated-gregs |
#ld: -m mmo |
#error: ^[^c][^h][^i][^l][^d].* undefined reference to `areg'$ |
|
# A BPO against an undefined symbol. |
/dloc1.s
0,0 → 1,3
LOC #20 << 56 + #200 |
dloc1 TETRA 4,5,6 |
.global dloc1 |
/jumpa13b.d
0,0 → 1,31
#source: start.s |
#source: a.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: pad4.s |
#source: jumpa.s |
#as: -x |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
\.\.\. |
|
0+4000004 <jumpa>: |
4000004: e3fd0002 setl \$253,0x2 |
4000008: e3ff0004 setl \$255,0x4 |
400000c: e6ff0000 incml \$255,0x0 |
4000010: e5ff0000 incmh \$255,0x0 |
4000014: e4ff0000 inch \$255,0x0 |
4000018: 9fffff00 go \$255,\$255,0 |
400001c: e3fd0003 setl \$253,0x3 |
/b-badm2.s
0,0 → 1,6
% The .text contents is supposed to be linked --oformat binary with |
% b-twoinsn.s. It will provide an incorrect LOP_END; its YZ field is not |
% the number of tetras to the preceding LOP_STAB. |
.text |
.byte 0x98,0x0b,0x00,0x00,0x20,0x3a,0x30,0x4d,0x20,0x61,0x20,0x69 |
.byte 0x01,0x6e,0x04,0x81,0x01,0x61,0x04,0x82,0x98,0x0c,0x00,0x03 |
/gregget1.s
0,0 → 1,4
# Use a symbolic register areg, presumably allocated by greg in another file. |
# The "GETA" will be expanded, and the reloc for areg must be resolved |
# before the other relocs for that insn. |
GETA areg,a |
/bpo-7.d
0,0 → 1,6
#source: start.s |
#source: bpo-4.s |
#source: greg-1.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix |
#error: Too many global registers: 224 |
/getaa-2f.d
0,0 → 1,21
#source: start.s |
#source: getaa.s |
#source: a.s |
#as: -no-expand |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0+: e3fd0001 setl \$253,0x1 |
|
0+4 <getaa>: |
4: e3fd0002 setl \$253,0x2 |
8: f47b0002 geta \$123,10 <a> |
c: e3fd0003 setl \$253,0x3 |
|
0+10 <a>: |
10: e3fd0004 setl \$253,0x4 |
/getaa12f.d
0,0 → 1,25
#source: start.s |
#source: getaa.s |
#source: pad2p18m32.s |
#source: pad16.s |
#source: pad4.s |
#source: a.s |
#as: -no-expand |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <getaa>: |
4: e3fd0002 setl \$253,0x2 |
8: f47bffff geta \$123,40004 <a> |
c: e3fd0003 setl \$253,0x3 |
\.\.\. |
|
0+40004 <a>: |
40004: e3fd0004 setl \$253,0x4 |
/b-widec1.d
0,0 → 1,12
#source: b-twoinsn.s |
#source: b-post1.s |
#source: b-widec.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#objdump: -t |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+4 g \.text Main |
0+4 g \.text a |
/bpo-1m.d
0,0 → 1,18
#source: start.s |
#source: bpo-1.s |
#as: -linker-allocated-gregs |
#ld: -m mmo |
#objdump: -st |
|
# Just a simple linker-allocated GREG with no explicit GREGs. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+ g \.text Main |
0+ g \.text _start |
|
Contents of section \.text: |
0000 e3fd0001 232afe00 .* |
Contents of section \.MMIX\.reg_contents: |
07f0 00000000 0000002e .* |
/local12.d
0,0 → 1,16
#source: local1.s |
#source: ext1-254.s |
#source: start.s |
#ld: -m elf64mmix |
#objdump: -shr |
|
# Check that 254 is local when we don't have any registers. |
|
.*: file format elf64-mmix |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+8 0+ 0+ 0+78 2\*\*2 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
Contents of section \.text: |
0000 fd030201 e3fd0001 .* |
/regext1.s
0,0 → 1,2
.global ext1 |
ext1 IS $252 |
/locto.s
0,0 → 1,2
LOC #1002 |
od OCTA od |
/pushjs3.d
0,0 → 1,29
#source: start4.s |
#source: pushja.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: a.s |
#source: start.s |
#ld: -m elf64mmix |
#objdump: -dr |
|
# Check that PUSHJ with an offset just within reach of JMP gets it, ELF |
# version. |
|
.*: file format elf64-mmix |
Disassembly of section \.init: |
0+ <_start>: |
0: e37704a6 setl \$119,0x4a6 |
Disassembly of section \.text: |
0+4 <pushja>: |
4: e3fd0002 setl \$253,0x2 |
8: f20c0002 pushj \$12,10 <pushja\+0xc> |
c: e3fd0003 setl \$253,0x3 |
10: f0ffffff jmp 400000c <a> |
\.\.\. |
0+400000c <a>: |
400000c: e3fd0004 setl \$253,0x4 |
0+4000010 <_start>: |
4000010: e3fd0001 setl \$253,0x1 |
/local9m.d
0,0 → 1,5
#source: local1.s |
#source: ext1l.s |
#source: start.s |
#ld: -m mmo |
#error: valid only with a register or absolute value |
/b-badrx1.d
0,0 → 1,7
#source: b-twoinsn.s |
#source: b-badrx1.s |
#source: b-post1.s |
#source: b-goodmain.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#error: invalid mmo file: expected y = 0, .* lop_fixrx |
/bpo-7.s
0,0 → 1,2
# If the symbol is a register then this is an error. |
LDA $77,areg-5 |
/loc7.d
0,0 → 1,6
#source: dloc1.s |
#source: start.s |
#source: dloc2.s |
#ld: -m elf64mmix |
#objdump: -str |
#error: multiple definition of `__\.MMIX\.start\.\.data' |
/bpo-16.d
0,0 → 1,23
#source: start.s |
#source: bpo-7.s |
#source: bpo-7.s |
#source: areg-t.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix |
#objdump: -st |
|
# Two BPO:s against the same value get merged. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
0+7f0 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+ g \.text 0+ _start |
0+c g \.text 0+ areg |
#... |
|
Contents of section \.text: |
0000 e3fd0001 234dfe00 234dfe00 fd040810 .* |
Contents of section \.MMIX\.reg_contents: |
07f0 00000000 00000007 .* |
/b-bend2.d
0,0 → 1,10
#source: b-twoinsn.s |
#source: b-post1.s |
#source: b-goodmain.s |
#source: b-bend.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#error: invalid mmo file: lop_end not last item in file |
|
# We use the b-bend.s file just to make the correct lop_end in |
# b-goodmain.s not the last one. |
/bspec807.s
0,0 → 1,9
BSPEC 80 |
TETRA 2 % Decent section length name (in 32-bit words). |
BYTE "aaaaaaaa" |
TETRA 0x11 % Flags. |
TETRA 0,12 % Decent section length. However... |
TETRA 0 % Things end stops after the high part of the VMA. |
ESPEC |
.data |
TETRA 0x112233 |
/loc1m.d
0,0 → 1,14
#source: loc1.s |
#ld: -m mmo -e loc1 |
#objdump: -str |
|
# err: two locs. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+1000 g \.text Main |
0+1000 g \.text loc1 |
|
Contents of section \.text: |
1000 fd030303 .* |
/local2.d
0,0 → 1,8
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: local1.s |
#source: regext1.s |
#source: start.s |
#ld: -m elf64mmix |
#error: not a local register |
/pushjs4m.d
0,0 → 1,33
#source: nop123.s |
#source: pushja.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: pad4.s |
#source: a.s |
#source: start.s |
#ld: -m mmo |
#objdump: -dr |
|
# Check that PUSHJ with an offset just outside reach of JMP works; it will |
# get the full expansion, mmo version. |
|
.*: file format mmo |
Disassembly of section \.text: |
0+ <pushja-0x4>: |
0: fd010203 swym 1,2,3 |
0+4 <pushja>: |
4: e3fd0002 setl \$253,0x2 |
8: f20c0002 pushj \$12,10 <pushja\+0xc> |
c: e3fd0003 setl \$253,0x3 |
10: e3ff0020 setl \$255,0x20 |
14: e6ff0400 incml \$255,0x400 |
18: e5ff0000 incmh \$255,0x0 |
1c: e4ff0000 inch \$255,0x0 |
20: 9f00ff00 go \$0,\$255,0 |
\.\.\. |
0+4000020 <a>: |
4000020: e3fd0004 setl \$253,0x4 |
0+4000024 <Main>: |
4000024: e3fd0001 setl \$253,0x1 |
/b-badrx1.s
0,0 → 1,6
% The .text contents is supposed to be linked --oformat binary with |
% b-twoinsn.s and b-goodmain.s, and will provide a LOP_FIXRX with invalid |
% (non-zero), Y field. |
.text |
.byte 0x98,5,1,0 |
.4byte 0 |
/pushja1f.d
0,0 → 1,25
#source: start.s |
#source: pushja.s |
#source: a.s |
#as: -x --no-pushj-stubs |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <pushja>: |
4: e3fd0002 setl \$253,0x2 |
8: e3ff0020 setl \$255,0x20 |
c: e6ff0000 incml \$255,0x0 |
10: e5ff0000 incmh \$255,0x0 |
14: e4ff0000 inch \$255,0x0 |
18: bf0cff00 pushgo \$12,\$255,0 |
1c: e3fd0003 setl \$253,0x3 |
|
0+20 <a>: |
20: e3fd0004 setl \$253,0x4 |
/greg-1.d
0,0 → 1,27
#source: greg-1.s |
#source: gregldo1.s |
#source: start.s |
#ld: -m elf64mmix |
#objdump: -dt |
|
# Most simple greg usage: relocate to each possible location within an |
# insn. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
0+7f0 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+c g \.text 0+ _start |
0+fe g \*REG\* 0+ areg |
#... |
|
Disassembly of section \.text: |
|
0+ <_start-0xc>: |
0: 8c0c20fe ldo \$12,\$32,\$254 |
4: 8d7bfe22 ldo \$123,\$254,34 |
8: 8dfeea38 ldo \$254,\$234,56 |
|
0+c <_start>: |
c: e3fd0001 setl \$253,0x1 |
/b-badfil2.d
0,0 → 1,7
#source: b-twoinsn.s |
#source: b-badfil2.s |
#source: b-post1.s |
#source: b-goodmain.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#error: invalid mmo file: file name for number 42 was not specified before use |
/spec802.d
0,0 → 1,24
#source: bspec802.s |
#source: start.s |
#ld: -m mmo |
#objdump: -sh |
|
# See spec801.d. |
# #2: non-quote LOP in name. |
|
.*: file format mmo |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+4 0+ 0+ 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
1 \.data 0+4 2000000000000000 2000000000000000 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD |
2 \.MMIX\.spec_data\.80 0+4 0+ 0+ 0+ 2\*\*2 |
CONTENTS |
Contents of section \.text: |
0000 e3fd0001 .* |
Contents of section \.data: |
2000000000000000 00112233 .* |
Contents of section \.MMIX\.spec_data\.80: |
0000 00000004 .* |
/jumpa-6f.d
0,0 → 1,10
#source: start.s |
#source: jumpa.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: a.s |
#as: -no-expand |
#ld: -m elf64mmix |
#error: relocation truncated to fit: R_MMIX_ADDR27 against symbol `a' |
/greg-9.d
0,0 → 1,39
#source: gregget1.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-1.s |
#source: a.s |
#source: start.s |
#as: -x |
#ld: -m elf64mmix |
#objdump: -dt |
#error: Too many global registers: 224, max 223 |
|
# Allocating the maximum number of gregs *plus one* is an error; other end |
# of the stick. |
/local4m.d
0,0 → 1,8
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: local1.s |
#source: ext1.s |
#source: start.s |
#ld: -m mmo |
#error: is not a local register |
/local2.s
0,0 → 1,2
LOCAL 128 |
SWYM 2,2,2 |
/b-goodmain.s
0,0 → 1,5
% The .text contents is supposed to be linked --oformat binary with |
% b-twoinsn.s, and will provide a valid end of a mmo file. |
.text |
.byte 0x98,0x0b,0x00,0x00,0x20,0x3a,0x30,0x4d,0x20,0x61,0x20,0x69 |
.byte 0x01,0x6e,0x04,0x81,0x01,0x61,0x04,0x82,0x98,0x0c,0x00,0x04 |
/b-badfixo.d
0,0 → 1,7
#source: b-twoinsn.s |
#source: b-badfixo.s |
#source: b-post1.s |
#source: b-goodmain.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#error: invalid mmo file: .* lop_fixo |
/b-twoinsn.s
0,0 → 1,7
% The .text contents is supposed to be linked --oformat binary, and will |
% correspond to the start of a mmo file with two instructions. This file |
% ends before the LOP_STAB. |
.text |
.byte 0x98,9,1,1,0x3b,0x7f,0x9c,0xe3,0x98,1,0,2,0,0,0,0 |
.byte 0,0,0,0,0xe3,0xfd,0,1,0x98,1,0,2,0,0,0,0 |
.byte 0,0,0,4,0xe3,0xfd,0,4 |
/pushjs1b.d
0,0 → 1,31
#source: start4.s |
#source: nop123.s |
#source: a.s |
#source: pad2p18m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: pushja.s |
#source: start.s |
#ld: -m elf64mmix |
#objdump: -dr |
|
# Check that PUSHJ with an offset just within the offset range gets no |
# stub expansion, backwards, ELF version. |
|
.*: file format elf64-mmix |
Disassembly of section \.init: |
0+ <_start>: |
0: e37704a6 setl \$119,0x4a6 |
Disassembly of section \.text: |
0+4 <a-0x4>: |
4: fd010203 swym 1,2,3 |
0+8 <a>: |
8: e3fd0004 setl \$253,0x4 |
\.\.\. |
0+40004 <pushja>: |
40004: e3fd0002 setl \$253,0x2 |
40008: f30c0000 pushj \$12,8 <a> |
4000c: e3fd0003 setl \$253,0x3 |
0+40010 <_start>: |
40010: e3fd0001 setl \$253,0x1 |
/greg-1.s
0,0 → 1,3
# Have a single GREG register allocation. |
.global areg |
areg GREG 123456789101112 |
/b-badfil2.s
0,0 → 1,6
% The .text contents is supposed to be linked --oformat binary with |
% b-twoinsn.s and b-goodmain.s, and will provide a LOP_FILE for file |
% number 42, without specifying the file name, which an earlier LOP_FILE |
% for the same file number was supposed to have filled in |
.text |
.byte 0x98,06,42,0 |
/nop123.s
0,0 → 1,3
# A nop to pad with an explicit insn. |
.text |
SWYM 1,2,3 |
/sym-2.d
0,0 → 1,142
#source: start.s |
#source: sym-2.s |
#source: a.s |
#as: -globalize-symbols |
#ld: -m mmo |
#objcopy_linked_file: |
#objdump: -t |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+ g[ ]+\.text Main |
0+4 g[ ]+\.text a40 |
0+4 g[ ]+\.text a33 |
0+4 g[ ]+\.text a45 |
0+4 g[ ]+\.text a21 |
0+4 g[ ]+\.text a99 |
0+4 g[ ]+\.text a114 |
0+4 g[ ]+\.text a122 |
0+4 g[ ]+\.text a73 |
0+4 g[ ]+\.text a111 |
0+4 g[ ]+\.text a109 |
0+4 g[ ]+\.text a65 |
0+4 g[ ]+\.text a28 |
0+4 g[ ]+\.text a30 |
0+4 g[ ]+\.text a10 |
0+4 g[ ]+\.text a103 |
0+4 g[ ]+\.text a42 |
0+4 g[ ]+\.text a62 |
0+4 g[ ]+\.text a25 |
0+4 g[ ]+\.text a128 |
0+4 g[ ]+\.text a9 |
0+4 g[ ]+\.text a11 |
0+4 g[ ]+\.text a81 |
0+4 g[ ]+\.text a55 |
0+4 g[ ]+\.text a88 |
0+4 g[ ]+\.text a100 |
0+4 g[ ]+\.text a104 |
0+4 g[ ]+\.text a8 |
0+4 g[ ]+\.text a86 |
0+4 g[ ]+\.text a91 |
0+4 g[ ]+\.text a1 |
0+4 g[ ]+\.text a49 |
0+4 g[ ]+\.text a43 |
0+4 g[ ]+\.text a56 |
0+4 g[ ]+\.text a116 |
0+4 g[ ]+\.text a124 |
0+4 g[ ]+\.text a98 |
0+4 g[ ]+\.text a117 |
0+4 g[ ]+\.text a80 |
0+4 g[ ]+\.text a121 |
0+4 g[ ]+\.text a36 |
0+4 g[ ]+\.text a75 |
0+4 g[ ]+\.text a48 |
0+4 g[ ]+\.text a3 |
0+4 g[ ]+\.text a63 |
0+4 g[ ]+\.text a26 |
0+4 g[ ]+\.text a78 |
0+4 g[ ]+\.text a61 |
0+4 g[ ]+\.text a24 |
0+4 g[ ]+\.text a64 |
0+4 g[ ]+\.text a27 |
0+4 g[ ]+\.text a83 |
0+4 g[ ]+\.text a57 |
0+4 g[ ]+\.text a123 |
0+4 g[ ]+\.text a34 |
0+4 g[ ]+\.text a12 |
0+4 g[ ]+\.text a14 |
0+4 g[ ]+\.text a70 |
0+4 g[ ]+\.text a39 |
0+4 g[ ]+\.text a82 |
0+4 g[ ]+\.text a102 |
0+4 g[ ]+\.text a106 |
0+4 g[ ]+\.text a110 |
0+ g[ ]+\.text _start |
0+4 g[ ]+\.text a41 |
0+4 g[ ]+\.text a85 |
0+4 g[ ]+\.text a58 |
0+4 g[ ]+\.text a89 |
0+4 g[ ]+\.text a54 |
0+4 g[ ]+\.text a19 |
0+4 g[ ]+\.text a93 |
0+4 g[ ]+\.text a126 |
0+4 g[ ]+\.text a22 |
0+4 g[ ]+\.text a96 |
0+4 g[ ]+\.text a7 |
0+4 g[ ]+\.text a35 |
0+4 g[ ]+\.text a31 |
0+4 g[ ]+\.text a5 |
0+4 g[ ]+\.text a44 |
0+4 g[ ]+\.text a105 |
0+4 g[ ]+\.text a90 |
0+4 g[ ]+\.text a97 |
0+4 g[ ]+\.text a92 |
0+4 g[ ]+\.text a2 |
0+4 g[ ]+\.text a120 |
0+4 g[ ]+\.text a113 |
0+4 g[ ]+\.text a77 |
0+4 g[ ]+\.text a125 |
0+4 g[ ]+\.text a118 |
0+4 g[ ]+\.text a32 |
0+4 g[ ]+\.text a108 |
0+4 g[ ]+\.text a47 |
0+4 g[ ]+\.text a112 |
0+4 g[ ]+\.text a59 |
0+4 g[ ]+\.text a87 |
0+4 g[ ]+\.text a94 |
0+4 g[ ]+\.text a20 |
0+4 g[ ]+\.text a51 |
0+4 g[ ]+\.text a16 |
0+4 g[ ]+\.text a53 |
0+4 g[ ]+\.text a18 |
0+4 g[ ]+\.text a66 |
0+4 g[ ]+\.text a29 |
0+4 g[ ]+\.text a72 |
0+4 g[ ]+\.text a79 |
0+4 g[ ]+\.text a74 |
0+4 g[ ]+\.text a68 |
0+4 g[ ]+\.text a95 |
0+4 g[ ]+\.text a60 |
0+4 g[ ]+\.text a23 |
0+4 g[ ]+\.text a67 |
0+4 g[ ]+\.text a |
0+4 g[ ]+\.text a38 |
0+4 g[ ]+\.text a107 |
0+4 g[ ]+\.text a127 |
0+4 g[ ]+\.text a101 |
0+4 g[ ]+\.text a115 |
0+4 g[ ]+\.text a71 |
0+4 g[ ]+\.text a84 |
0+4 g[ ]+\.text a69 |
0+4 g[ ]+\.text a37 |
0+4 g[ ]+\.text a76 |
0+4 g[ ]+\.text a52 |
0+4 g[ ]+\.text a17 |
0+4 g[ ]+\.text a13 |
0+4 g[ ]+\.text a50 |
0+4 g[ ]+\.text a15 |
0+4 g[ ]+\.text a119 |
0+4 g[ ]+\.text a6 |
0+4 g[ ]+\.text a46 |
0+4 g[ ]+\.text a4 |
/greg-16.d
0,0 → 1,59
#source: gregget1.s |
#source: greg-1.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-5.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: greg-4.s |
#source: a.s |
#source: start.s |
#as: -x |
#ld: -m mmo |
#objdump: -dt |
|
# Allocating the maximum number of gregs and referring to one at the |
# *other* end still works, mmo. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+14 g \.text Main |
0+14 g \.text _start |
0+20 g \*REG\* areg |
0+10 g \.text a |
|
Disassembly of section \.text: |
|
0+ <a-0x10>: |
0: e3200010 setl areg,0x10 |
4: e6200000 incml areg,0x0 |
8: e5200000 incmh areg,0x0 |
c: e4200000 inch areg,0x0 |
|
0+10 <a>: |
10: e3fd0004 setl \$253,0x4 |
|
0+14 <(Main|_start)>: |
14: e3fd0001 setl \$253,0x1 |
/b-badfixo.s
0,0 → 1,5
% The .text contents is supposed to be linked --oformat binary with |
% b-twoinsn.s and b-goodmain.s, and will provide a LOP_FIXO with invalid; |
% (!= 1, != 2), YZ field. |
.text |
.byte 0x98,3,0,3 |
/pushjs1r.d
0,0 → 1,22
#source: nop123.s |
#source: pushja.s |
#source: pad2p18m32.s |
#source: pad16.s |
#source: nop123.s |
#ld: -r -m elf64mmix |
#objdump: -dr |
|
# When linking relocatable, check that PUSHJ with a distance to the end of |
# the section just within the offset range gets no stub expansion. |
|
.*: file format elf64-mmix |
Disassembly of section \.text: |
0+ <pushja-0x4>: |
0: fd010203 swym 1,2,3 |
0+4 <pushja>: |
4: e3fd0002 setl \$253,0x2 |
8: f20c0000 pushj \$12,8 <pushja\+0x4> |
8: R_MMIX_PUSHJ_STUBBABLE a |
c: e3fd0003 setl \$253,0x3 |
\.\.\. |
40000: fd010203 swym 1,2,3 |
/jumpa-1f.d
0,0 → 1,25
#source: start.s |
#source: jumpa.s |
#source: a.s |
#as: -x |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <jumpa>: |
4: e3fd0002 setl \$253,0x2 |
8: f0000006 jmp 20 <a> |
c: fd000000 swym 0,0,0 |
10: fd000000 swym 0,0,0 |
14: fd000000 swym 0,0,0 |
18: fd000000 swym 0,0,0 |
1c: e3fd0003 setl \$253,0x3 |
|
0+20 <a>: |
20: e3fd0004 setl \$253,0x4 |
/gregbza1.s
0,0 → 1,4
# Use a symbolic register areg, presumably allocated by greg in another file. |
# The "BZ" will be expanded, and the reloc for areg must be resolved |
# before the other relocs for that insn. |
BZ areg,a |
/bza-7b.d
0,0 → 1,26
#source: start.s |
#source: a.s |
#source: bza.s |
#as: -x |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0+: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
|
0+8 <bza>: |
8: e3fd0002 setl \$253,0x2 |
c: 5aea0006 pbnz \$234,24 <bza\+0x1c> |
10: e3ff0004 setl \$255,0x4 |
14: e6ff0000 incml \$255,0x0 |
18: e5ff0000 incmh \$255,0x0 |
1c: e4ff0000 inch \$255,0x0 |
20: 9fffff00 go \$255,\$255,0 |
24: e3fd0003 setl \$253,0x3 |
/dloc2.s
0,0 → 1,3
LOC #20 << 56 + #200 |
dloc2 TETRA 7,8,9 |
.global dloc2 |
/jumpa-9b.d
0,0 → 1,30
#source: start.s |
#source: a.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: jumpa.s |
#as: -x |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
\.\.\. |
|
0+4000000 <jumpa>: |
4000000: e3fd0002 setl \$253,0x2 |
4000004: f1000000 jmp 4 <a> |
4000008: fd000000 swym 0,0,0 |
400000c: fd000000 swym 0,0,0 |
4000010: fd000000 swym 0,0,0 |
4000014: fd000000 swym 0,0,0 |
4000018: e3fd0003 setl \$253,0x3 |
/gregget2.s
0,0 → 1,4
# Use a symbolic register b, presumably allocated by greg in another file. |
# The "GETA" will be expanded, and the reloc for b must be resolved before |
# the other relocs for that insn. |
GETA b,a |
/bpo-8.d
0,0 → 1,7
#source: start.s |
#source: bpo-4.s |
#source: pad2p18m32.s |
#source: bpo-1.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix |
#error: Too many global registers: 224 |
/sym-2.s
0,0 → 1,130
% Just 128 symbols to test that we can handle it in mmo. Assemble it with |
% -globalize-symbols. |
a1: |
a2: |
a3: |
a4: |
a5: |
a6: |
a7: |
a8: |
a9: |
a10: |
a11: |
a12: |
a13: |
a14: |
a15: |
a16: |
a17: |
a18: |
a19: |
a20: |
a21: |
a22: |
a23: |
a24: |
a25: |
a26: |
a27: |
a28: |
a29: |
a30: |
a31: |
a32: |
a33: |
a34: |
a35: |
a36: |
a37: |
a38: |
a39: |
a40: |
a41: |
a42: |
a43: |
a44: |
a45: |
a46: |
a47: |
a48: |
a49: |
a50: |
a51: |
a52: |
a53: |
a54: |
a55: |
a56: |
a57: |
a58: |
a59: |
a60: |
a61: |
a62: |
a63: |
a64: |
a65: |
a66: |
a67: |
a68: |
a69: |
a70: |
a71: |
a72: |
a73: |
a74: |
a75: |
a76: |
a77: |
a78: |
a79: |
a80: |
a81: |
a82: |
a83: |
a84: |
a85: |
a86: |
a87: |
a88: |
a89: |
a90: |
a91: |
a92: |
a93: |
a94: |
a95: |
a96: |
a97: |
a98: |
a99: |
a100: |
a101: |
a102: |
a103: |
a104: |
a105: |
a106: |
a107: |
a108: |
a109: |
a110: |
a111: |
a112: |
a113: |
a114: |
a115: |
a116: |
a117: |
a118: |
a119: |
a120: |
a121: |
a122: |
a123: |
a124: |
a125: |
a126: |
a127: |
a128: |
/b-widec.s
0,0 → 1,7
% The .text contents is supposed to be linked --oformat binary with |
% b-twoinsn.s, and will provide a valid end of a mmo file, but with the |
% "n" in :Main in wide character format; the widening is with a nil, so it |
% is treated like a normal "n". |
.text |
.byte 0x98,0x0b,0x00,0x00,0x20,0x3a,0x30,0x4d,0x20,0x61,0x20,0x69 |
.byte 0x81,0,0x6e,0x04,0x81,0x01,0x61,0x04,0x82,0,0,0,0x98,0x0c,0x00,0x05 |
/bspec1m.d
0,0 → 1,15
#source: bspec1.s |
#source: start.s |
#ld: -m mmo |
#objdump: -str |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+ g \.text Main |
0+ g \.text _start |
|
Contents of section \.text: |
0+ e3fd0001 .* |
Contents of section \.MMIX\.spec_data\.2: |
0000 0000002a .* |
/jumpa.s
0,0 → 1,7
* Just jump to an external symbol, with some padding. |
.text |
.global jumpa |
jumpa: |
SET $253,2 |
JMP a |
SET $253,3 |
/getaa-8f.d
0,0 → 1,21
#source: start.s |
#source: getaa.s |
#source: a.s |
#as: -no-expand |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0+: e3fd0001 setl \$253,0x1 |
|
0+4 <getaa>: |
4: e3fd0002 setl \$253,0x2 |
8: f47b0002 geta \$123,10 <a> |
c: e3fd0003 setl \$253,0x3 |
|
0+10 <a>: |
10: e3fd0004 setl \$253,0x4 |
/b-widec2.d
0,0 → 1,6
#source: b-twoinsn.s |
#source: b-post1.s |
#source: b-widec2.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#error: unsupported wide character sequence 0xFF 0x6E |
/pushjs4.d
0,0 → 1,34
#source: start4.s |
#source: pushja.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: pad4.s |
#source: a.s |
#source: start.s |
#ld: -m elf64mmix |
#objdump: -dr |
|
# Check that PUSHJ with an offset just outside reach of JMP works; it will |
# get the full expansion, ELF version. |
|
.*: file format elf64-mmix |
Disassembly of section \.init: |
0+ <_start>: |
0: e37704a6 setl \$119,0x4a6 |
Disassembly of section \.text: |
0+4 <pushja>: |
4: e3fd0002 setl \$253,0x2 |
8: f20c0002 pushj \$12,10 <pushja\+0xc> |
c: e3fd0003 setl \$253,0x3 |
10: e3ff0020 setl \$255,0x20 |
14: e6ff0400 incml \$255,0x400 |
18: e5ff0000 incmh \$255,0x0 |
1c: e4ff0000 inch \$255,0x0 |
20: 9f00ff00 go \$0,\$255,0 |
\.\.\. |
0+4000020 <a>: |
4000020: e3fd0004 setl \$253,0x4 |
0+4000024 <_start>: |
4000024: e3fd0001 setl \$253,0x1 |
/b-badrx2.d
0,0 → 1,7
#source: b-twoinsn.s |
#source: b-badrx2.s |
#source: b-post1.s |
#source: b-goodmain.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#error: invalid mmo file: expected z .* lop_fixrx |
/bpo-7m.d
0,0 → 1,6
#source: start.s |
#source: bpo-4.s |
#source: greg-1.s |
#as: -linker-allocated-gregs |
#ld: -m mmo |
#error: Too many global registers: 224 |
/b-badloc.d
0,0 → 1,7
#source: b-twoinsn.s |
#source: b-badloc.s |
#source: b-post1.s |
#source: b-goodmain.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#error: invalid mmo file: .* lop_loc |
/bpo-8.s
0,0 → 1,3
# A BPO and an ordinary reloc in the same section. |
LDA $54,areg-8 |
.quad areg-4 |
/greg-11b.d
0,0 → 1,32
#source: greg-1.s |
#source: gregldo1.s |
#source: gregget2.s |
#source: a.s |
#source: greg-3.s |
#source: start.s |
#source: greg-2.s |
#as: -x |
#ld: -m mmo |
#objdump: -str |
|
# Have two used gregs and one unused, mmo; display contents to visualize |
# mmo bug with register contents. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+20 g \.text Main |
0+fe g \*REG\* b |
0+20 g \.text _start |
0+fc g \*REG\* areg |
0+fd g \*REG\* c |
0+1c g \.text a |
|
|
Contents of section \.text: |
0+ 8c0c20fc 8d7bfc22 8dfcea38 e3fe001c .* |
0+10 e6fe0000 e5fe0000 e4fe0000 e3fd0004 .* |
0+20 e3fd0001 .* |
Contents of section \.MMIX\.reg_contents: |
07e0 00007048 860f3a38 00000000 00000042 .* |
07f0 007acf50 505a30a2 .* |
/bpo-17.d
0,0 → 1,23
#source: start.s |
#source: bpo-8.s |
#source: areg-t.s |
#as: -linker-allocated-gregs |
#ld: -m elf64mmix |
#objdump: -st |
|
# A BPO and another reloc in the same section. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
0+7f0 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+ g \.text 0+ _start |
0+10 g \.text 0+ areg |
#... |
|
Contents of section \.text: |
0000 e3fd0001 2336fe00 00000000 0000000c .* |
0010 fd040810 .* |
Contents of section \.MMIX\.reg_contents: |
07f0 00000000 00000008 .* |
/sec-1.d
0,0 → 1,35
#source: sec-1.s |
#source: start.s |
#ld: -m elf64mmix |
#objcopy_linked_file: -O mmo |
#objdump: -sh |
|
# Test conversion from ELF to mmo with non-mmo-sections present, |
# testing that support. |
|
.*: file format mmo |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+4 0+ 0+ 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
1 secname 0+19 0+4 0+4 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
2 \.a\.fourth\.section 0+10 0+20 0+20 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, READONLY, DATA |
3 anothersec 0+13 2000000000000000 2000000000000000 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, DATA |
4 thirdsec 0+a 0+ 0+ 0+ 2\*\*2 |
CONTENTS, READONLY |
Contents of section \.text: |
0000 e3fd0001 .* |
Contents of section secname: |
0004 00000001 00000002 00000003 00000004 .* |
0014 ffffffff fffff827 50 .* |
Contents of section \.a\.fourth\.section: |
0020 00000000 0087a238 00000000 302a55a8 .* |
Contents of section anothersec: |
2000000000000000 0000000a 00000009 00000008 00000007 .* |
2000000000000010 252729 .* |
Contents of section thirdsec: |
0000 00030d41 000186a2 2628 .* |
/b-bend3.d
0,0 → 1,6
#source: b-twoinsn.s |
#source: b-post1.s |
#source: b-badm2.s |
#ld: --oformat binary |
#objcopy_linked_file: |
#error: invalid mmo file: YZ of lop_end .* not equal to the number of tetras to the preceding lop_stab |
/b-widec2.s
0,0 → 1,7
% The .text contents is supposed to be linked --oformat binary with |
% b-twoinsn.s, and will provide a valid end of a mmo file, but with the |
% "n" in :Main in wide character format; the widening is with a 0xff, so it |
% isn't supported, and the file is rejected. |
.text |
.byte 0x98,0x0b,0x00,0x00,0x20,0x3a,0x30,0x4d,0x20,0x61,0x20,0x69 |
.byte 0x81,0xff,0x6e,0x04,0x81,0x01,0x61,0x04,0x82,0,0,0,0x98,0x0c,0x00,0x05 |
/bspec808.s
0,0 → 1,9
BSPEC 80 |
TETRA 2 % Decent section length name (in 32-bit words). |
BYTE "aaaaaaaa" |
TETRA 0x11 % Flags. |
TETRA 0xff00,0 % Indecent section length |
TETRA 0xff,0 % Decent vma. |
ESPEC |
.data |
TETRA 0x112233 |
/undef-1m.d
0,0 → 1,4
#source: undef-1.s |
#source: start.s |
#ld: -m mmo |
#error: undefined reference to `regvar' |
/local3.d
0,0 → 1,48
#source: greg-4.s |
#source: greg-4.s |
#source: local1.s |
#source: ext1.s |
#source: start.s |
#ld: -m elf64mmix |
#readelf: -Ssx1 -x2 |
|
# Like local1, but ext1 is here a constant, not a global register. |
|
There are 6 section headers, starting at offset 0xc8: |
|
Section Headers: |
\[Nr\] Name Type Address Offset |
Size EntSize Flags Link Info Align |
\[ 0\] NULL 0+ 0+ |
0+ 0+ 0 0 0 |
\[ 1\] \.text PROGBITS 0+ 0+78 |
0+8 0+ AX 0 0 4 |
\[ 2\] \.MMIX\.reg_content PROGBITS 0+7e8 0+80 |
0+10 0+ W 0 0 1 |
\[ 3\] \.shstrtab STRTAB 0+ 0+90 |
0+34 0+ 0 0 1 |
\[ 4\] \.symtab SYMTAB 0+ 0+248 |
0+108 0+18 5 5 8 |
\[ 5\] \.strtab STRTAB 0+ 0+350 |
0+32 0+ 0 0 1 |
Key to Flags: |
W \(write\), A \(alloc\), X \(execute\), M \(merge\), S \(strings\) |
I \(info\), L \(link order\), G \(group\), x \(unknown\) |
O \(extra OS processing required\) o \(OS specific\), p \(processor specific\) |
|
Symbol table '\.symtab' contains 11 entries: |
Num: Value Size Type Bind Vis Ndx Name |
0: 0+ 0 NOTYPE LOCAL DEFAULT UND |
1: 0+ 0 SECTION LOCAL DEFAULT 1 |
2: 0+7e8 0 SECTION LOCAL DEFAULT 2 |
3: 0+fd 0 NOTYPE LOCAL DEFAULT PRC\[0xff00\] lsym |
4: 0+fe 0 NOTYPE LOCAL DEFAULT PRC\[0xff00\] lsym |
5: 0+fc 0 NOTYPE GLOBAL DEFAULT ABS ext1 |
6: 0+4 0 NOTYPE GLOBAL DEFAULT 1 _start |
#... |
|
Hex dump of section '\.text': |
0x0+ fd030201 e3fd0001 .* |
|
Hex dump of section '\.MMIX\.reg_contents': |
0x0+7e8 00000000 0000004e 00000000 0000004e .* |
/bza-2b.d
0,0 → 1,21
#source: start.s |
#source: a.s |
#source: bza.s |
#as: -no-expand |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0+: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
|
0+8 <bza>: |
8: e3fd0002 setl \$253,0x2 |
c: 43eafffe bz \$234,4 <a> |
10: e3fd0003 setl \$253,0x3 |
/pushjs2bm.d
0,0 → 1,31
#source: nop123.s |
#source: nop123.s |
#source: a.s |
#source: pad2p18m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: pad4.s |
#source: pushja.s |
#source: start.s |
#ld: -m mmo |
#objdump: -dr |
|
# Check that PUSHJ with an offset just outside the offset range gets a JMP |
# stub expansion, backwards, mmo version. |
|
.*: file format mmo |
Disassembly of section \.text: |
0+ <a-0x8>: |
0: fd010203 swym 1,2,3 |
4: fd010203 swym 1,2,3 |
0+8 <a>: |
8: e3fd0004 setl \$253,0x4 |
\.\.\. |
0+40008 <pushja>: |
40008: e3fd0002 setl \$253,0x2 |
4000c: f20c0002 pushj \$12,40014 <pushja\+0xc> |
40010: e3fd0003 setl \$253,0x3 |
40014: f1fefffd jmp 8 <a> |
0+40018 <Main>: |
40018: e3fd0001 setl \$253,0x1 |
/jumpa-4b.d
0,0 → 1,26
#source: start.s |
#source: a.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: jumpa.s |
#as: -no-expand |
#ld: -m elf64mmix |
#objdump: -dr |
|
.*: file format elf64-mmix |
|
Disassembly of section \.text: |
|
0+ <_start>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <a>: |
4: e3fd0004 setl \$253,0x4 |
\.\.\. |
|
0+4000000 <jumpa>: |
4000000: e3fd0002 setl \$253,0x2 |
4000004: f1000000 jmp 4 <a> |
4000008: e3fd0003 setl \$253,0x3 |
/b-badrx2.s
0,0 → 1,6
% The .text contents is supposed to be linked --oformat binary with |
% b-twoinsn.s and b-goodmain.s, and will provide a LOP_FIXRX with invalid |
% (!= 16, != 24), Z field. |
.text |
.byte 0x98,5,0,8 |
.4byte 0 |
/sec-9.d
0,0 → 1,19
#source: start.s |
#ld: -m mmo -T $srcdir/$subdir/mmosec2.ld |
#objdump: -sh |
|
# This is based on sec-5.d which used to link .text at an unexpected |
# address to check that a special section was created in objdump when |
# reading in contents at an unusual location without a proper section |
# descriptor. As .text (like .data) now gets a section descriptor when |
# linked to an unexpected location, the old test is transformed into a |
# specific check that the section description for .text works. |
|
.*: file format mmo |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+4 1000000000000000 1000000000000000 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, READONLY, CODE |
Contents of section \.text: |
1000000000000000 e3fd0001 .* |
/loc7m.d
0,0 → 1,6
#source: dloc1.s |
#source: start.s |
#source: dloc2.s |
#ld: -m mmo |
#objdump: -str |
#error: multiple definition of `__\.MMIX\.start\.\.data' |
/bpo-16m.d
0,0 → 1,21
#source: start.s |
#source: bpo-7.s |
#source: bpo-7.s |
#source: areg-t.s |
#as: -linker-allocated-gregs |
#ld: -m mmo |
#objdump: -st |
|
# Two BPO:s against the same value get merged. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+ g \.text Main |
0+ g \.text _start |
0+c g \.text areg |
|
Contents of section \.text: |
0000 e3fd0001 234dfe00 234dfe00 fd040810 .* |
Contents of section \.MMIX\.reg_contents: |
07f0 00000000 00000007 .* |
/b-badloc.s
0,0 → 1,5
% The .text contents is supposed to be linked --oformat binary with |
% b-twoinsn.s and b-goodmain.s, and will provide a LOP_LOC with invalid; |
% (!= 1, != 2), YZ field. |
.text |
.byte 0x98,1,0,0 |
/jumpa14b.d
0,0 → 1,11
#source: start.s |
#source: a.s |
#source: pad2p26m32.s |
#source: pad16.s |
#source: pad4.s |
#source: pad4.s |
#source: pad4.s |
#source: jumpa.s |
#as: -no-expand |
#ld: -m mmo |
#error: relocation truncated to fit: R_MMIX_ADDR27 against `a'$ |
/greg-2.d
0,0 → 1,41
#source: greg-1.s |
#source: gregldo1.s |
#source: gregget2.s |
#source: a.s |
#source: greg-3.s |
#source: start.s |
#source: greg-2.s |
#as: -x |
#ld: -m elf64mmix |
#objdump: -dt |
|
# Have two used gregs and one unused. |
|
.*: file format elf64-mmix |
|
SYMBOL TABLE: |
0+ l d \.text 0+ (|\.text) |
0+7e0 l d \.MMIX\.reg_contents 0+ (|\.MMIX\.reg_contents) |
0+fe g \*REG\* 0+ b |
0+20 g \.text 0+ _start |
0+fc g \*REG\* 0+ areg |
0+fd g \*REG\* 0+ c |
#... |
0+1c g \.text 0+ a |
|
Disassembly of section \.text: |
|
0+ <a-0x1c>: |
0: 8c0c20fc ldo \$12,\$32,\$252 |
4: 8d7bfc22 ldo \$123,\$252,34 |
8: 8dfcea38 ldo \$252,\$234,56 |
c: e3fe001c setl \$254,0x1c |
10: e6fe0000 incml \$254,0x0 |
14: e5fe0000 incmh \$254,0x0 |
18: e4fe0000 inch \$254,0x0 |
|
0+1c <a>: |
1c: e3fd0004 setl \$253,0x4 |
|
0+20 <_start>: |
20: e3fd0001 setl \$253,0x1 |
/spec803.d
0,0 → 1,24
#source: bspec803.s |
#source: start.s |
#ld: -m mmo |
#objdump: -sh |
|
# See spec801.d. |
# #3: LOP_QUOTE in name and non-quote LOP in section flags. |
|
.*: file format mmo |
|
Sections: |
Idx Name Size VMA LMA File off Algn |
0 \.text 0+4 0+ 0+ 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD, CODE |
1 \.data 0+4 2000000000000000 2000000000000000 0+ 2\*\*2 |
CONTENTS, ALLOC, LOAD |
2 \.MMIX\.spec_data\.80 0+c 0+ 0+ 0+ 2\*\*2 |
CONTENTS |
Contents of section \.text: |
0000 e3fd0001 .* |
Contents of section \.data: |
2000000000000000 00112233 .* |
Contents of section \.MMIX\.spec_data\.80: |
0000 00000002 61616161 98616161 .* |
/pushja7f.d
0,0 → 1,25
#source: start.s |
#source: pushja.s |
#source: a.s |
#as: -x --no-pushj-stubs |
#ld: -m mmo |
#objdump: -dr |
|
.*: file format mmo |
|
Disassembly of section \.text: |
|
0+ <(Main|_start)>: |
0: e3fd0001 setl \$253,0x1 |
|
0+4 <pushja>: |
4: e3fd0002 setl \$253,0x2 |
8: e3ff0020 setl \$255,0x20 |
c: e6ff0000 incml \$255,0x0 |
10: e5ff0000 incmh \$255,0x0 |
14: e4ff0000 inch \$255,0x0 |
18: bf0cff00 pushgo \$12,\$255,0 |
1c: e3fd0003 setl \$253,0x3 |
|
0+20 <a>: |
20: e3fd0004 setl \$253,0x4 |
/sec-1.s
0,0 → 1,14
.section secname,"ax" |
TETRA 1,2,3,4,-1,-2009 |
BYTE 80 |
|
.section anothersec,"aw" |
TETRA 10,9,8,7 |
BYTE 37,39,41 |
|
.section thirdsec |
TETRA 200001,100002 |
BYTE 38,40 |
|
.section .a.fourth.section,"a" |
OCTA 8888888,808080808 |
/bpo-2m.d
0,0 → 1,21
#source: start.s |
#source: greg-1.s |
#source: bpo-1.s |
#as: -linker-allocated-gregs |
#ld: -m mmo |
#objdump: -st |
|
# Just a simple linker-allocated GREG plus one explicit GREG. |
|
.*: file format mmo |
|
SYMBOL TABLE: |
0+ g \.text Main |
0+ g \.text _start |
0+fe g \*REG\* areg |
|
Contents of section \.text: |
0000 e3fd0001 232afd00 .* |
Contents of section \.MMIX\.reg_contents: |
07e8 00000000 0000002e 00007048 860f3a38 .* |
|