MIPS: Fix Irix gas testcases
Checks
Context |
Check |
Description |
linaro-tcwg-bot/tcwg_binutils_check--master-aarch64 |
success
|
Testing passed
|
linaro-tcwg-bot/tcwg_binutils_check--master-arm |
success
|
Testing passed
|
linaro-tcwg-bot/tcwg_binutils_build--master-arm |
success
|
Testing passed
|
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 |
success
|
Testing passed
|
Commit Message
1. Add -mpdr option to cases, which expect .pdr section existing.
Gas doesn't generate .pdr section for Irix objects by default. See
`int mips_flag_pdr` in tc-mips.c.
2. Add irix-no-pdr.d testcase to make sure no .pdr section generates
for Irix by default.
3. Add and use call-nonpic-1-irix.d for Irix targets.
Gas doesn't set O32 flags for Irix objects in e_flags. See
`use_e_mips_abi_o32` in gas/configure.ac.
4. Add mips16-e-irix.d: g1 is marked as O on Irix.
The Irix 5 and 6 assemblers set the type of any common symbol and
any undefined non-function symbol to STT_OBJECT.
See `mips_frob_symbol` in tc-mips.c.
---
gas/testsuite/gas/elf/elf.exp | 4 ++
gas/testsuite/gas/mips/call-nonpic-1-irix.d | 30 +++++++++++++
gas/testsuite/gas/mips/elf-rel26.d | 2 +-
gas/testsuite/gas/mips/irix-no-pdr.d | 8 ++++
gas/testsuite/gas/mips/mips.exp | 11 ++++-
gas/testsuite/gas/mips/mips16-e-irix.d | 50 +++++++++++++++++++++
gas/testsuite/gas/mips/mips16-e.d | 2 +-
gas/testsuite/gas/mips/mips16-f.d | 2 +-
gas/testsuite/gas/mips/mips16-hilo-match.d | 2 +-
9 files changed, 105 insertions(+), 6 deletions(-)
create mode 100644 gas/testsuite/gas/mips/call-nonpic-1-irix.d
create mode 100644 gas/testsuite/gas/mips/irix-no-pdr.d
create mode 100644 gas/testsuite/gas/mips/mips16-e-irix.d
@@ -207,6 +207,10 @@ if { [is_elf_format] } then {
riscv*-*-* {
set as_flags "$as_flags -march-attr"
}
+ mips*-*-* {
+ # Irix has no pdr section by default.
+ set as_flags "$as_flags -mpdr"
+ }
}
run_elf_list_test "section2" "$target_machine" "$as_flags" "-s" ""
}
new file mode 100644
@@ -0,0 +1,30 @@
+#as: -mabi=32 -mips2 -call_nonpic
+#objdump: -pdr
+#source: call-nonpic-1.s
+
+.*
+private flags = 10000004: .*
+
+MIPS ABI Flags Version: 0
+
+ISA: MIPS2
+GPR size: 32
+CPR1 size: 32
+CPR2 size: 0
+FP ABI: Hard float \(double precision\)
+ISA Extension: None
+ASEs:
+ None
+FLAGS 1: 00000000
+FLAGS 2: 00000000
+
+
+Disassembly of section \.text:
+
+0+0 <\.text>:
+.* lui t9,0x0
+.*: R_MIPS_HI16 foo
+.* addiu t9,t9,0
+.*: R_MIPS_LO16 foo
+.* jalr t9
+.* nop
@@ -1,4 +1,4 @@
-#as: -mips32 -32 -EL -KPIC
+#as: -mips32 -32 -EL -KPIC -mpdr
#readelf: --relocs
#name: MIPS ELF reloc 26
new file mode 100644
@@ -0,0 +1,8 @@
+#objdump: -rst
+#name: Irix has no .pdr section
+#as: -32 -mips32
+#source: sync.s
+
+#failif
+.*\.pdr.*
+#pass
@@ -1242,7 +1242,7 @@ if { [istarget mips*-*-vxworks*] } {
run_dump_test "comdat-reloc"
- run_dump_test "${tmips}mips${el}16-e"
+ run_dump_test "${tmips}mips${el}16-e${imips}"
run_dump_test "${tmips}mips${el}16-f"
run_dump_test "elf-consthilo"
@@ -1539,7 +1539,8 @@ if { [istarget mips*-*-vxworks*] } {
[mips_arch_list_matching mips1 !singlefloat]
run_dump_test "mips16-vis-1"
- run_dump_test "call-nonpic-1"
+ # Irix sets use_e_mips_abi_o32=0. See gas/configure.ac.
+ run_dump_test "call-nonpic-1${imips}"
run_dump_test "mips32-sync"
run_dump_test_arches "mips32r2-sync" [lsort -dictionary -unique [concat \
[mips_arch_list_matching mips32r2] \
@@ -2167,4 +2168,10 @@ if { [istarget mips*-*-vxworks*] } {
run_dump_test "global-local-symtab-sort-n32${tmips}"
run_dump_test "global-local-symtab-sort-n64${tmips}"
}
+
+ # Gas doesn't generate .pdr section for Irix objects by default.
+ # See `int mips_flag_pdr` in tc-mips.c.
+ if [istarget *-*-irix*] {
+ run_dump_test "irix-no-pdr"
+ }
}
new file mode 100644
@@ -0,0 +1,50 @@
+#objdump: -rst --special-syms -mips16
+#name: MIPS16 reloc
+#as: -32 -mips16 -mips32 -mpdr
+#source: mips16-e.s
+
+# The Irix 5 and 6 assemblers set the type of any common symbol and
+# any undefined non-function symbol to STT_OBJECT.
+# See `mips_frob_symbol` in tc-mips.c.
+
+# Check MIPS16 reloc processing
+
+.*: +file format elf.*mips.*
+
+SYMBOL TABLE:
+0+0000000 l d \.text 0+0000000 (|\.text)
+0+0000000 l d \.data 0+0000000 (|\.data)
+0+0000000 l d \.bss 0+0000000 (|\.bss)
+0+0000000 l d foo 0+0000000 (|foo)
+0+0000000 l d \.reginfo 0+0000000 (|\.reginfo)
+0+0000000 l d \.MIPS\.abiflags 0+0000000 (|\.MIPS\.abiflags)
+0+0000000 l d \.(mdebug|pdr) 0+0000000 (|\.mdebug|\.pdr)
+0+0000000 l d \.gnu\.attributes 0+0000000 (|\.gnu\.attributes)
+0+0000002 l \.text 0+0000000 0xf0 l1
+0+0000004 l \.text 0+0000000 0xf0 \.L1.*1
+0+0000000 O \*UND\* 0+0000000 g1
+
+
+RELOCATION RECORDS FOR \[foo\]:
+OFFSET +TYPE +VALUE
+0+0000000 R_MIPS_32 l1
+0+0000004 R_MIPS_32 l1
+0+0000008 R_MIPS_32 \.L1.*1
+0+000000c R_MIPS_32 \.L1.*1
+0+0000010 R_MIPS_32 g1
+0+0000014 R_MIPS_32 g1
+
+
+Contents of section \.text:
+ 0000 65006500 65006500 65006500 65006500 .*
+Contents of section \.reginfo:
+ 0000 00010000 00000000 00000000 00000000 .*
+ 0010 00000000 00000000 .*
+Contents of section \.MIPS\.abiflags:
+ .*
+ .*
+Contents of section foo:
+ 0000 00000000 00000008 00000000 00000003 .*
+ 0010 00000000 00000008 00000000 00000000 .*
+Contents of section \.gnu\.attributes:
+ .*
@@ -1,6 +1,6 @@
#objdump: -rst --special-syms -mips16
#name: MIPS16 reloc
-#as: -32 -mips16
+#as: -32 -mips16 -mips32 -mpdr
# Check MIPS16 reloc processing
@@ -1,6 +1,6 @@
#objdump: -rst -mips16
#name: MIPS16 reloc 2
-#as: -32 -mips16
+#as: -32 -mips16 -mips32 -mpdr
# Check MIPS16 reloc processing
@@ -1,5 +1,5 @@
#objdump: -r
-#as: -mabi=32 -march=mips1
+#as: -mabi=32 -march=mips1 -mpdr
#name: MIPS16 mips16-hilo-match
.*: +file format .*mips.*