ld: Just xfail riscv little endian targets for compressed1d.d test.
authorNelson Chu <nelson.chu@sifive.com>
Fri, 8 Jan 2021 12:04:13 +0000 (04:04 -0800)
committerNelson Chu <nelson.chu@sifive.com>
Tue, 19 Jan 2021 01:40:18 +0000 (09:40 +0800)
The sizes of compressed and uncompressed .debug_aranges are the same
for the riscv big endian targets, but different for the little endian
targets.  The compress rule is fine and isn't broken by riscv, just the
original compressed1d.d fails by accident.  Ideally, we should fill the
R_RISCV_ADD/SUB relocations when disabling relaxations in the assembler.
But before that, Jim already had written an alternative test compressed1d-alt
to relpace compressed1d.d for riscv, so we can only xfail the riscv little
endian targets in the short-term.

ld/
    * testsuite/ld-elf/elf.exp (riscv_little_endian): Added.  Return true
    if target is riscv little endian.  Otherwise, return false.
    * testsuite/ld-elf/compressed1d.d: Only xfail the riscv little endian
    targets by [riscv_little_endian].

ld/ChangeLog
ld/testsuite/ld-elf/compressed1d.d
ld/testsuite/ld-elf/elf.exp

index 688a4427e828c7ba8f206a109e4ad8b97a0676d0..035e6aa3fdcf5400571c7e2bad9e1c10bcfb5b98 100644 (file)
@@ -1,3 +1,10 @@
+2021-01-19  Nelson Chu  <nelson.chu@sifive.com>
+
+       * testsuite/ld-elf/elf.exp (riscv_little_endian): Added.  Return true
+       if target is riscv little endian.  Otherwise, return false.
+       * testsuite/ld-elf/compressed1d.d: Only xfail the riscv little endian
+       targets by [riscv_little_endian].
+
 2021-01-18  Alan Modra  <amodra@gmail.com>
 
        PR 26378
index df7ce3445078c3460277c29e13254e7a01c896f8..9d891c1933f0d9072b56d54d1f510508c169afba 100644 (file)
@@ -3,10 +3,11 @@
 #ld: -r --compress-debug-sections=zlib-gnu
 #readelf: -SW
 #xfail: [uses_genelf]
-#xfail: riscv*-*-*
+#xfail: [riscv_little_endian]
 # Not all ELF targets use the elf.em emulation...
 # RISC-V has linker relaxations that delete code, so text label subtractions
-# do not get resolved at assembly time, which results in a compressed section.
+# do not get resolved at assembly time, which results in a compressed section
+# for little endian targets; but it is uncompressed for big endian targets.
 
 #failif
 #...
index 7179cec61e6e572b9faef800a1cc894f44f3c260..e98bffc0c5f3669b874f237d20b17707e787ce43 100644 (file)
@@ -25,6 +25,19 @@ if ![is_elf_format] {
     return
 }
 
+# Return true if target is riscv little endian.
+# xfail the riscv little endain targets for the compressed1d1 test;
+# The riscv big endian targets and others should pass.
+proc riscv_little_endian { } {
+    if { [istarget "riscv32-*-*"]
+        || [istarget "riscv64-*-*"]
+        || [istarget "riscv32le-*-*"]
+        || [istarget "riscv64le-*-*"] } {
+       return 1
+    }
+    return 0
+}
+
 set old_ldflags $LDFLAGS
 if { [istarget spu*-*-*] } {
     set LDFLAGS "$LDFLAGS --local-store 0:0"