From fb17c22277a9412942775a66f641e2e735c8f090 Mon Sep 17 00:00:00 2001
From: Hans-Peter Nilsson <hp@axis.com>
Date: Fri, 1 Feb 2002 08:30:12 +0000
Subject: 	* ld-mmix/bpo-1.d, ld-mmix/bpo-1.s, ld-mmix/bpo-1m.d, 
 ld-mmix/bpo-15.d, ld-mmix/bpo-4.s, ld-mmix/bpo-6.d, 	ld-mmix/bpo-6.s,
 ld-mmix/bpo-2.d, ld-mmix/bpo-6m.d, 	ld-mmix/bpo-12m.d, ld-mmix/bpo-2m.d,
 ld-mmix/bpo-2.s, 	ld-mmix/bpo-5.s, ld-mmix/bpo-3.d, ld-mmix/start3.s, 
 ld-mmix/bpo-3m.d, ld-mmix/bpo-9m.d, ld-mmix/bpo-4.d, 	ld-mmix/bpo-3.s,
 ld-mmix/bpo-4m.d, ld-mmix/bpo-7.d, 	ld-mmix/bpo-5.d, ld-mmix/bpo-16.d,
 ld-mmix/bpo-5m.d, 	ld-mmix/bpo-7m.d, ld-mmix/bpo-9.d, ld-mmix/bpo-8.d, 
 ld-mmix/start4.s, ld-mmix/bpo-8m.d, ld-mmix/bpo-13m.d, 
 ld-mmix/bpo-15m.d, ld-mmix/bpo-10.d, ld-mmix/bpo-11.d, 
 ld-mmix/bpo-14m.d, ld-mmix/bpo-13.d, ld-mmix/bpo-7.s, 	ld-mmix/bpo-12.d,
 ld-mmix/bpo-16m.d, ld-mmix/bpo-14.d, 	ld-mmix/bpo-8.s, ld-mmix/bpo-17.d,
 ld-mmix/bpo-17m.d: New tests.

