X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=ld%2Ftestsuite%2Fld-elf%2Fcompress.exp;h=8b55f86ea9a0b580cd6c7940b3dd04e552bfdf73;hb=e2c8dab6ae8654a928ab9364d5090781a4a6f62f;hp=850e3e8ad1f0786fc65435fc19ae7f1f8338cbb6;hpb=b90efa5b79ac1524ec260f8eb89d1be37e0219a7;p=deliverable%2Fbinutils-gdb.git diff --git a/ld/testsuite/ld-elf/compress.exp b/ld/testsuite/ld-elf/compress.exp index 850e3e8ad1..8b55f86ea9 100644 --- a/ld/testsuite/ld-elf/compress.exp +++ b/ld/testsuite/ld-elf/compress.exp @@ -1,5 +1,5 @@ # Expect script for ELF compressed debug section tests. -# Copyright (C) 2010-2015 Free Software Foundation, Inc. +# Copyright (C) 2010-2020 Free Software Foundation, Inc. # # This file is part of the GNU Binutils. # @@ -25,39 +25,232 @@ if ![is_elf_format] { return } -if ![is_zlib_supported] { - return -} +# Skip targets where -shared is not supported -# The following tests require running the executable generated by ld. -if ![isnative] { +if ![check_shared_lib_support] { return } # Check if compiler works -if { [which $CC] == 0 } { +if { ![check_compiler_available] } { return } -global as if { ![ld_assemble $as "--compress-debug-sections $srcdir/$subdir/empty.s" tmpdir/empty.o ] } { - unsupported "linker compressed debug sections" + 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 -g -Wa,--compress-debug-sections" + "-shared" "-fPIC -ggdb3 -Wa,--compress-debug-sections" {foo.c} {} "libfoo.so"} {"Build libbar.so with compressed debug sections" - "-shared" "-fPIC -g -Wa,--compress-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" "-Wa,--compress-debug-sections" - {main.c} "normal" "normal.out"} + "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 +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" + unresolved "$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" + unresolved "$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" + unresolved "$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" + unresolved "$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" + unresolved "$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" + unresolved "$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" + unresolved "$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" + unresolved "$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" + unresolved "$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" + unresolved "$test_name" +} +if { [regexp_diff tmpdir/$test.out $srcdir/$subdir/$test.rt] } then { + fail "$test_name" +} else { + pass "$test_name" +}