aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog24
-rw-r--r--ld/testsuite/ld-mips-elf/mips-abiflags-0.d9
-rw-r--r--ld/testsuite/ld-mips-elf/mips-abiflags-0.ld5
-rw-r--r--ld/testsuite/ld-mips-elf/mips-abiflags-0r.d6
-rw-r--r--ld/testsuite/ld-mips-elf/mips-abiflags-1.d6
-rw-r--r--ld/testsuite/ld-mips-elf/mips-abiflags-1.ld5
-rw-r--r--ld/testsuite/ld-mips-elf/mips-abiflags-1r.d6
-rw-r--r--ld/testsuite/ld-mips-elf/mips-abiflags-2.d6
-rw-r--r--ld/testsuite/ld-mips-elf/mips-abiflags-2r.d6
-rw-r--r--ld/testsuite/ld-mips-elf/mips-elf.exp17
-rw-r--r--ld/testsuite/ld-mips-elf/reginfo-0.d9
-rw-r--r--ld/testsuite/ld-mips-elf/reginfo-0.ld5
-rw-r--r--ld/testsuite/ld-mips-elf/reginfo-0r.d9
-rw-r--r--ld/testsuite/ld-mips-elf/reginfo-1.d9
-rw-r--r--ld/testsuite/ld-mips-elf/reginfo-1.ld5
-rw-r--r--ld/testsuite/ld-mips-elf/reginfo-1.s10
-rw-r--r--ld/testsuite/ld-mips-elf/reginfo-1r.d9
-rw-r--r--ld/testsuite/ld-mips-elf/reginfo-2.d9
-rw-r--r--ld/testsuite/ld-mips-elf/reginfo-2.s10
-rw-r--r--ld/testsuite/ld-mips-elf/reginfo-2r.d9
20 files changed, 174 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 4f5cd5f..f2cc005 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,29 @@
2018-02-19 Maciej W. Rozycki <macro@mips.com>
+ * testsuite/ld-mips-elf/reginfo-0.d: New test.
+ * testsuite/ld-mips-elf/reginfo-0r.d: New test.
+ * testsuite/ld-mips-elf/reginfo-1.d: New test.
+ * testsuite/ld-mips-elf/reginfo-1r.d: New test.
+ * testsuite/ld-mips-elf/reginfo-2.d: New test.
+ * testsuite/ld-mips-elf/reginfo-2r.d: New test.
+ * testsuite/ld-mips-elf/mips-abiflags-0.d: New test.
+ * testsuite/ld-mips-elf/mips-abiflags-0r.d: New test.
+ * testsuite/ld-mips-elf/mips-abiflags-1.d: New test.
+ * testsuite/ld-mips-elf/mips-abiflags-1r.d: New test.
+ * testsuite/ld-mips-elf/mips-abiflags-2.d: New test.
+ * testsuite/ld-mips-elf/mips-abiflags-2r.d: New test.
+ * testsuite/ld-mips-elf/reginfo-0.ld: New test linker script.
+ * testsuite/ld-mips-elf/reginfo-1.ld: New test linker script.
+ * testsuite/ld-mips-elf/mips-abiflags-0.ld: New test linker
+ script.
+ * testsuite/ld-mips-elf/mips-abiflags-1.ld: New test linker
+ script.
+ * testsuite/ld-mips-elf/reginfo-1.s: New test source.
+ * testsuite/ld-mips-elf/reginfo-2.s: New test source.
+ * testsuite/ld-mips-elf/mips-elf.exp: Run the new tests.
+
+2018-02-19 Maciej W. Rozycki <macro@mips.com>
+
* ldlang.c (insert_pad): Do not change output section's size if
SEC_FIXED_SIZE is set in the flags.
(size_input_section): Likewise.
diff --git a/ld/testsuite/ld-mips-elf/mips-abiflags-0.d b/ld/testsuite/ld-mips-elf/mips-abiflags-0.d
new file mode 100644
index 0000000..8d243f4
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/mips-abiflags-0.d
@@ -0,0 +1,9 @@
+#readelf: -x .MIPS.abiflags
+#name: MIPS .MIPS.abiflags section size 0
+#source: empty.s RUN_OBJCOPY
+#objcopy_objects: -R .MIPS.abiflags
+#ld: -T mips-abiflags-0.ld
+
+Hex dump of section '\.MIPS\.abiflags':
+ 0x00000000 ........ ........ ........ ........ .*
+ 0x00000010 ........ ........ .*
diff --git a/ld/testsuite/ld-mips-elf/mips-abiflags-0.ld b/ld/testsuite/ld-mips-elf/mips-abiflags-0.ld
new file mode 100644
index 0000000..419756e
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/mips-abiflags-0.ld
@@ -0,0 +1,5 @@
+SECTIONS
+{
+ .MIPS.abiflags : { foo = .; }
+ /DISCARD/ : { *(*) }
+}
diff --git a/ld/testsuite/ld-mips-elf/mips-abiflags-0r.d b/ld/testsuite/ld-mips-elf/mips-abiflags-0r.d
new file mode 100644
index 0000000..0118e07
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/mips-abiflags-0r.d
@@ -0,0 +1,6 @@
+#readelf: -x .MIPS.abiflags
+#name: MIPS .MIPS.abiflags section size 0 (relocatable)
+#source: empty.s RUN_OBJCOPY
+#objcopy_objects: -R .MIPS.abiflags
+#ld: -r -T mips-abiflags-0.ld
+#dump: mips-abiflags-0.d
diff --git a/ld/testsuite/ld-mips-elf/mips-abiflags-1.d b/ld/testsuite/ld-mips-elf/mips-abiflags-1.d
new file mode 100644
index 0000000..d28b3da
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/mips-abiflags-1.d
@@ -0,0 +1,6 @@
+#readelf: -x .MIPS.abiflags
+#name: MIPS .MIPS.abiflags section size 1
+#source: reginfo-1.s RUN_OBJCOPY
+#objcopy_objects: -R .MIPS.abiflags
+#ld: -T mips-abiflags-1.ld
+#dump: mips-abiflags-0.d
diff --git a/ld/testsuite/ld-mips-elf/mips-abiflags-1.ld b/ld/testsuite/ld-mips-elf/mips-abiflags-1.ld
new file mode 100644
index 0000000..7287a1e
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/mips-abiflags-1.ld
@@ -0,0 +1,5 @@
+SECTIONS
+{
+ .MIPS.abiflags : { *(.foo) }
+ /DISCARD/ : { *(*) }
+}
diff --git a/ld/testsuite/ld-mips-elf/mips-abiflags-1r.d b/ld/testsuite/ld-mips-elf/mips-abiflags-1r.d
new file mode 100644
index 0000000..821a5b2
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/mips-abiflags-1r.d
@@ -0,0 +1,6 @@
+#readelf: -x .MIPS.abiflags
+#name: MIPS .MIPS.abiflags section size 1 (relocatable)
+#source: reginfo-1.s RUN_OBJCOPY
+#objcopy_objects: -R .MIPS.abiflags
+#ld: -r -T mips-abiflags-1.ld
+#dump: mips-abiflags-0.d
diff --git a/ld/testsuite/ld-mips-elf/mips-abiflags-2.d b/ld/testsuite/ld-mips-elf/mips-abiflags-2.d
new file mode 100644
index 0000000..796a8c2
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/mips-abiflags-2.d
@@ -0,0 +1,6 @@
+#readelf: -x .MIPS.abiflags
+#name: MIPS .MIPS.abiflags section size 2
+#source: reginfo-2.s RUN_OBJCOPY
+#objcopy_objects: -R .MIPS.abiflags
+#ld: -T mips-abiflags-1.ld
+#dump: mips-abiflags-0.d
diff --git a/ld/testsuite/ld-mips-elf/mips-abiflags-2r.d b/ld/testsuite/ld-mips-elf/mips-abiflags-2r.d
new file mode 100644
index 0000000..596e0eb
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/mips-abiflags-2r.d
@@ -0,0 +1,6 @@
+#readelf: -x .MIPS.abiflags
+#name: MIPS .MIPS.abiflags section size 2 (relocatable)
+#source: reginfo-2.s RUN_OBJCOPY
+#objcopy_objects: -R .MIPS.abiflags
+#ld: -r -T mips-abiflags-1.ld
+#dump: mips-abiflags-0.d
diff --git a/ld/testsuite/ld-mips-elf/mips-elf.exp b/ld/testsuite/ld-mips-elf/mips-elf.exp
index 13dbbc6..144b007 100644
--- a/ld/testsuite/ld-mips-elf/mips-elf.exp
+++ b/ld/testsuite/ld-mips-elf/mips-elf.exp
@@ -57,6 +57,7 @@ set has_newabi [expr [istarget *-*-irix6*] \
|| [istarget mips*-sde-elf*] \
|| [istarget mips*-mti-elf*] \
|| [istarget mips*-img-elf*]]
+set has_elf32 [expr ![istarget *-*-openbsd*]]
set linux_gnu [expr [istarget mips*-*-linux*]]
set embedded_elf [expr [istarget mips*-*-elf]]
@@ -1237,3 +1238,19 @@ rename mips_old_prune_warnings prune_warnings
# Verify that we can link ELF input into the `binary' output format.
run_dump_test "binary"
+
+# Verify special section processing.
+if $has_elf32 {
+ run_dump_test "reginfo-0"
+ run_dump_test "reginfo-0r"
+ run_dump_test "reginfo-1"
+ run_dump_test "reginfo-1r"
+ run_dump_test "reginfo-2"
+ run_dump_test "reginfo-2r"
+}
+run_dump_test "mips-abiflags-0"
+run_dump_test "mips-abiflags-0r"
+run_dump_test "mips-abiflags-1"
+run_dump_test "mips-abiflags-1r"
+run_dump_test "mips-abiflags-2"
+run_dump_test "mips-abiflags-2r"
diff --git a/ld/testsuite/ld-mips-elf/reginfo-0.d b/ld/testsuite/ld-mips-elf/reginfo-0.d
new file mode 100644
index 0000000..ee731eb
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-0.d
@@ -0,0 +1,9 @@
+#readelf: -x .reginfo
+#name: MIPS .reginfo section size 0
+#source: empty.s RUN_OBJCOPY
+#objcopy_objects: -R .reginfo
+#ld: -T reginfo-0.ld
+
+Hex dump of section '\.reginfo':
+ 0x00000000 00000000 00000000 00000000 00000000 .*
+ 0x00000010 00000000 00000000 .*
diff --git a/ld/testsuite/ld-mips-elf/reginfo-0.ld b/ld/testsuite/ld-mips-elf/reginfo-0.ld
new file mode 100644
index 0000000..d37eb0a
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-0.ld
@@ -0,0 +1,5 @@
+SECTIONS
+{
+ .reginfo : { foo = .; }
+ /DISCARD/ : { *(*) }
+}
diff --git a/ld/testsuite/ld-mips-elf/reginfo-0r.d b/ld/testsuite/ld-mips-elf/reginfo-0r.d
new file mode 100644
index 0000000..f37ff80
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-0r.d
@@ -0,0 +1,9 @@
+#readelf: -x .reginfo
+#name: MIPS .reginfo section size 0 (relocatable)
+#source: empty.s RUN_OBJCOPY
+#objcopy_objects: -R .reginfo
+#ld: -r -T reginfo-0.ld
+
+Hex dump of section '\.reginfo':
+ 0x00000000 00000000 00000000 00000000 00000000 .*
+ 0x00000010 00000000 ........ .*
diff --git a/ld/testsuite/ld-mips-elf/reginfo-1.d b/ld/testsuite/ld-mips-elf/reginfo-1.d
new file mode 100644
index 0000000..dc98549
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-1.d
@@ -0,0 +1,9 @@
+#readelf: -x .reginfo
+#name: MIPS .reginfo section size 1
+#source: reginfo-1.s RUN_OBJCOPY
+#objcopy_objects: -R .reginfo
+#ld: -T reginfo-1.ld
+
+Hex dump of section '\.reginfo':
+ 0x00000000 01020304 05060708 090a0b0c 0d0e0f10 .*
+ 0x00000010 00000000 00000000 .*
diff --git a/ld/testsuite/ld-mips-elf/reginfo-1.ld b/ld/testsuite/ld-mips-elf/reginfo-1.ld
new file mode 100644
index 0000000..151d19a
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-1.ld
@@ -0,0 +1,5 @@
+SECTIONS
+{
+ .reginfo : { *(.foo) }
+ /DISCARD/ : { *(*) }
+}
diff --git a/ld/testsuite/ld-mips-elf/reginfo-1.s b/ld/testsuite/ld-mips-elf/reginfo-1.s
new file mode 100644
index 0000000..2aad272
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-1.s
@@ -0,0 +1,10 @@
+ .section .foo, "aw", @progbits
+ .globl foo
+ .type foo, @object
+foo:
+ .set .Li, 0
+ .rept 16
+ .set .Li, .Li + 1
+ .byte .Li
+ .endr
+ .size foo, . - foo
diff --git a/ld/testsuite/ld-mips-elf/reginfo-1r.d b/ld/testsuite/ld-mips-elf/reginfo-1r.d
new file mode 100644
index 0000000..ca262fd
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-1r.d
@@ -0,0 +1,9 @@
+#readelf: -x .reginfo
+#name: MIPS .reginfo section size 1 (relocatable)
+#source: reginfo-1.s RUN_OBJCOPY
+#objcopy_objects: -R .reginfo
+#ld: -r -T reginfo-1.ld
+
+Hex dump of section '\.reginfo':
+ 0x00000000 01020304 05060708 090a0b0c 0d0e0f10 .*
+ 0x00000010 00000000 ........ .*
diff --git a/ld/testsuite/ld-mips-elf/reginfo-2.d b/ld/testsuite/ld-mips-elf/reginfo-2.d
new file mode 100644
index 0000000..11b7360
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-2.d
@@ -0,0 +1,9 @@
+#readelf: -x .reginfo
+#name: MIPS .reginfo section size 2
+#source: reginfo-2.s RUN_OBJCOPY
+#objcopy_objects: -R .reginfo
+#ld: -T reginfo-1.ld
+
+Hex dump of section '\.reginfo':
+ 0x00000000 01020304 05060708 090a0b0c 0d0e0f10 .*
+ 0x00000010 11121314 00000000 .*
diff --git a/ld/testsuite/ld-mips-elf/reginfo-2.s b/ld/testsuite/ld-mips-elf/reginfo-2.s
new file mode 100644
index 0000000..fdc6e6a
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-2.s
@@ -0,0 +1,10 @@
+ .section .foo, "aw", @progbits
+ .globl foo
+ .type foo, @object
+foo:
+ .set .Li, 0
+ .rept 32
+ .set .Li, .Li + 1
+ .byte .Li
+ .endr
+ .size foo, . - foo
diff --git a/ld/testsuite/ld-mips-elf/reginfo-2r.d b/ld/testsuite/ld-mips-elf/reginfo-2r.d
new file mode 100644
index 0000000..f133337
--- /dev/null
+++ b/ld/testsuite/ld-mips-elf/reginfo-2r.d
@@ -0,0 +1,9 @@
+#readelf: -x .reginfo
+#name: MIPS .reginfo section size 2 (relocatable)
+#source: reginfo-2.s RUN_OBJCOPY
+#objcopy_objects: -R .reginfo
+#ld: -r -T reginfo-1.ld
+
+Hex dump of section '\.reginfo':
+ 0x00000000 01020304 05060708 090a0b0c 0d0e0f10 .*
+ 0x00000010 11121314 ........ .*