binutils-gdb/ld/testsuite/ld-elf/compress.exp
Alan Modra 5b1f6c9570 ld testsuite: change unresolved to unsupported/fail
"unresolved" as a test result means runtest returns an error, which
can be confusing when there is no apparent error unless you look in
.log files.  In particular many tests are skipped without reporting an
error if no target C compiler is found, but if a target C compiler is
found but won't compile a testcase for some reason we used to mark the
test as unresolved.  Which is no more worthy of an error than when
lacking a C compiler entirely.

	* testsuite/ld-cdtest/cdtest.exp,
	* testsuite/ld-checks/checks.exp,
	* testsuite/ld-elf/binutils.exp,
	* testsuite/ld-elf/compress.exp,
	* testsuite/ld-elf/dwarf.exp,
	* testsuite/ld-elf/exclude.exp,
	* testsuite/ld-elf/frame.exp,
	* testsuite/ld-elf/indirect.exp,
	* testsuite/ld-elf/linux-x86.exp,
	* testsuite/ld-elf/sec-to-seg.exp,
	* testsuite/ld-elf/tls_common.exp,
	* testsuite/ld-elfcomm/elfcomm.exp,
	* testsuite/ld-elfvers/vers.exp,
	* testsuite/ld-elfvsb/elfvsb.exp,
	* testsuite/ld-elfweak/elfweak.exp,
	* testsuite/ld-ifunc/binutils.exp,
	* testsuite/ld-mips-elf/mips-elf-flags.exp,
	* testsuite/ld-misc/defsym.exp,
	* testsuite/ld-mn10300/mn10300.exp,
	* testsuite/ld-plugin/lto.exp,
	* testsuite/ld-plugin/plugin.exp,
	* testsuite/ld-scripts/align.exp,
	* testsuite/ld-scripts/assert.exp,
	* testsuite/ld-scripts/crossref.exp,
	* testsuite/ld-scripts/defined.exp,
	* testsuite/ld-scripts/extern.exp,
	* testsuite/ld-scripts/log2.exp,
	* testsuite/ld-scripts/map-address.exp,
	* testsuite/ld-scripts/phdrs.exp,
	* testsuite/ld-scripts/phdrs2.exp,
	* testsuite/ld-scripts/script.exp,
	* testsuite/ld-scripts/section-flags.exp,
	* testsuite/ld-scripts/sizeof.exp,
	* testsuite/ld-scripts/weak.exp,
	* testsuite/ld-selective/selective.exp,
	* testsuite/ld-sh/sh.exp,
	* testsuite/ld-shared/shared.exp,
	* testsuite/ld-srec/srec.exp,
	* testsuite/ld-tic6x/tic6x.exp,
	* testsuite/ld-undefined/undefined.exp,
	* testsuite/ld-undefined/weak-undef.exp,
	* testsuite/lib/ld-lib.exp: Don't use unresolved except after
	perror.  Instead report "unsupported" or "fail".
2021-02-14 22:34:27 +10:30

257 lines
10 KiB
Plaintext