---
 ld/testsuite/ld-mmix/bpo-1.d   | 33 +++++++++++++++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-1.s   |  2 ++
 ld/testsuite/ld-mmix/bpo-10.d  | 34 ++++++++++++++++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-11.d  | 39 +++++++++++++++++++++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-12.d  |  9 +++++++++
 ld/testsuite/ld-mmix/bpo-12m.d |  9 +++++++++
 ld/testsuite/ld-mmix/bpo-13.d  |  9 +++++++++
 ld/testsuite/ld-mmix/bpo-13m.d |  9 +++++++++
 ld/testsuite/ld-mmix/bpo-14.d  | 33 +++++++++++++++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-14m.d | 20 ++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-15.d  |  7 +++++++
 ld/testsuite/ld-mmix/bpo-15m.d |  7 +++++++
 ld/testsuite/ld-mmix/bpo-16.d  | 34 ++++++++++++++++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-16m.d | 21 +++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-17.d  | 34 ++++++++++++++++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-17m.d | 22 ++++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-1m.d  | 18 ++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-2.d   | 34 ++++++++++++++++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-2.s   |  2 ++
 ld/testsuite/ld-mmix/bpo-2m.d  | 21 +++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-3.d   | 34 ++++++++++++++++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-3.s   |  1 +
 ld/testsuite/ld-mmix/bpo-3m.d  | 20 ++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-4.d   | 36 ++++++++++++++++++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-4.s   |  5 +++++
 ld/testsuite/ld-mmix/bpo-4m.d  | 22 ++++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-5.d   | 35 +++++++++++++++++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-5.s   |  4 ++++
 ld/testsuite/ld-mmix/bpo-5m.d  | 21 +++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-6.d   | 41 +++++++++++++++++++++++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-6.s   |  4 ++++
 ld/testsuite/ld-mmix/bpo-6m.d  | 27 +++++++++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-7.d   |  6 ++++++
 ld/testsuite/ld-mmix/bpo-7.s   |  2 ++
 ld/testsuite/ld-mmix/bpo-7m.d  |  6 ++++++
 ld/testsuite/ld-mmix/bpo-8.d   |  7 +++++++
 ld/testsuite/ld-mmix/bpo-8.s   |  3 +++
 ld/testsuite/ld-mmix/bpo-8m.d  |  7 +++++++
 ld/testsuite/ld-mmix/bpo-9.d   | 36 ++++++++++++++++++++++++++++++++++++
 ld/testsuite/ld-mmix/bpo-9m.d  | 22 ++++++++++++++++++++++
 ld/testsuite/ld-mmix/start3.s  |  7 +++++++
 ld/testsuite/ld-mmix/start4.s  |  6 ++++++
 42 files changed, 749 insertions(+)
 create mode 100644 ld/testsuite/ld-mmix/bpo-1.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-1.s
 create mode 100644 ld/testsuite/ld-mmix/bpo-10.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-11.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-12.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-12m.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-13.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-13m.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-14.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-14m.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-15.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-15m.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-16.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-16m.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-17.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-17m.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-1m.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-2.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-2.s
 create mode 100644 ld/testsuite/ld-mmix/bpo-2m.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-3.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-3.s
 create mode 100644 ld/testsuite/ld-mmix/bpo-3m.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-4.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-4.s
 create mode 100644 ld/testsuite/ld-mmix/bpo-4m.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-5.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-5.s
 create mode 100644 ld/testsuite/ld-mmix/bpo-5m.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-6.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-6.s
 create mode 100644 ld/testsuite/ld-mmix/bpo-6m.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-7.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-7.s
 create mode 100644 ld/testsuite/ld-mmix/bpo-7m.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-8.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-8.s
 create mode 100644 ld/testsuite/ld-mmix/bpo-8m.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-9.d
 create mode 100644 ld/testsuite/ld-mmix/bpo-9m.d
 create mode 100644 ld/testsuite/ld-mmix/start3.s
 create mode 100644 ld/testsuite/ld-mmix/start4.s

(limited to 'ld/testsuite/ld-mmix')

