diff options
Diffstat (limited to 'binutils/testsuite/binutils-all/compress.exp')
-rw-r--r-- | binutils/testsuite/binutils-all/compress.exp | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/binutils/testsuite/binutils-all/compress.exp b/binutils/testsuite/binutils-all/compress.exp new file mode 100644 index 0000000000..fdf71fb816 --- /dev/null +++ b/binutils/testsuite/binutils-all/compress.exp @@ -0,0 +1,135 @@ +# Copyright 2010 +# Free Software Foundation, Inc. + +# 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. + +# Test compressed .debug section. + +if { [is_remote host] || ![is_elf_format] } then { + return +} + +set testfile tmpdir/dw2-1.o +set compressedfile tmpdir/dw2-1-compressed.o +set copyfile tmpdir/dw2-copy +set compressedfile2 tmpdir/dw2-2-compressed.o +set libfile tmpdir/libdw2.a +set compressedcopyfile tmpdir/dw2-copy-compressed + +if { ![binutils_assemble $srcdir/$subdir/dw2-1.S $testfile] } then { + fail "compressed debug sections" + return +} + +if { ![binutils_assemble_flags $srcdir/$subdir/dw2-1.S $compressedfile --compress-debug-sections] } then { + unsupported "compressed debug sections" + return +} + +if { ![binutils_assemble_flags $srcdir/$subdir/dw2-2.S $compressedfile2 --compress-debug-sections] } then { + unsupported "compressed debug sections" + return +} + +remote_file host delete $libfile +set got [binutils_run $AR "rc $libfile $compressedfile $compressedfile2"] +if ![string match "" $got] then { + fail "compressed debug sections" + return +} + +set testname "objcopy compress debug sections" +set got [binutils_run $OBJCOPY "--compress-debug-sections $testfile ${copyfile}.o"] +if ![string match "" $got] then { + fail "objcopy ($testname)" +} else { + send_log "cmp $compressedfile ${copyfile}.o\n" + verbose "cmp $compressedfile ${copyfile}.o" + set src1 ${compressedfile} + set src2 ${copyfile}.o + set status [remote_exec build cmp "${src1} ${src2}"] + set exec_output [lindex $status 1] + set exec_output [prune_warnings $exec_output] + + if [string match "" $exec_output] then { + pass "objcopy ($testname)" + } else { + send_log "$exec_output\n" + verbose "$exec_output" 1 + fail "objcopy ($testname)" + } +} + +set testname "objcopy decompress compressed debug sections" +set got [binutils_run $OBJCOPY "--decompress-debug-sections $compressedfile ${copyfile}.o"] +if ![string match "" $got] then { + fail "objcopy ($testname)" +} else { + send_log "cmp $testfile ${copyfile}.o\n" + verbose "cmp $testfile ${copyfile}.o" + set src1 ${testfile} + set src2 ${copyfile}.o + set status [remote_exec build cmp "${src1} ${src2}"] + set exec_output [lindex $status 1] + set exec_output [prune_warnings $exec_output] + + if [string match "" $exec_output] then { + pass "objcopy ($testname)" + } else { + send_log "$exec_output\n" + verbose "$exec_output" 1 + fail "objcopy ($testname)" + } +} + +set testname "objcopy decompress debug sections in archive" +set got [binutils_run $OBJCOPY "--decompress-debug-sections $libfile ${copyfile}.a"] +if ![string match "" $got] then { + fail "objcopy ($testname)" +} else { + set got [remote_exec host "$READELF -S --wide ${copyfile}.a" "" "/dev/null" "tmpdir/libdw2.out"] + + if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then { + fail "$testname (reason: unexpected output)" + send_log $got + send_log "\n" + } + + if { [regexp_diff tmpdir/libdw2.out $srcdir/$subdir/libdw2.out] } then { + fail "$testname" + } else { + pass "$testname" + } +} + +set testname "objcopy compress debug sections in archive" +set got [binutils_run $OBJCOPY "--compress-debug-sections ${copyfile}.a ${compressedcopyfile}.a"] +if ![string match "" $got] then { + fail "objcopy ($testname)" +} else { + set got [remote_exec host "$OBJDUMP -s -j .zdebug_line ${compressedcopyfile}.a" "" "/dev/null" "tmpdir/libdw2-compressed.out"] + + if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then { + fail "$testname (reason: unexpected output)" + send_log $got + send_log "\n" + } + + if { [regexp_diff tmpdir/libdw2-compressed.out $srcdir/$subdir/libdw2-compressed.out] } then { + fail "$testname" + } else { + pass "$testname" + } +} |