ld: Just xfail riscv little endian targets for compressed1d.d test.

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].
This commit is contained in:
Nelson Chu 2021-01-08 04:04:13 -08:00
parent f0c1efa53d
commit 85e963f185
3 changed files with 23 additions and 2 deletions

View 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> 2021-01-18 Alan Modra <amodra@gmail.com>
PR 26378 PR 26378

View File

@ -3,10 +3,11 @@
#ld: -r --compress-debug-sections=zlib-gnu #ld: -r --compress-debug-sections=zlib-gnu
#readelf: -SW #readelf: -SW
#xfail: [uses_genelf] #xfail: [uses_genelf]
#xfail: riscv*-*-* #xfail: [riscv_little_endian]
# Not all ELF targets use the elf.em emulation... # Not all ELF targets use the elf.em emulation...
# RISC-V has linker relaxations that delete code, so text label subtractions # 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 #failif
#... #...

View File

@ -25,6 +25,19 @@ if ![is_elf_format] {
return 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 set old_ldflags $LDFLAGS
if { [istarget spu*-*-*] } { if { [istarget spu*-*-*] } {
set LDFLAGS "$LDFLAGS --local-store 0:0" set LDFLAGS "$LDFLAGS --local-store 0:0"