[committed 02/16] MIPS/LD: Include n64 `.interp' with INITIAL_READONLY_SECTIONS

Maciej W. Rozycki macro@orcam.me.uk
Fri Jul 28 05:06:38 GMT 2023


From: YunQiang Su <yunqiang.su@cipunited.com>

In ld/emulparams/elf64bmip-defs.sh there is no explicit handling of the 
`.interp' section, which causes it to be positioned in output at an odd 
place.

Let's include it with INITIAL_READONLY_SECTIONS, just like o32/n32 do, 
fixing a regression from commit 5a8e7be242f3 ("INITIAL_READONLY_SECTIONS 
in elf.sc"), where the handling of n64 was missed due to an unfortunate 
sequence of events where ld/emulparams/elf64bmip-defs.sh was only added 
with commit 94bb04b3c611 ("Use .reginfo rather than .MIPS.options in n32 
linker scripts") the day before.

Add test cases covering section ordering across the three ABIs.  This 
change also fixes ld/pr23658-2:

FAIL: Build pr23658-2

Co-Authored-By: Maciej W. Rozycki <macro@orcam.me.uk>

ld/ChangeLog:
	* emulparams/elf64bmip-defs.sh: Include `.interp' with
	INITIAL_READONLY_SECTIONS.
	* testsuite/ld-mips-elf/pie-n64.d: Adjust addresses.
	* testsuite/ld-mips-elf/sections-1-o32.rd: New test.
	* testsuite/ld-mips-elf/sections-1-o32t.rd: New test.
	* testsuite/ld-mips-elf/sections-1-n32.rd: New test.
	* testsuite/ld-mips-elf/sections-1-n32t.rd: New test.
	* testsuite/ld-mips-elf/sections-1-n32p.rd: New test.
	* testsuite/ld-mips-elf/sections-1-n64.rd: New test.
	* testsuite/ld-mips-elf/sections-1-n64t.rd: New test.
	* testsuite/ld-mips-elf/sections-2-o32.rd: New test.
	* testsuite/ld-mips-elf/sections-2-o32t.rd: New test.
	* testsuite/ld-mips-elf/sections-2-n32.rd: New test.
	* testsuite/ld-mips-elf/sections-2-n32t.rd: New test.
	* testsuite/ld-mips-elf/sections-2-n32p.rd: New test.
	* testsuite/ld-mips-elf/sections-2-n64.rd: New test.
	* testsuite/ld-mips-elf/sections-2-n64t.rd: New test.
	* testsuite/ld-mips-elf/sections.s: New test source.
	* testsuite/ld-mips-elf/mips-elf.exp: Run the new tests.
---
 ld/emulparams/elf64bmip-defs.sh             |    6 +++
 ld/testsuite/ld-mips-elf/mips-elf.exp       |   21 +++++++++++++
 ld/testsuite/ld-mips-elf/pie-n64.d          |   12 +++----
 ld/testsuite/ld-mips-elf/sections-1-n32.rd  |   36 ++++++++++++++++++++++
 ld/testsuite/ld-mips-elf/sections-1-n32p.rd |   36 ++++++++++++++++++++++
 ld/testsuite/ld-mips-elf/sections-1-n32t.rd |   36 ++++++++++++++++++++++
 ld/testsuite/ld-mips-elf/sections-1-n64.rd  |   36 ++++++++++++++++++++++
 ld/testsuite/ld-mips-elf/sections-1-n64t.rd |   36 ++++++++++++++++++++++
 ld/testsuite/ld-mips-elf/sections-1-o32.rd  |   36 ++++++++++++++++++++++
 ld/testsuite/ld-mips-elf/sections-1-o32t.rd |   36 ++++++++++++++++++++++
 ld/testsuite/ld-mips-elf/sections-2-n32.rd  |   33 +++++++++++++++++++++
 ld/testsuite/ld-mips-elf/sections-2-n32p.rd |   33 +++++++++++++++++++++
 ld/testsuite/ld-mips-elf/sections-2-n32t.rd |   33 +++++++++++++++++++++
 ld/testsuite/ld-mips-elf/sections-2-n64.rd  |   33 +++++++++++++++++++++
 ld/testsuite/ld-mips-elf/sections-2-n64t.rd |   33 +++++++++++++++++++++
 ld/testsuite/ld-mips-elf/sections-2-o32.rd  |   33 +++++++++++++++++++++
 ld/testsuite/ld-mips-elf/sections-2-o32t.rd |   33 +++++++++++++++++++++
 ld/testsuite/ld-mips-elf/sections.s         |   44 ++++++++++++++++++++++++++++
 18 files changed, 559 insertions(+), 7 deletions(-)

binutils-yunqiang-mips-ld-n64-interp.diff
Index: binutils-gdb/ld/emulparams/elf64bmip-defs.sh
===================================================================
--- binutils-gdb.orig/ld/emulparams/elf64bmip-defs.sh
+++ binutils-gdb/ld/emulparams/elf64bmip-defs.sh
@@ -1,6 +1,10 @@
 source_sh ${srcdir}/emulparams/elf32bmipn32-defs.sh
 COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)"
-INITIAL_READONLY_SECTIONS="
+INITIAL_READONLY_SECTIONS=
+if test -z "${CREATE_SHLIB}"; then
+  INITIAL_READONLY_SECTIONS=".interp       ${RELOCATING-0} : { *(.interp) }"
+fi
+INITIAL_READONLY_SECTIONS="${INITIAL_READONLY_SECTIONS}
   .MIPS.abiflags      ${RELOCATING-0} : { *(.MIPS.abiflags) }
   .MIPS.xhash      ${RELOCATING-0} : { *(.MIPS.xhash) }
   .MIPS.options : { *(.MIPS.options) }
Index: binutils-gdb/ld/testsuite/ld-mips-elf/mips-elf.exp
===================================================================
--- binutils-gdb.orig/ld/testsuite/ld-mips-elf/mips-elf.exp
+++ binutils-gdb/ld/testsuite/ld-mips-elf/mips-elf.exp
@@ -1669,3 +1669,24 @@ run_dump_test_n64 "global-local-symtab-s
 run_dump_test_o32 "global-local-symtab-final-o32"
 run_dump_test_n32 "global-local-symtab-final-n32"
 run_dump_test_n64 "global-local-symtab-final-n64"
+
+# Section ordering tests.
+foreach { abi } $abis {
+    set ps2 [expr \
+	({$abi} == {"n32"} && [istarget "mips64*el-ps2-elf*"]) ? {"p"} : {""}]
+    run_ld_link_tests [list \
+	[list \
+	    "MIPS section ordering test 1 ($abi)" \
+	    "$abi_ldflags($abi) -r" "" \
+	    "$abi_asflags($abi) -mpdr" \
+	    [list sections.s] \
+	    [list "readelf -WS sections-1-${abi}${tmips}${ps2}.rd"] \
+	    "sections-1-${abi}.o"] \
+	[list \
+	    "MIPS section ordering test 2 ($abi)" \
+	    "$abi_ldflags($abi) -e 0" "" \
+	    "$abi_asflags($abi) -mpdr" \
+	    [list sections.s] \
+	    [list "readelf -WS sections-2-${abi}${tmips}${ps2}.rd"] \
+	    "sections-2-${abi}"]]
+}
Index: binutils-gdb/ld/testsuite/ld-mips-elf/pie-n64.d
===================================================================
--- binutils-gdb.orig/ld/testsuite/ld-mips-elf/pie-n64.d
+++ binutils-gdb/ld/testsuite/ld-mips-elf/pie-n64.d
@@ -2,16 +2,16 @@
 #ld: -pie
 #readelf: -d
 
-Dynamic section at offset 0x208 contains 17 entries:
+Dynamic section at offset 0x220 contains 17 entries:
   Tag * Type * Name/Value
- 0x0+00000004 \(HASH\) * 0x368
- 0x0+00000005 \(STRTAB\) * 0x3c8
- 0x0+00000006 \(SYMTAB\) * 0x380
+ 0x0+00000004 \(HASH\) * 0x380
+ 0x0+00000005 \(STRTAB\) * 0x3e0
+ 0x0+00000006 \(SYMTAB\) * 0x398
  0x0+0000000a \(STRSZ\) * 28 \(bytes\)
  0x0+0000000b \(SYMENT\) * 24 \(bytes\)
- 0x0+70000035 \(MIPS_RLD_MAP_REL\) * 0x101c8
+ 0x0+70000035 \(MIPS_RLD_MAP_REL\) * 0x101a0
  0x0+00000015 \(DEBUG\) * 0x0
- 0x0+00000003 \(PLTGOT\) * 0x10430
+ 0x0+00000003 \(PLTGOT\) * 0x10420
  0x0+70000001 \(MIPS_RLD_VERSION\) * 1
  0x0+70000005 \(MIPS_FLAGS\) * NOTPOT
  0x0+70000006 \(MIPS_BASE_ADDRESS\) * 0x0
Index: binutils-gdb/ld/testsuite/ld-mips-elf/sections-1-n32.rd
===================================================================
--- /dev/null
+++ binutils-gdb/ld/testsuite/ld-mips-elf/sections-1-n32.rd
@@ -0,0 +1,36 @@
+There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
+
+Section Headers:
+  \[Nr\] Name +Type .*
+  \[..\]  +NULL .*
+  \[..\] \.interp +PROGBITS .*
+  \[..\] \.MIPS\.abiflags +MIPS_ABIFLAGS .*
+  \[..\] \.MIPS\.xhash +MIPS_XHASH .*
+  \[..\] \.reginfo +MIPS_REGINFO .*
+  \[..\] \.text +PROGBITS .*
+  \[..\] \.data +PROGBITS .*
+  \[..\] \.rodata +PROGBITS .*
+  \[..\] \.got\.plt +PROGBITS .*
+  \[..\] \.got +PROGBITS .*
+  \[..\] \.sdata +PROGBITS .*
+  \[..\] \.lit8 +PROGBITS .*
+  \[..\] \.lit4 +PROGBITS .*
+  \[..\] \.sbss +NOBITS .*
+  \[..\] \.bss +NOBITS .*
+  \[..\] \.pdr +PROGBITS .*
+  \[..\] \.gcc_compiled_long32 +PROGBITS .*
+  \[..\] \.gcc_compiled_long64 +PROGBITS .*
+  \[..\] \.gptab\.sbss +MIPS_GPTAB .*
+  \[..\] \.gptab\.sdata +MIPS_GPTAB .*
+  \[..\] \.mdebug\.abi32 +PROGBITS .*
+  \[..\] \.mdebug\.abi64 +PROGBITS .*
+  \[..\] \.mdebug\.abiN32 +PROGBITS .*
+  \[..\] \.mdebug\.abiO64 +PROGBITS .*
+  \[..\] \.mdebug\.eabi32 +PROGBITS .*
+  \[..\] \.mdebug\.eabi64 +PROGBITS .*
+  \[..\] \.gnu\.attributes +GNU_ATTRIBUTES .*
+  \[..\] \.symtab +SYMTAB .*
+  \[..\] \.strtab +STRTAB .*
+  \[..\] \.shstrtab +STRTAB .*
+Key to Flags:
+#pass
Index: binutils-gdb/ld/testsuite/ld-mips-elf/sections-1-n32p.rd
===================================================================
--- /dev/null
+++ binutils-gdb/ld/testsuite/ld-mips-elf/sections-1-n32p.rd
@@ -0,0 +1,36 @@
+There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
+
+Section Headers:
+  \[Nr\] Name +Type .*
+  \[..\]  +NULL .*
+  \[..\] \.interp +PROGBITS .*
+  \[..\] \.MIPS\.abiflags +MIPS_ABIFLAGS .*
+  \[..\] \.MIPS\.xhash +MIPS_XHASH .*
+  \[..\] \.reginfo +MIPS_REGINFO .*
+  \[..\] \.text +PROGBITS .*
+  \[..\] \.rodata +PROGBITS .*
+  \[..\] \.data +PROGBITS .*
+  \[..\] \.got\.plt +PROGBITS .*
+  \[..\] \.got +PROGBITS .*
+  \[..\] \.sdata +PROGBITS .*
+  \[..\] \.lit8 +PROGBITS .*
+  \[..\] \.lit4 +PROGBITS .*
+  \[..\] \.sbss +NOBITS .*
+  \[..\] \.bss +NOBITS .*
+  \[..\] \.pdr +PROGBITS .*
+  \[..\] \.gcc_compiled_long32 +PROGBITS .*
+  \[..\] \.gcc_compiled_long64 +PROGBITS .*
+  \[..\] \.mdebug\.abi32 +PROGBITS .*
+  \[..\] \.mdebug\.abi64 +PROGBITS .*
+  \[..\] \.mdebug\.abiN32 +PROGBITS .*
+  \[..\] \.mdebug\.abiO64 +PROGBITS .*
+  \[..\] \.mdebug\.eabi32 +PROGBITS .*
+  \[..\] \.mdebug\.eabi64 +PROGBITS .*
+  \[..\] \.gnu\.attributes +GNU_ATTRIBUTES .*
+  \[..\] \.gptab\.sdata +MIPS_GPTAB .*
+  \[..\] \.gptab\.sbss +MIPS_GPTAB .*
+  \[..\] \.symtab +SYMTAB .*
+  \[..\] \.strtab +STRTAB .*
+  \[..\] \.shstrtab +STRTAB .*
+Key to Flags:
+#pass
Index: binutils-gdb/ld/testsuite/ld-mips-elf/sections-1-n32t.rd
===================================================================
--- /dev/null
+++ binutils-gdb/ld/testsuite/ld-mips-elf/sections-1-n32t.rd
@@ -0,0 +1,36 @@
+There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
+
+Section Headers:
+  \[Nr\] Name +Type .*
+  \[..\]  +NULL .*
+  \[..\] \.interp +PROGBITS .*
+  \[..\] \.MIPS\.abiflags +MIPS_ABIFLAGS .*
+  \[..\] \.MIPS\.xhash +MIPS_XHASH .*
+  \[..\] \.reginfo +MIPS_REGINFO .*
+  \[..\] \.text +PROGBITS .*
+  \[..\] \.rodata +PROGBITS .*
+  \[..\] \.data +PROGBITS .*
+  \[..\] \.got\.plt +PROGBITS .*
+  \[..\] \.got +PROGBITS .*
+  \[..\] \.sdata +PROGBITS .*
+  \[..\] \.lit8 +PROGBITS .*
+  \[..\] \.lit4 +PROGBITS .*
+  \[..\] \.sbss +NOBITS .*
+  \[..\] \.bss +NOBITS .*
+  \[..\] \.pdr +PROGBITS .*
+  \[..\] \.gcc_compiled_long32 +PROGBITS .*
+  \[..\] \.gcc_compiled_long64 +PROGBITS .*
+  \[..\] \.mdebug\.abi32 +PROGBITS .*
+  \[..\] \.mdebug\.abi64 +PROGBITS .*
+  \[..\] \.mdebug\.abiN32 +PROGBITS .*
+  \[..\] \.mdebug\.abiO64 +PROGBITS .*
+  \[..\] \.mdebug\.eabi32 +PROGBITS .*
+  \[..\] \.mdebug\.eabi64 +PROGBITS .*
+  \[..\] \.gnu\.attributes +GNU_ATTRIBUTES .*
+  \[..\] \.gptab\.sdata +MIPS_GPTAB .*
+  \[..\] \.gptab\.sbss +MIPS_GPTAB .*
+  \[..\] \.symtab +SYMTAB .*
+  \[..\] \.strtab +STRTAB .*
+  \[..\] \.shstrtab +STRTAB .*
+Key to Flags:
+#pass
Index: binutils-gdb/ld/testsuite/ld-mips-elf/sections-1-n64.rd
===================================================================
--- /dev/null
+++ binutils-gdb/ld/testsuite/ld-mips-elf/sections-1-n64.rd
@@ -0,0 +1,36 @@
+There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
+
+Section Headers:
+  \[Nr\] Name +Type .*
+  \[..\]  +NULL .*
+  \[..\] \.interp +PROGBITS .*
+  \[..\] \.MIPS\.abiflags +MIPS_ABIFLAGS .*
+  \[..\] \.MIPS\.xhash +MIPS_XHASH .*
+  \[..\] \.MIPS\.options +MIPS_OPTIONS .*
+  \[..\] \.text +PROGBITS .*
+  \[..\] \.data +PROGBITS .*
+  \[..\] \.rodata +PROGBITS .*
+  \[..\] \.got\.plt +PROGBITS .*
+  \[..\] \.got +PROGBITS .*
+  \[..\] \.sdata +PROGBITS .*
+  \[..\] \.lit8 +PROGBITS .*
+  \[..\] \.lit4 +PROGBITS .*
+  \[..\] \.sbss +NOBITS .*
+  \[..\] \.bss +NOBITS .*
+  \[..\] \.pdr +PROGBITS .*
+  \[..\] \.gcc_compiled_long32 +PROGBITS .*
+  \[..\] \.gcc_compiled_long64 +PROGBITS .*
+  \[..\] \.gptab\.sbss +MIPS_GPTAB .*
+  \[..\] \.gptab\.sdata +MIPS_GPTAB .*
+  \[..\] \.mdebug\.abi32 +PROGBITS .*
+  \[..\] \.mdebug\.abi64 +PROGBITS .*
+  \[..\] \.mdebug\.abiN32 +PROGBITS .*
+  \[..\] \.mdebug\.abiO64 +PROGBITS .*
+  \[..\] \.mdebug\.eabi32 +PROGBITS .*
+  \[..\] \.mdebug\.eabi64 +PROGBITS .*
+  \[..\] \.gnu\.attributes +GNU_ATTRIBUTES .*
+  \[..\] \.symtab +SYMTAB .*
+  \[..\] \.strtab +STRTAB .*
+  \[..\] \.shstrtab +STRTAB .*
+Key to Flags:
+#pass
Index: binutils-gdb/ld/testsuite/ld-mips-elf/sections-1-n64t.rd
===================================================================
--- /dev/null
+++ binutils-gdb/ld/testsuite/ld-mips-elf/sections-1-n64t.rd
@@ -0,0 +1,36 @@
+There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
+
+Section Headers:
+  \[Nr\] Name +Type .*
+  \[..\]  +NULL .*
+  \[..\] \.interp +PROGBITS .*
+  \[..\] \.MIPS\.abiflags +MIPS_ABIFLAGS .*
+  \[..\] \.MIPS\.xhash +MIPS_XHASH .*
+  \[..\] \.MIPS\.options +MIPS_OPTIONS .*
+  \[..\] \.text +PROGBITS .*
+  \[..\] \.rodata +PROGBITS .*
+  \[..\] \.data +PROGBITS .*
+  \[..\] \.got\.plt +PROGBITS .*
+  \[..\] \.got +PROGBITS .*
+  \[..\] \.sdata +PROGBITS .*
+  \[..\] \.lit8 +PROGBITS .*
+  \[..\] \.lit4 +PROGBITS .*
+  \[..\] \.sbss +NOBITS .*
+  \[..\] \.bss +NOBITS .*
+  \[..\] \.pdr +PROGBITS .*
+  \[..\] \.gcc_compiled_long32 +PROGBITS .*
+  \[..\] \.gcc_compiled_long64 +PROGBITS .*
+  \[..\] \.mdebug\.abi32 +PROGBITS .*
+  \[..\] \.mdebug\.abi64 +PROGBITS .*
+  \[..\] \.mdebug\.abiN32 +PROGBITS .*
+  \[..\] \.mdebug\.abiO64 +PROGBITS .*
+  \[..\] \.mdebug\.eabi32 +PROGBITS .*
+  \[..\] \.mdebug\.eabi64 +PROGBITS .*
+  \[..\] \.gnu\.attributes +GNU_ATTRIBUTES .*
+  \[..\] \.gptab\.sdata +MIPS_GPTAB .*
+  \[..\] \.gptab\.sbss +MIPS_GPTAB .*
+  \[..\] \.symtab +SYMTAB .*
+  \[..\] \.strtab +STRTAB .*
+  \[..\] \.shstrtab +STRTAB .*
+Key to Flags:
+#pass
Index: binutils-gdb/ld/testsuite/ld-mips-elf/sections-1-o32.rd
===================================================================
--- /dev/null
+++ binutils-gdb/ld/testsuite/ld-mips-elf/sections-1-o32.rd
@@ -0,0 +1,36 @@
+There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
+
+Section Headers:
+  \[Nr\] Name +Type .*
+  \[..\]  +NULL .*
+  \[..\] \.interp +PROGBITS .*
+  \[..\] \.MIPS\.abiflags +MIPS_ABIFLAGS .*
+  \[..\] \.reginfo +MIPS_REGINFO .*
+  \[..\] \.MIPS\.xhash +MIPS_XHASH .*
+  \[..\] \.text +PROGBITS .*
+  \[..\] \.rodata +PROGBITS .*
+  \[..\] \.data +PROGBITS .*
+  \[..\] \.got\.plt +PROGBITS .*
+  \[..\] \.got +PROGBITS .*
+  \[..\] \.sdata +PROGBITS .*
+  \[..\] \.lit8 +PROGBITS .*
+  \[..\] \.lit4 +PROGBITS .*
+  \[..\] \.sbss +NOBITS .*
+  \[..\] \.bss +NOBITS .*
+  \[..\] \.pdr +PROGBITS .*
+  \[..\] \.gnu\.attributes +GNU_ATTRIBUTES .*
+  \[..\] \.gptab\.sdata +MIPS_GPTAB .*
+  \[..\] \.gptab\.sbss +MIPS_GPTAB .*
+  \[..\] \.mdebug\.abi32 +PROGBITS .*
+  \[..\] \.mdebug\.abiN32 +PROGBITS .*
+  \[..\] \.mdebug\.abi64 +PROGBITS .*
+  \[..\] \.mdebug\.abiO64 +PROGBITS .*
+  \[..\] \.mdebug\.eabi32 +PROGBITS .*
+  \[..\] \.mdebug\.eabi64 +PROGBITS .*
+  \[..\] \.gcc_compiled_long32 +PROGBITS .*
+  \[..\] \.gcc_compiled_long64 +PROGBITS .*
+  \[..\] \.symtab +SYMTAB .*
+  \[..\] \.strtab +STRTAB .*
+  \[..\] \.shstrtab +STRTAB .*
+Key to Flags:
+#pass
Index: binutils-gdb/ld/testsuite/ld-mips-elf/sections-1-o32t.rd
===================================================================
--- /dev/null
+++ binutils-gdb/ld/testsuite/ld-mips-elf/sections-1-o32t.rd
@@ -0,0 +1,36 @@
+There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
+
+Section Headers:
+  \[Nr\] Name +Type .*
+  \[..\]  +NULL .*
+  \[..\] \.interp +PROGBITS .*
+  \[..\] \.MIPS\.abiflags +MIPS_ABIFLAGS .*
+  \[..\] \.reginfo +MIPS_REGINFO .*
+  \[..\] \.MIPS\.xhash +MIPS_XHASH .*
+  \[..\] \.text +PROGBITS .*
+  \[..\] \.rodata +PROGBITS .*
+  \[..\] \.got\.plt +PROGBITS .*
+  \[..\] \.data +PROGBITS .*
+  \[..\] \.got +PROGBITS .*
+  \[..\] \.sdata +PROGBITS .*
+  \[..\] \.lit8 +PROGBITS .*
+  \[..\] \.lit4 +PROGBITS .*
+  \[..\] \.sbss +NOBITS .*
+  \[..\] \.bss +NOBITS .*
+  \[..\] \.pdr +PROGBITS .*
+  \[..\] \.gnu\.attributes +GNU_ATTRIBUTES .*
+  \[..\] \.gptab\.sdata +MIPS_GPTAB .*
+  \[..\] \.gptab\.sbss +MIPS_GPTAB .*
+  \[..\] \.mdebug\.abi32 +PROGBITS .*
+  \[..\] \.mdebug\.abiN32 +PROGBITS .*
+  \[..\] \.mdebug\.abi64 +PROGBITS .*
+  \[..\] \.mdebug\.abiO64 +PROGBITS .*
+  \[..\] \.mdebug\.eabi32 +PROGBITS .*
+  \[..\] \.mdebug\.eabi64 +PROGBITS .*
+  \[..\] \.gcc_compiled_long32 +PROGBITS .*
+  \[..\] \.gcc_compiled_long64 +PROGBITS .*
+  \[..\] \.symtab +SYMTAB .*
+  \[..\] \.strtab +STRTAB .*
+  \[..\] \.shstrtab +STRTAB .*
+Key to Flags:
+#pass
Index: binutils-gdb/ld/testsuite/ld-mips-elf/sections-2-n32.rd
===================================================================
--- /dev/null
+++ binutils-gdb/ld/testsuite/ld-mips-elf/sections-2-n32.rd
@@ -0,0 +1,33 @@
+There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
+
+Section Headers:
+  \[Nr\] Name +Type .*
+  \[..\]  +NULL .*
+  \[..\] \.interp +PROGBITS .*
+  \[..\] \.MIPS\.abiflags +MIPS_ABIFLAGS .*
+  \[..\] \.MIPS\.xhash +MIPS_XHASH .*
+  \[..\] \.reginfo +MIPS_REGINFO .*
+  \[..\] \.text +PROGBITS .*
+  \[..\] \.data +PROGBITS .*
+  \[..\] \.rodata +PROGBITS .*
+  \[..\] \.got\.plt +PROGBITS .*
+  \[..\] \.got +PROGBITS .*
+  \[..\] \.sdata +PROGBITS .*
+  \[..\] \.lit8 +PROGBITS .*
+  \[..\] \.lit4 +PROGBITS .*
+  \[..\] \.sbss +NOBITS .*
+  \[..\] \.bss +NOBITS .*
+  \[..\] \.gcc_compiled_long32 +PROGBITS .*
+  \[..\] \.gcc_compiled_long64 +PROGBITS .*
+  \[..\] \.mdebug\.abi32 +PROGBITS .*
+  \[..\] \.mdebug\.abi64 +PROGBITS .*
+  \[..\] \.mdebug\.abiN32 +PROGBITS .*
+  \[..\] \.mdebug\.abiO64 +PROGBITS .*
+  \[..\] \.mdebug\.eabi32 +PROGBITS .*
+  \[..\] \.mdebug\.eabi64 +PROGBITS .*
+  \[..\] \.gnu\.attributes +GNU_ATTRIBUTES .*
+  \[..\] \.symtab +SYMTAB .*
+  \[..\] \.strtab +STRTAB .*
+  \[..\] \.shstrtab +STRTAB .*
+Key to Flags:
+#pass
Index: binutils-gdb/ld/testsuite/ld-mips-elf/sections-2-n32p.rd
===================================================================
--- /dev/null
+++ binutils-gdb/ld/testsuite/ld-mips-elf/sections-2-n32p.rd
@@ -0,0 +1,33 @@
+There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
+
+Section Headers:
+  \[Nr\] Name +Type .*
+  \[..\]  +NULL .*
+  \[..\] \.interp +PROGBITS .*
+  \[..\] \.MIPS\.abiflags +MIPS_ABIFLAGS .*
+  \[..\] \.MIPS\.xhash +MIPS_XHASH .*
+  \[..\] \.reginfo +MIPS_REGINFO .*
+  \[..\] \.text +PROGBITS .*
+  \[..\] \.rodata +PROGBITS .*
+  \[..\] \.data +PROGBITS .*
+  \[..\] \.got\.plt +PROGBITS .*
+  \[..\] \.got +PROGBITS .*
+  \[..\] \.sdata +PROGBITS .*
+  \[..\] \.lit8 +PROGBITS .*
+  \[..\] \.lit4 +PROGBITS .*
+  \[..\] \.sbss +NOBITS .*
+  \[..\] \.bss +NOBITS .*
+  \[..\] \.gcc_compiled_long32 +PROGBITS .*
+  \[..\] \.gcc_compiled_long64 +PROGBITS .*
+  \[..\] \.mdebug\.abi32 +PROGBITS .*
+  \[..\] \.mdebug\.abi64 +PROGBITS .*
+  \[..\] \.mdebug\.abiN32 +PROGBITS .*
+  \[..\] \.mdebug\.abiO64 +PROGBITS .*
+  \[..\] \.mdebug\.eabi32 +PROGBITS .*
+  \[..\] \.mdebug\.eabi64 +PROGBITS .*
+  \[..\] \.gnu\.attributes +GNU_ATTRIBUTES .*
+  \[..\] \.symtab +SYMTAB .*
+  \[..\] \.strtab +STRTAB .*
+  \[..\] \.shstrtab +STRTAB .*
+Key to Flags:
+#pass
Index: binutils-gdb/ld/testsuite/ld-mips-elf/sections-2-n32t.rd
===================================================================
--- /dev/null
+++ binutils-gdb/ld/testsuite/ld-mips-elf/sections-2-n32t.rd
@@ -0,0 +1,33 @@
+There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
+
+Section Headers:
+  \[Nr\] Name +Type .*
+  \[..\]  +NULL .*
+  \[..\] \.interp +PROGBITS .*
+  \[..\] \.MIPS\.abiflags +MIPS_ABIFLAGS .*
+  \[..\] \.MIPS\.xhash +MIPS_XHASH .*
+  \[..\] \.reginfo +MIPS_REGINFO .*
+  \[..\] \.text +PROGBITS .*
+  \[..\] \.rodata +PROGBITS .*
+  \[..\] \.data +PROGBITS .*
+  \[..\] \.got\.plt +PROGBITS .*
+  \[..\] \.got +PROGBITS .*
+  \[..\] \.sdata +PROGBITS .*
+  \[..\] \.lit8 +PROGBITS .*
+  \[..\] \.lit4 +PROGBITS .*
+  \[..\] \.sbss +NOBITS .*
+  \[..\] \.bss +NOBITS .*
+  \[..\] \.gcc_compiled_long32 +PROGBITS .*
+  \[..\] \.gcc_compiled_long64 +PROGBITS .*
+  \[..\] \.mdebug\.abi32 +PROGBITS .*
+  \[..\] \.mdebug\.abi64 +PROGBITS .*
+  \[..\] \.mdebug\.abiN32 +PROGBITS .*
+  \[..\] \.mdebug\.abiO64 +PROGBITS .*
+  \[..\] \.mdebug\.eabi32 +PROGBITS .*
+  \[..\] \.mdebug\.eabi64 +PROGBITS .*
+  \[..\] \.gnu\.attributes +GNU_ATTRIBUTES .*
+  \[..\] \.symtab +SYMTAB .*
+  \[..\] \.strtab +STRTAB .*
+  \[..\] \.shstrtab +STRTAB .*
+Key to Flags:
+#pass
Index: binutils-gdb/ld/testsuite/ld-mips-elf/sections-2-n64.rd
===================================================================
--- /dev/null
+++ binutils-gdb/ld/testsuite/ld-mips-elf/sections-2-n64.rd
@@ -0,0 +1,33 @@
+There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
+
+Section Headers:
+  \[Nr\] Name +Type .*
+  \[..\]  +NULL .*
+  \[..\] \.interp +PROGBITS .*
+  \[..\] \.MIPS\.abiflags +MIPS_ABIFLAGS .*
+  \[..\] \.MIPS\.xhash +MIPS_XHASH .*
+  \[..\] \.MIPS\.options +MIPS_OPTIONS .*
+  \[..\] \.text +PROGBITS .*
+  \[..\] \.data +PROGBITS .*
+  \[..\] \.rodata +PROGBITS .*
+  \[..\] \.got\.plt +PROGBITS .*
+  \[..\] \.got +PROGBITS .*
+  \[..\] \.sdata +PROGBITS .*
+  \[..\] \.lit8 +PROGBITS .*
+  \[..\] \.lit4 +PROGBITS .*
+  \[..\] \.sbss +NOBITS .*
+  \[..\] \.bss +NOBITS .*
+  \[..\] \.gcc_compiled_long32 +PROGBITS .*
+  \[..\] \.gcc_compiled_long64 +PROGBITS .*
+  \[..\] \.mdebug\.abi32 +PROGBITS .*
+  \[..\] \.mdebug\.abi64 +PROGBITS .*
+  \[..\] \.mdebug\.abiN32 +PROGBITS .*
+  \[..\] \.mdebug\.abiO64 +PROGBITS .*
+  \[..\] \.mdebug\.eabi32 +PROGBITS .*
+  \[..\] \.mdebug\.eabi64 +PROGBITS .*
+  \[..\] \.gnu\.attributes +GNU_ATTRIBUTES .*
+  \[..\] \.symtab +SYMTAB .*
+  \[..\] \.strtab +STRTAB .*
+  \[..\] \.shstrtab +STRTAB .*
+Key to Flags:
+#pass
Index: binutils-gdb/ld/testsuite/ld-mips-elf/sections-2-n64t.rd
===================================================================
--- /dev/null
+++ binutils-gdb/ld/testsuite/ld-mips-elf/sections-2-n64t.rd
@@ -0,0 +1,33 @@
+There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
+
+Section Headers:
+  \[Nr\] Name +Type .*
+  \[..\]  +NULL .*
+  \[..\] \.interp +PROGBITS .*
+  \[..\] \.MIPS\.abiflags +MIPS_ABIFLAGS .*
+  \[..\] \.MIPS\.xhash +MIPS_XHASH .*
+  \[..\] \.MIPS\.options +MIPS_OPTIONS .*
+  \[..\] \.text +PROGBITS .*
+  \[..\] \.rodata +PROGBITS .*
+  \[..\] \.data +PROGBITS .*
+  \[..\] \.got\.plt +PROGBITS .*
+  \[..\] \.got +PROGBITS .*
+  \[..\] \.sdata +PROGBITS .*
+  \[..\] \.lit8 +PROGBITS .*
+  \[..\] \.lit4 +PROGBITS .*
+  \[..\] \.sbss +NOBITS .*
+  \[..\] \.bss +NOBITS .*
+  \[..\] \.gcc_compiled_long32 +PROGBITS .*
+  \[..\] \.gcc_compiled_long64 +PROGBITS .*
+  \[..\] \.mdebug\.abi32 +PROGBITS .*
+  \[..\] \.mdebug\.abi64 +PROGBITS .*
+  \[..\] \.mdebug\.abiN32 +PROGBITS .*
+  \[..\] \.mdebug\.abiO64 +PROGBITS .*
+  \[..\] \.mdebug\.eabi32 +PROGBITS .*
+  \[..\] \.mdebug\.eabi64 +PROGBITS .*
+  \[..\] \.gnu\.attributes +GNU_ATTRIBUTES .*
+  \[..\] \.symtab +SYMTAB .*
+  \[..\] \.strtab +STRTAB .*
+  \[..\] \.shstrtab +STRTAB .*
+Key to Flags:
+#pass
Index: binutils-gdb/ld/testsuite/ld-mips-elf/sections-2-o32.rd
===================================================================
--- /dev/null
+++ binutils-gdb/ld/testsuite/ld-mips-elf/sections-2-o32.rd
@@ -0,0 +1,33 @@
+There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
+
+Section Headers:
+  \[Nr\] Name +Type .*
+  \[..\]  +NULL .*
+  \[..\] \.interp +PROGBITS .*
+  \[..\] \.MIPS\.abiflags +MIPS_ABIFLAGS .*
+  \[..\] \.reginfo +MIPS_REGINFO .*
+  \[..\] \.MIPS\.xhash +MIPS_XHASH .*
+  \[..\] \.text +PROGBITS .*
+  \[..\] \.rodata +PROGBITS .*
+  \[..\] \.data +PROGBITS .*
+  \[..\] \.got\.plt +PROGBITS .*
+  \[..\] \.got +PROGBITS .*
+  \[..\] \.sdata +PROGBITS .*
+  \[..\] \.lit8 +PROGBITS .*
+  \[..\] \.lit4 +PROGBITS .*
+  \[..\] \.sbss +NOBITS .*
+  \[..\] \.bss +NOBITS .*
+  \[..\] \.gnu\.attributes +GNU_ATTRIBUTES .*
+  \[..\] \.mdebug\.abi32 +PROGBITS .*
+  \[..\] \.mdebug\.abiN32 +PROGBITS .*
+  \[..\] \.mdebug\.abi64 +PROGBITS .*
+  \[..\] \.mdebug\.abiO64 +PROGBITS .*
+  \[..\] \.mdebug\.eabi32 +PROGBITS .*
+  \[..\] \.mdebug\.eabi64 +PROGBITS .*
+  \[..\] \.gcc_compiled_long32 +PROGBITS .*
+  \[..\] \.gcc_compiled_long64 +PROGBITS .*
+  \[..\] \.symtab +SYMTAB .*
+  \[..\] \.strtab +STRTAB .*
+  \[..\] \.shstrtab +STRTAB .*
+Key to Flags:
+#pass
Index: binutils-gdb/ld/testsuite/ld-mips-elf/sections-2-o32t.rd
===================================================================
--- /dev/null
+++ binutils-gdb/ld/testsuite/ld-mips-elf/sections-2-o32t.rd
@@ -0,0 +1,33 @@
+There are [0-9]+ section headers, starting at offset 0x[0-9a-f]+:
+
+Section Headers:
+  \[Nr\] Name +Type .*
+  \[..\]  +NULL .*
+  \[..\] \.interp +PROGBITS .*
+  \[..\] \.MIPS\.abiflags +MIPS_ABIFLAGS .*
+  \[..\] \.reginfo +MIPS_REGINFO .*
+  \[..\] \.MIPS\.xhash +MIPS_XHASH .*
+  \[..\] \.text +PROGBITS .*
+  \[..\] \.rodata +PROGBITS .*
+  \[..\] \.got\.plt +PROGBITS .*
+  \[..\] \.data +PROGBITS .*
+  \[..\] \.got +PROGBITS .*
+  \[..\] \.sdata +PROGBITS .*
+  \[..\] \.lit8 +PROGBITS .*
+  \[..\] \.lit4 +PROGBITS .*
+  \[..\] \.sbss +NOBITS .*
+  \[..\] \.bss +NOBITS .*
+  \[..\] \.gnu\.attributes +GNU_ATTRIBUTES .*
+  \[..\] \.mdebug\.abi32 +PROGBITS .*
+  \[..\] \.mdebug\.abiN32 +PROGBITS .*
+  \[..\] \.mdebug\.abi64 +PROGBITS .*
+  \[..\] \.mdebug\.abiO64 +PROGBITS .*
+  \[..\] \.mdebug\.eabi32 +PROGBITS .*
+  \[..\] \.mdebug\.eabi64 +PROGBITS .*
+  \[..\] \.gcc_compiled_long32 +PROGBITS .*
+  \[..\] \.gcc_compiled_long64 +PROGBITS .*
+  \[..\] \.symtab +SYMTAB .*
+  \[..\] \.strtab +STRTAB .*
+  \[..\] \.shstrtab +STRTAB .*
+Key to Flags:
+#pass
Index: binutils-gdb/ld/testsuite/ld-mips-elf/sections.s
===================================================================
--- /dev/null
+++ binutils-gdb/ld/testsuite/ld-mips-elf/sections.s
@@ -0,0 +1,44 @@
+	.section .MIPS.xhash
+	.dc.l	0
+	.section .bss
+	.dc.l	0
+	.section .data
+	.dc.l	0
+	.section .gcc_compiled_long32
+	.dc.l	0
+	.section .gcc_compiled_long64
+	.dc.l	0
+	.section .got
+	.dc.l	0
+	.section .got.plt
+	.dc.l	0
+	.section .gptab.sbss
+	.dc.l	0
+	.section .gptab.sdata
+	.dc.l	0
+	.section .interp
+	.dc.l	0
+	.section .lit4
+	.dc.l	0
+	.section .lit8
+	.dc.l	0
+	.section .mdebug.abi32
+	.dc.l	0
+	.section .mdebug.abi64
+	.dc.l	0
+	.section .mdebug.abiN32
+	.dc.l	0
+	.section .mdebug.abiO64
+	.dc.l	0
+	.section .mdebug.eabi32
+	.dc.l	0
+	.section .mdebug.eabi64
+	.dc.l	0
+	.section .rodata
+	.dc.l	0
+	.section .sbss
+	.dc.l	0
+	.section .sdata
+	.dc.l	0
+	.section .text
+	.dc.l	0


More information about the Binutils mailing list