diff --git a/ld/testsuite/ld-mmix/bpo-1.d b/ld/testsuite/ld-mmix/bpo-1.d
new file mode 100644
index 0000000..7f409fc
--- /dev/null
+++ b/ld/testsuite/ld-mmix/bpo-1.d
@@ -0,0 +1,33 @@
+#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+ 
+2000000000000000 l    d  \.data	0+ 
+2000000000000000 l    d  \.sbss	0+ 
+2000000000000000 l    d  \.bss	0+ 
+0+7f0 l    d  \.MMIX\.reg_contents	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+4 l       \.text	0+ x
+0+ g       \.text	0+ _start
+2000000000000000 g     O \*ABS\*	0+ __bss_start
+2000000000000000 g     O \*ABS\*	0+ _edata
+2000000000000000 g     O \*ABS\*	0+ _end
+0+ g     O \.text	0+ _start\.
+
+
+Contents of section \.text:
+ 0000 e3fd0001 232afe00                    .*
+Contents of section \.data:
+Contents of section \.sbss:
+Contents of section \.MMIX\.reg_contents:
+ 07f0 00000000 0000002e                    .*
diff --git a/ld/testsuite/ld-mmix/bpo-1.s b/ld/testsuite/ld-mmix/bpo-1.s
new file mode 100644
index 0000000..0a76e40
--- /dev/null
+++ b/ld/testsuite/ld-mmix/bpo-1.s
@@ -0,0 +1,2 @@
+# A most simple instruction needing a linker-supplied GREG.
+x LDA $42,x+42
diff --git a/ld/testsuite/ld-mmix/bpo-10.d b/ld/testsuite/ld-mmix/bpo-10.d
new file mode 100644
index 0000000..31aa661
--- /dev/null
+++ b/ld/testsuite/ld-mmix/bpo-10.d
@@ -0,0 +1,34 @@
+#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+ 
+0+4 l    d  \.text	0+ 
+2000000000000000 l    d  \.sbss	0+ 
+2000000000000000 l    d  \.bss	0+ 
+0+7f8 l    d  \.MMIX\.reg_contents	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l       \.init	0+ _start
+0+ g       \*ABS\*	0+ 
+0+ g       \*ABS\*	0+ 
+2000000000000000 g     O \*ABS\*	0+ __bss_start
+2000000000000000 g     O \*ABS\*	0+ _edata
+2000000000000000 g     O \*ABS\*	0+ _end
+0+4 g     O \.text	0+ _start\.
+
+Contents of section \.init:
+ 0000 e37704a6                             .*
+Contents of section \.text:
+Contents of section \.sbss:
+Contents of section \.bss:
+Contents of section \.MMIX\.reg_contents:
diff --git a/ld/testsuite/ld-mmix/bpo-11.d b/ld/testsuite/ld-mmix/bpo-11.d
new file mode 100644
index 0000000..b863678
--- /dev/null
+++ b/ld/testsuite/ld-mmix/bpo-11.d
@@ -0,0 +1,39 @@
+#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+ 
+0+10 l    d  \.text	0+ 
+20+ l    d  \.sbss	0+ 
+2000000000000000 l    d  \.bss	0+ 
+0+7e8 l    d  \.MMIX\.reg_contents	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l       \.init	0+ _start
+0+14 g       \.text	0+ x
+0+10 g       \.text	0+ x2
+2000000000000000 g     O \*ABS\*	0+ __bss_start
+0+ g       \*ABS\*	0+ 
+2000000000000000 g     O \*ABS\*	0+ _edata
+2000000000000000 g     O \*ABS\*	0+ _end
+0+10 g     O \.text	0+ _start\.
+
+
+Contents of section \.init:
+ 0000 00000000 0000003d 00000000 0000003a  .*
+Contents of section \.text:
+ 0010 232dfe00 232dfd00                    .*
+Contents of section \.sbss:
+Contents of section \.bss:
+Contents of section \.MMIX\.reg_contents:
+ 07e8 00000000 0000107c 00000000 0000a420  .*
diff --git a/ld/testsuite/ld-mmix/bpo-12.d b/ld/testsuite/ld-mmix/bpo-12.d
new file mode 100644
index 0000000..2961e8b
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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.
diff --git a/ld/testsuite/ld-mmix/bpo-12m.d b/ld/testsuite/ld-mmix/bpo-12m.d
new file mode 100644
index 0000000..7d847fe
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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.
diff --git a/ld/testsuite/ld-mmix/bpo-13.d b/ld/testsuite/ld-mmix/bpo-13.d
new file mode 100644
index 0000000..78f7c7a
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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.
diff --git a/ld/testsuite/ld-mmix/bpo-13m.d b/ld/testsuite/ld-mmix/bpo-13m.d
new file mode 100644
index 0000000..8bd0bf6
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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.
diff --git a/ld/testsuite/ld-mmix/bpo-14.d b/ld/testsuite/ld-mmix/bpo-14.d
new file mode 100644
index 0000000..9023952
--- /dev/null
+++ b/ld/testsuite/ld-mmix/bpo-14.d
@@ -0,0 +1,33 @@
+#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+ 
+2000000000000000 l    d  \.data	0+ 
+2000000000000000 l    d  \.sbss	0+ 
+2000000000000000 l    d  \.bss	0+ 
+0+7f0 l    d  \.MMIX\.reg_contents	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ g       \.text	0+ _start
+0+8 g       \.text	0+ areg
+2000000000000000 g     O \*ABS\*	0+ __bss_start
+2000000000000000 g     O \*ABS\*	0+ _edata
+2000000000000000 g     O \*ABS\*	0+ _end
+0+ g     O \.text	0+ _start\.
+
+Contents of section \.text:
+ 0000 e3fd0001 234dfe00 fd040810           .*
+Contents of section \.data:
+Contents of section \.sbss:
+Contents of section \.MMIX\.reg_contents:
+ 07f0 00000000 00000003                    .*
diff --git a/ld/testsuite/ld-mmix/bpo-14m.d b/ld/testsuite/ld-mmix/bpo-14m.d
new file mode 100644
index 0000000..541b108
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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                    .*
diff --git a/ld/testsuite/ld-mmix/bpo-15.d b/ld/testsuite/ld-mmix/bpo-15.d
new file mode 100644
index 0000000..6845a87
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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.
diff --git a/ld/testsuite/ld-mmix/bpo-15m.d b/ld/testsuite/ld-mmix/bpo-15m.d
new file mode 100644
index 0000000..eacedf5
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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.
diff --git a/ld/testsuite/ld-mmix/bpo-16.d b/ld/testsuite/ld-mmix/bpo-16.d
new file mode 100644
index 0000000..2cf77c2
--- /dev/null
+++ b/ld/testsuite/ld-mmix/bpo-16.d
@@ -0,0 +1,34 @@
+#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+ 
+2000000000000000 l    d  \.data	0+ 
+2000000000000000 l    d  \.sbss	0+ 
+2000000000000000 l    d  \.bss	0+ 
+0+7f0 l    d  \.MMIX\.reg_contents	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ g       \.text	0+ _start
+0+c g       \.text	0+ areg
+2000000000000000 g     O \*ABS\*	0+ __bss_start
+2000000000000000 g     O \*ABS\*	0+ _edata
+2000000000000000 g     O \*ABS\*	0+ _end
+0+ g     O \.text	0+ _start\.
+
+Contents of section \.text:
+ 0000 e3fd0001 234dfe00 234dfe00 fd040810  .*
+Contents of section \.data:
+Contents of section \.sbss:
+Contents of section \.MMIX\.reg_contents:
+ 07f0 00000000 00000007                    .*
diff --git a/ld/testsuite/ld-mmix/bpo-16m.d b/ld/testsuite/ld-mmix/bpo-16m.d
new file mode 100644
index 0000000..f1fe336
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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                    .*
diff --git a/ld/testsuite/ld-mmix/bpo-17.d b/ld/testsuite/ld-mmix/bpo-17.d
new file mode 100644
index 0000000..effb972
--- /dev/null
+++ b/ld/testsuite/ld-mmix/bpo-17.d
@@ -0,0 +1,34 @@
+#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+ 
+2000000000000000 l    d  \.data	0+ 
+2000000000000000 l    d  \.sbss	0+ 
+2000000000000000 l    d  \.bss	0+ 
+0+7f0 l    d  \.MMIX\.reg_contents	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ g       \.text	0+ _start
+0+10 g       \.text	0+ areg
+2000000000000000 g     O \*ABS\*	0+ __bss_start
+2000000000000000 g     O \*ABS\*	0+ _edata
+2000000000000000 g     O \*ABS\*	0+ _end
+0+ g     O \.text	0+ _start\.
+
+Contents of section \.text:
+ 0000 e3fd0001 2336fe00 00000000 0000000c  .*
+ 0010 fd040810                             .*
+Contents of section \.data:
+Contents of section \.sbss:
+Contents of section \.MMIX\.reg_contents:
+ 07f0 00000000 00000008                    .*
diff --git a/ld/testsuite/ld-mmix/bpo-17m.d b/ld/testsuite/ld-mmix/bpo-17m.d
new file mode 100644
index 0000000..6458ebe
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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                    .*
diff --git a/ld/testsuite/ld-mmix/bpo-1m.d b/ld/testsuite/ld-mmix/bpo-1m.d
new file mode 100644
index 0000000..b2d0384
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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                    .*
diff --git a/ld/testsuite/ld-mmix/bpo-2.d b/ld/testsuite/ld-mmix/bpo-2.d
new file mode 100644
index 0000000..a0c362b
--- /dev/null
+++ b/ld/testsuite/ld-mmix/bpo-2.d
@@ -0,0 +1,34 @@
+#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+ 
+2000000000000000 l    d  \.data	0+ 
+2000000000000000 l    d  \.sbss	0+ 
+2000000000000000 l    d  \.bss	0+ 
+0+7e8 l    d  \.MMIX\.reg_contents	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+4 l       \.text	0+ x
+0+ g       \.text	0+ _start
+0+fe g       \*REG\*	0+ areg
+2000000000000000 g     O \*ABS\*	0+ __bss_start
+2000000000000000 g     O \*ABS\*	0+ _edata
+2000000000000000 g     O \*ABS\*	0+ _end
+0+ g     O \.text	0+ _start\.
+
+Contents of section \.text:
+ 0000 e3fd0001 232afd00                    .*
+Contents of section \.data:
+Contents of section \.sbss:
+Contents of section \.MMIX\.reg_contents:
+ 07e8 00000000 0000002e 00007048 860f3a38  .*
diff --git a/ld/testsuite/ld-mmix/bpo-2.s b/ld/testsuite/ld-mmix/bpo-2.s
new file mode 100644
index 0000000..02c7901
--- /dev/null
+++ b/ld/testsuite/ld-mmix/bpo-2.s
@@ -0,0 +1,2 @@
+	.global y
+y	LDA	$33,y+8
diff --git a/ld/testsuite/ld-mmix/bpo-2m.d b/ld/testsuite/ld-mmix/bpo-2m.d
new file mode 100644
index 0000000..7ddcfd2
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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  .*
+
diff --git a/ld/testsuite/ld-mmix/bpo-3.d b/ld/testsuite/ld-mmix/bpo-3.d
new file mode 100644
index 0000000..c8c3078
--- /dev/null
+++ b/ld/testsuite/ld-mmix/bpo-3.d
@@ -0,0 +1,34 @@
+#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+ 
+2000000000000000 l    d  \.data	0+ 
+2000000000000000 l    d  \.sbss	0+ 
+2000000000000000 l    d  \.bss	0+ 
+0+7f0 l    d  \.MMIX\.reg_contents	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+4 l       \.text	0+ x
+0+ g       \.text	0+ _start
+2000000000000000 g     O \*ABS\*	0+ __bss_start
+0+8 g       \.text	0+ y
+2000000000000000 g     O \*ABS\*	0+ _edata
+2000000000000000 g     O \*ABS\*	0+ _end
+0+ g     O \.text	0+ _start\.
+
+Contents of section \.text:
+ 0000 e3fd0001 232afe1e 2321fe00           .*
+Contents of section \.data:
+Contents of section \.sbss:
+Contents of section \.MMIX\.reg_contents:
+ 07f0 00000000 00000010                    .*
diff --git a/ld/testsuite/ld-mmix/bpo-3.s b/ld/testsuite/ld-mmix/bpo-3.s
new file mode 100644
index 0000000..b975a82
--- /dev/null
+++ b/ld/testsuite/ld-mmix/bpo-3.s
@@ -0,0 +1 @@
+ LDOU $121,_start+42+4+4+257
diff --git a/ld/testsuite/ld-mmix/bpo-3m.d b/ld/testsuite/ld-mmix/bpo-3m.d
new file mode 100644
index 0000000..c0f4707
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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                    .*
diff --git a/ld/testsuite/ld-mmix/bpo-4.d b/ld/testsuite/ld-mmix/bpo-4.d
new file mode 100644
index 0000000..1255202
--- /dev/null
+++ b/ld/testsuite/ld-mmix/bpo-4.d
@@ -0,0 +1,36 @@
+#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+ 
+2000000000000000 l    d  \.data	0+ 
+2000000000000000 l    d  \.sbss	0+ 
+2000000000000000 l    d  \.bss	0+ 
+0+7e0 l    d  \.MMIX\.reg_contents	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+8 l       \.text	0+ x
+0+ g       \.text	0+ _start
+0+fe g       \*REG\*	0+ areg
+2000000000000000 g     O \*ABS\*	0+ __bss_start
+2000000000000000 g     O \*ABS\*	0+ _edata
+2000000000000000 g     O \*ABS\*	0+ _end
+0+ g     O \.text	0+ _start\.
+
+Contents of section \.text:
+ 0000 e3fd0001 8f79fd00 232afc00           .*
+Contents of section \.data:
+Contents of section \.sbss:
+Contents of section \.MMIX\.reg_contents:
+ 07e0 00000000 00000032 00000000 00000133  .*
+ 07f0 00007048 860f3a38                    .*
diff --git a/ld/testsuite/ld-mmix/bpo-4.s b/ld/testsuite/ld-mmix/bpo-4.s
new file mode 100644
index 0000000..c5c21cf
--- /dev/null
+++ b/ld/testsuite/ld-mmix/bpo-4.s
@@ -0,0 +1,5 @@
+ .set i,0
+ .rept 223
+ LDA $11,_start+i*256
+ .set i,i+1
+ .endr
diff --git a/ld/testsuite/ld-mmix/bpo-4m.d b/ld/testsuite/ld-mmix/bpo-4m.d
new file mode 100644
index 0000000..2f3b59c
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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                    .*
diff --git a/ld/testsuite/ld-mmix/bpo-5.d b/ld/testsuite/ld-mmix/bpo-5.d
new file mode 100644
index 0000000..bc9ac38
--- /dev/null
+++ b/ld/testsuite/ld-mmix/bpo-5.d
@@ -0,0 +1,35 @@
+#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+ 
+2000000000000000 l    d  \.data	0+ 
+2000000000000000 l    d  \.sbss	0+ 
+2000000000000000 l    d  \.bss	0+ 
+0+7e8 l    d  \.MMIX\.reg_contents	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+4 l       \.text	0+ x
+0+ g       \.text	0+ _start
+2000000000000000 g     O \*ABS\*	0+ __bss_start
+0+c g       \.text	0+ y
+2000000000000000 g     O \*ABS\*	0+ _edata
+2000000000000000 g     O \*ABS\*	0+ _end
+0+ g     O \.text	0+ _start\.
+
+Contents of section \.text:
+ 0000 e3fd0001 232afd1a 8f79fe00 2321fd00  .*
+Contents of section \.data:
+Contents of section \.sbss:
+Contents of section \.MMIX\.reg_contents:
+ 07e8 00000000 00000014 00000000 00000133  .*
diff --git a/ld/testsuite/ld-mmix/bpo-5.s b/ld/testsuite/ld-mmix/bpo-5.s
new file mode 100644
index 0000000..c0fcfac
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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
diff --git a/ld/testsuite/ld-mmix/bpo-5m.d b/ld/testsuite/ld-mmix/bpo-5m.d
new file mode 100644
index 0000000..078d34e
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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  .*
diff --git a/ld/testsuite/ld-mmix/bpo-6.d b/ld/testsuite/ld-mmix/bpo-6.d
new file mode 100644
index 0000000..4edd4ab
--- /dev/null
+++ b/ld/testsuite/ld-mmix/bpo-6.d
@@ -0,0 +1,41 @@
+#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+ 
+2000000000000000 l    d  \.data	0+ 
+2000000000000000 l    d  \.sbss	0+ 
+2000000000000000 l    d  \.bss	0+ 
+0+100 l    d  \.MMIX\.reg_contents	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+df l       \*ABS\*	0+ i
+0+ g       \.text	0+ _start
+2000000000000000 g     O \*ABS\*	0+ __bss_start
+2000000000000000 g     O \*ABS\*	0+ _edata
+2000000000000000 g     O \*ABS\*	0+ _end
+0+ g     O \.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 \.data:
+Contents of section \.sbss:
+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                    .*
diff --git a/ld/testsuite/ld-mmix/bpo-6.s b/ld/testsuite/ld-mmix/bpo-6.s
new file mode 100644
index 0000000..a10e9a8
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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
diff --git a/ld/testsuite/ld-mmix/bpo-6m.d b/ld/testsuite/ld-mmix/bpo-6m.d
new file mode 100644
index 0000000..9d8e304
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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                    .*
diff --git a/ld/testsuite/ld-mmix/bpo-7.d b/ld/testsuite/ld-mmix/bpo-7.d
new file mode 100644
index 0000000..693a502
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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
diff --git a/ld/testsuite/ld-mmix/bpo-7.s b/ld/testsuite/ld-mmix/bpo-7.s
new file mode 100644
index 0000000..b920764
--- /dev/null
+++ b/ld/testsuite/ld-mmix/bpo-7.s
@@ -0,0 +1,2 @@
+# If the symbol is a register then this is an error.
+ LDA $77,areg-5
diff --git a/ld/testsuite/ld-mmix/bpo-7m.d b/ld/testsuite/ld-mmix/bpo-7m.d
new file mode 100644
index 0000000..21c4659
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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
diff --git a/ld/testsuite/ld-mmix/bpo-8.d b/ld/testsuite/ld-mmix/bpo-8.d
new file mode 100644
index 0000000..438b072
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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
diff --git a/ld/testsuite/ld-mmix/bpo-8.s b/ld/testsuite/ld-mmix/bpo-8.s
new file mode 100644
index 0000000..ebe410d
--- /dev/null
+++ b/ld/testsuite/ld-mmix/bpo-8.s
@@ -0,0 +1,3 @@
+# A BPO and an ordinary reloc in the same section.
+ LDA $54,areg-8
+ .quad areg-4
diff --git a/ld/testsuite/ld-mmix/bpo-8m.d b/ld/testsuite/ld-mmix/bpo-8m.d
new file mode 100644
index 0000000..9187672
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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
diff --git a/ld/testsuite/ld-mmix/bpo-9.d b/ld/testsuite/ld-mmix/bpo-9.d
new file mode 100644
index 0000000..00e2545
--- /dev/null
+++ b/ld/testsuite/ld-mmix/bpo-9.d
@@ -0,0 +1,36 @@
+#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+ 
+0+10 l    d  \.text	0+ 
+20+ l    d  \.sbss	0+ 
+2000000000000000 l    d  \.bss	0+ 
+0+7e8 l    d  \.MMIX\.reg_contents	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l    d  \*ABS\*	0+ 
+0+ l       \.init	0+ _start
+0+14 g       \.text	0+ x
+0+10 g       \.text	0+ x2
+2000000000000000 g     O \*ABS\*	0+ __bss_start
+2000000000000000 g     O \*ABS\*	0+ _edata
+2000000000000000 g     O \*ABS\*	0+ _end
+0+10 g     O \.text	0+ _start\.
+
+Contents of section \.init:
+ 0000 00000000 0000003d 00000000 0000003a  .*
+Contents of section \.text:
+ 0010 232dfe00 232dfd00                    .*
+Contents of section \.sbss:
+Contents of section \.bss:
+Contents of section \.MMIX\.reg_contents:
+ 07e8 00000000 0000107c 00000000 0000a420  .*
diff --git a/ld/testsuite/ld-mmix/bpo-9m.d b/ld/testsuite/ld-mmix/bpo-9m.d
new file mode 100644
index 0000000..fa3f97c
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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  .*
diff --git a/ld/testsuite/ld-mmix/start3.s b/ld/testsuite/ld-mmix/start3.s
new file mode 100644
index 0000000..1055870
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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
+
diff --git a/ld/testsuite/ld-mmix/start4.s b/ld/testsuite/ld-mmix/start4.s
new file mode 100644
index 0000000..4948d78
--- /dev/null
+++ b/ld/testsuite/ld-mmix/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
-- 
cgit v1.1