# Expect script for ELF compressed debug section tests.
# Copyright (C) 2010-2021 Free Software Foundation, Inc.
#
# This file is part of the GNU Binutils.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
# MA 02110-1301, USA.
#
# Exclude non-ELF targets.
if ![is_elf_format] {
return
}
# Skip targets where -shared is not supported
if ![check_shared_lib_support] {
return
}
# Check if compiler works
if { ![check_compiler_available] } {
return
}
if { ![ld_assemble $as "--compress-debug-sections $srcdir/$subdir/empty.s" tmpdir/empty.o ] } {
fail "linker compressed debug sections"
}
if { ![ld_assemble $as "--compress-debug-sections=zlib-gabi $srcdir/$subdir/empty.s" tmpdir/emptyzlib.o ] } {
fail "linker compressed debug sections"
}
set build_tests {
{"Build libfoo.so with compressed debug sections"
"-shared" "-fPIC -ggdb3 -Wa,--compress-debug-sections"
{foo.c} {} "libfoo.so"}
{"Build libbar.so with compressed debug sections"
"-shared -Wl,--compress-debug-sections=none"
"-fPIC -ggdb3 -Wa,--compress-debug-sections"
{begin.c end.c} {} "libbar.so"}
{"Build libfoozlib.so with compressed debug sections with zlib-gabi"
"-shared" "-fPIC -ggdb3 -Wa,--compress-debug-sections=zlib-gabi"
{foo.c} {} "libfoozlib.so"}
{"Build libbarzlib.so with compressed debug sections with zlib-gabi"
"-shared" "-fPIC -ggdb3 -Wa,--compress-debug-sections=zlib-gabi"
{begin.c end.c} {} "libbarzlib.so"}
{"Build libzlibfoo.so with zlib compressed debug sections"
"-shared -Wl,--compress-debug-sections=zlib"
"-fPIC -ggdb3 -Wa,--compress-debug-sections=zlib"
{foo.c} {} "libzlibfoo.so"}
{"Build libgnufoo.so with zlib-gnu compressed debug sections"
"-shared -Wl,--compress-debug-sections=zlib-gnu"
"-fPIC -ggdb3 -Wa,--compress-debug-sections=zlib-gnu"
{foo.c} {} "libgnufoo.so"}
{"Build libgabifoo.so with zlib-gabi compressed debug sections"
"-shared -Wl,--compress-debug-sections=zlib-gabi"
"-fPIC -ggdb3 -Wa,--compress-debug-sections=zlib-gabi"
{foo.c} {} "libgabifoo.so"}
{"Build zlibbegin.o with zlib compressed debug sections"
"-r -nostdlib -Wl,--compress-debug-sections=zlib"
"-ggdb3 -Wa,--compress-debug-sections=zlib"
{begin.c} {} "zlibbegin.o"}
{"Build gnubegin.o with zlib-gnu compressed debug sections"
"-r -nostdlib -Wl,--compress-debug-sections=zlib-gnu"
"-ggdb3 -Wa,--compress-debug-sections=zlib-gnu"
{begin.c} {} "gnubegin.o"}
{"Build gabiend.o with zlib-gabi compressed debug sections"
"-r -nostdlib -Wl,--compress-debug-sections=zlib-gabi"
"-ggdb3 -Wa,--compress-debug-sections=zlib-gnu"
{end.c} {} "gabiend.o"}
}
set run_tests {
{"Run normal with libfoo.so with compressed debug sections"
"tmpdir/begin.o tmpdir/libfoo.so tmpdir/end.o" ""
{main.c} "normal" "normal.out" "-Wa,--compress-debug-sections"}
{"Run normal with libfoozlib.so with compressed debug sections with zlib-gabi"
"tmpdir/begin.o tmpdir/libfoozlib.so tmpdir/end.o" ""
{main.c} "normal" "normal.out" "-Wa,--compress-debug-sections=zlib-gabi"}
{"Run zlibnormal with libzlibfoo.so with zlib compressed debug sections"
"tmpdir/begin.o tmpdir/libzlibfoo.so tmpdir/end.o -Wl,--compress-debug-sections=zlib" ""
{main.c} "zlibnormal" "normal.out" "-Wa,--compress-debug-sections=zlib"}
{"Run zlibnormal with libfoozlib.so with zlib compressed debug sections"
"tmpdir/begin.o tmpdir/libfoozlib.so tmpdir/end.o -Wl,--compress-debug-sections=zlib" ""
{main.c} "zlibnormal" "normal.out" "-Wa,--compress-debug-sections=zlib"}
{"Run gnunormal with libgnufoo.so with zlib-gnu compressed debug sections"
"tmpdir/gnubegin.o tmpdir/libgnufoo.so tmpdir/end.o -Wl,--compress-debug-sections=zlib-gnu" ""
{main.c} "gnunormal" "normal.out" "-Wa,--compress-debug-sections=zlib-gnu"}
{"Run gnunormal with libfoozlib.so with zlib-gnu compressed debug sections"
"tmpdir/gnubegin.o tmpdir/libfoozlib.so tmpdir/end.o -Wl,--compress-debug-sections=zlib-gnu" ""
{main.c} "gnunormal" "normal.out" "-Wa,--compress-debug-sections=zlib-gnu"}
{"Run gabinormal with libgabifoo.so with zlib-gabi compressed debug sections"
"tmpdir/zlibbegin.o tmpdir/libgabifoo.so tmpdir/gabiend.o -Wl,--compress-debug-sections=zlib-gabi" ""
{main.c} "gabinormal" "normal.out" "-Wa,--compress-debug-sections=zlib-gabi"}
{"Run gabinormal with libfoozlib.so with zlib-gabi compressed debug sections"
"tmpdir/zlibbegin.o tmpdir/libfoozlib.so tmpdir/gabiend.o -Wl,--compress-debug-sections=zlib-gabi" ""
{main.c} "gabinormal" "normal.out" "-Wa,--compress-debug-sections=zlib-gabi"}
}
run_cc_link_tests $build_tests
run_ld_link_exec_tests $run_tests
set test_name "Link with zlib-gabi compressed debug input"
send_log "cmp tmpdir/libfoo.so tmpdir/libfoozlib.so\n"
if { [catch {exec cmp tmpdir/libfoo.so tmpdir/libfoozlib.so}] } then {
send_log "tmpdir/libfoo.so tmpdir/libfoozlib.so differ.\n"
fail "$test_name"
} else {
pass "$test_name"
}
set test_name "Link -r with zlib compressed debug output"
set test zlibbegin
send_log "$READELF -S -W tmpdir/$test.o > tmpdir/$test.out\n"
set got [remote_exec host "$READELF -S -W tmpdir/$test.o" "" "/dev/null" "tmpdir/$test.out"]
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
send_log "$got\n"
fail "$test_name"
}
if { [regexp_diff tmpdir/$test.out $srcdir/$subdir/$test.rS] } then {
fail "$test_name"
} else {
pass "$test_name"
}
set test_name "Link -r with zlib-gnu compressed debug output"
set test gnubegin
send_log "$READELF -S -W tmpdir/$test.o > tmpdir/$test.out\n"
set got [remote_exec host "$READELF -S -W tmpdir/$test.o" "" "/dev/null" "tmpdir/$test.out"]
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
send_log "$got\n"
fail "$test_name"
}
if { [regexp_diff tmpdir/$test.out $srcdir/$subdir/$test.rS] } then {
fail "$test_name"
} else {
pass "$test_name"
}
set test_name "Link -r with zlib-gabi compressed debug output"
set test gabiend
send_log "$READELF -t -W tmpdir/$test.o > tmpdir/$test.out\n"
set got [remote_exec host "$READELF -t -W tmpdir/$test.o" "" "/dev/null" "tmpdir/$test.out"]
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
send_log "$got\n"
fail "$test_name"
}
if { [regexp_diff tmpdir/$test.out $srcdir/$subdir/$test.rt] } then {
fail "$test_name"
} else {
pass "$test_name"
}
set test_name "Link with zlib compressed debug output 1"
set test normal
send_log "$READELF -w tmpdir/$test > tmpdir/$test.out\n"
set got [remote_exec host [concat sh -c [list "$READELF -w tmpdir/$test > tmpdir/$test.out"]] "" "/dev/null"]
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
send_log "$got\n"
fail "$test_name"
}
set test_name "Link with zlib compressed debug output 2"
set test zlibnormal
send_log "$READELF -w tmpdir/$test | sed -e \"s/.zdebug_/.debug_/\" > tmpdir/$test.out\n"
set got [remote_exec host [concat sh -c [list "$READELF -w tmpdir/$test | sed -e \"s/.zdebug_/.debug_/\" > tmpdir/$test.out"]] "" "/dev/null"]
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
send_log "$got\n"
fail "$test_name"
}
if { [catch {exec cmp tmpdir/normal.out tmpdir/$test.out}] } then {
send_log "tmpdir/normal.out tmpdir/$test.out differ.\n"
fail "$test_name"
} else {
pass "$test_name"
}
set test_name "Link with zlib compressed debug output 3"
send_log "$READELF -S -W tmpdir/$test' > tmpdir/$test.out\n"
set got [remote_exec host "$READELF -S -W tmpdir/$test" "" "/dev/null" "tmpdir/$test.out"]
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
send_log "$got\n"
fail "$test_name"
}
if { [regexp_diff tmpdir/$test.out $srcdir/$subdir/$test.rS] } then {
fail "$test_name"
} else {
pass "$test_name"
}
set test_name "Link with zlib-gnu compressed debug output 1"
set test gnunormal
send_log "$READELF -w tmpdir/$test | sed -e \"s/.zdebug_/.debug_/\" > tmpdir/$test.out\n"
set got [remote_exec host [concat sh -c [list "$READELF -w tmpdir/$test | sed -e \"s/.zdebug_/.debug_/\" > tmpdir/$test.out"]] "" "/dev/null"]
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
send_log "$got\n"
fail "$test_name"
}
if { [catch {exec cmp tmpdir/normal.out tmpdir/$test.out}] } then {
send_log "tmpdir/normal.out tmpdir/$test.out differ.\n"
fail "$test_name"
} else {
pass "$test_name"
}
set test_name "Link with zlib-gnu compressed debug output 2"
send_log "$READELF -S -W tmpdir/$test' > tmpdir/$test.out\n"
set got [remote_exec host "$READELF -S -W tmpdir/$test" "" "/dev/null" "tmpdir/$test.out"]
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
send_log "$got\n"
fail "$test_name"
}
if { [regexp_diff tmpdir/$test.out $srcdir/$subdir/$test.rS] } then {
fail "$test_name"
} else {
pass "$test_name"
}
set test gabinormal
set test_name "Link with zlib-gabi compressed debug output 1"
send_log "$READELF -w tmpdir/$test > tmpdir/$test.out\n"
set got [remote_exec host [concat sh -c [list "$READELF -w tmpdir/$test > tmpdir/$test.out"]] "" "/dev/null"]
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
send_log "$got\n"
fail "$test_name"
}
if { [catch {exec cmp tmpdir/normal.out tmpdir/$test.out}] } then {
send_log "tmpdir/normal.out tmpdir/$test.out differ.\n"
fail "$test_name"
} else {
pass "$test_name"
}
set test_name "Link with zlib-gabi compressed debug output 2"
send_log "$READELF -t -W tmpdir/$test > tmpdir/$test.out\n"
set got [remote_exec host "$READELF -t -W tmpdir/$test" "" "/dev/null" "tmpdir/$test.out"]
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
send_log "$got\n"
fail "$test_name"
}
if { [regexp_diff tmpdir/$test.out $srcdir/$subdir/$test.rt] } then {
fail "$test_name"
} else {
pass "$test_name"
}