889884731e
The output SHF_COMPRESSED section size is different from input if ELF classes of input and output aren't the same. We must adjust the section sizes as well as the compression headers in SHF_COMPRESSED sections when converting objects between different ELF classes. bfd/ PR binutils/18656 * bfd.c (bfd_convert_section_size): New function. (bfd_convert_section_contents): Likewise. * bfd-in2.h: Regenerated. binutils/ 2015-07-10 H.J. Lu <hongjiu.lu@intel.com> PR binutils/18656 * objcopy.c (setup_section): Call bfd_convert_section_size to get the output section size. (copy_section): Get the section size from the output section and call bfd_get_full_section_contents to convert section contents for output. binutils/testsuite/ PR binutils/18656 * binutils-all/compress.exp (convert_test): New proc. Run conversion tests between x86-64 and x32.
665 lines
23 KiB
Text
665 lines
23 KiB
Text
# Copyright (C) 2010-2015 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
|
|
set compressedfile tmpdir/dw2-1-compressed
|
|
set copyfile tmpdir/dw2-copy
|
|
set compressedfile2 tmpdir/dw2-2-compressed
|
|
set libfile tmpdir/libdw2
|
|
set compressedcopyfile tmpdir/dw2-copy-compressed
|
|
set testfile3 tmpdir/dw2-3
|
|
set compressedfile3 tmpdir/dw2-3-compressed
|
|
|
|
if { ![binutils_assemble_flags $srcdir/$subdir/dw2-1.S ${testfile}.o --nocompress-debug-sections] } then {
|
|
unsupported "compressed debug sections"
|
|
return
|
|
}
|
|
|
|
if { ![binutils_assemble_flags $srcdir/$subdir/dw2-1.S ${compressedfile}.o --compress-debug-sections] } then {
|
|
unsupported "compressed debug sections"
|
|
return
|
|
}
|
|
|
|
set got [remote_exec host "cmp ${testfile}.o ${compressedfile}.o"]
|
|
# Use it to set up xfail.
|
|
set exec_output [lindex $got 1]
|
|
if [string match "" $exec_output] then {
|
|
set compression_used ""
|
|
} else {
|
|
set compression_used "yes"
|
|
}
|
|
|
|
if { ![binutils_assemble_flags $srcdir/$subdir/dw2-2.S ${compressedfile2}.o --compress-debug-sections] } then {
|
|
unsupported "compressed debug sections"
|
|
return
|
|
}
|
|
|
|
if { ![binutils_assemble_flags $srcdir/$subdir/dw2-3.S ${testfile3}.o --nocompress-debug-sections] } then {
|
|
unsupported "compressed debug sections"
|
|
return
|
|
}
|
|
|
|
if { ![binutils_assemble_flags $srcdir/$subdir/dw2-3.S ${compressedfile3}.o --compress-debug-sections] } then {
|
|
unsupported "compressed debug sections"
|
|
return
|
|
}
|
|
|
|
remote_file host delete ${libfile}.a
|
|
set got [binutils_run $AR "rc ${libfile}.a ${compressedfile}.o ${compressedfile2}.o ${compressedfile3}.o"]
|
|
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}.o ${copyfile}.o"]
|
|
if ![string match "" $got] then {
|
|
fail "objcopy ($testname)"
|
|
} else {
|
|
send_log "cmp ${compressedfile}.o ${copyfile}.o\n"
|
|
verbose "cmp ${compressedfile}.o ${copyfile}.o"
|
|
set src1 ${compressedfile}.o
|
|
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}.o ${copyfile}.o"]
|
|
if ![string match "" $got] then {
|
|
fail "objcopy ($testname)"
|
|
} else {
|
|
send_log "cmp ${testfile}.o ${copyfile}.o\n"
|
|
verbose "cmp ${testfile}.o ${copyfile}.o"
|
|
set src1 ${testfile}.o
|
|
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}.a ${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"
|
|
}
|
|
}
|
|
|
|
# Xfail this test if there are no compressed sections.
|
|
setup_xfail "$compression_used$target_triplet"
|
|
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"
|
|
}
|
|
|
|
setup_xfail "$compression_used$target_triplet"
|
|
if { [regexp_diff tmpdir/libdw2-compressed.out $srcdir/$subdir/libdw2-compressed.out] } then {
|
|
fail "$testname"
|
|
} else {
|
|
pass "$testname"
|
|
}
|
|
}
|
|
|
|
set testname "objdump compress debug sections"
|
|
set got [remote_exec host "$OBJDUMP -W ${compressedfile}.o" "" "/dev/null" "objdump.out"]
|
|
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
|
|
fail "$testname"
|
|
send_log "$got\n"
|
|
}
|
|
if { [regexp_diff objdump.out $srcdir/$subdir/dw2-1.W] } then {
|
|
fail "$testname"
|
|
} else {
|
|
pass "$testname"
|
|
}
|
|
|
|
set testname "objdump compress debug sections 3"
|
|
set got [remote_exec host "$OBJDUMP -W ${compressedfile3}.o" "" "/dev/null" "objdump.out"]
|
|
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
|
|
fail "$testname"
|
|
send_log "$got\n"
|
|
}
|
|
if { [regexp_diff objdump.out $srcdir/$subdir/dw2-3.W] } then {
|
|
fail "$testname"
|
|
} else {
|
|
pass "$testname"
|
|
}
|
|
|
|
if { ![binutils_assemble_flags $srcdir/$subdir/dw2-empty.S ${testfile}empty.o --nocompress-debug-sections] } then {
|
|
unsupported "compressed debug sections"
|
|
return
|
|
}
|
|
|
|
set testname "objcopy compress empty debug sections"
|
|
set got [binutils_run $OBJCOPY "--compress-debug-sections ${testfile}empty.o ${copyfile}empty.o"]
|
|
if ![string match "" $got] then {
|
|
fail "objcopy ($testname)"
|
|
} else {
|
|
send_log "cmp ${testfile}empty.o ${copyfile}empty.o\n"
|
|
verbose "cmp ${testfile}empty.o ${copyfile}empty.o"
|
|
set src1 ${testfile}empty.o
|
|
set src2 ${copyfile}empty.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)"
|
|
}
|
|
}
|
|
|
|
if ![is_remote host] {
|
|
set tempfile tmpdir/debug_str.o
|
|
set copyfile tmpdir/debug_str.copy
|
|
} else {
|
|
set tempfile [remote_download host tmpdir/debug_str.o]
|
|
set copyfile debug_str.copy
|
|
}
|
|
|
|
run_dump_test "debug_str"
|
|
|
|
if { ![binutils_assemble_flags $srcdir/$subdir/dw2-1.S ${compressedfile}gabi.o --compress-debug-sections=zlib-gabi] } then {
|
|
fail "compressed debug sections with zlib-gabi"
|
|
return
|
|
}
|
|
|
|
if { ![binutils_assemble_flags $srcdir/$subdir/dw2-1.S ${compressedfile}gnu.o --compress-debug-sections=zlib-gnu] } then {
|
|
fail "compressed debug sections with zlib-gnu"
|
|
return
|
|
}
|
|
|
|
set src1 ${compressedfile}gnu.o
|
|
set src2 ${compressedfile}.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 {
|
|
fail "compressed debug sections with zlib-gnu"
|
|
return
|
|
}
|
|
|
|
if { ![binutils_assemble_flags $srcdir/$subdir/dw2-2.S ${compressedfile2}gabi.o --compress-debug-sections=zlib-gabi] } then {
|
|
fail "compressed debug sections with zlib-gabi"
|
|
return
|
|
}
|
|
|
|
if { ![binutils_assemble_flags $srcdir/$subdir/dw2-2.S ${compressedfile2}gnu.o --compress-debug-sections=zlib-gnu] } then {
|
|
fail "compressed debug sections with zlib-gnu"
|
|
return
|
|
}
|
|
|
|
set src1 ${compressedfile2}gnu.o
|
|
set src2 ${compressedfile2}.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 {
|
|
fail "compressed debug sections with zlib-gnu"
|
|
return
|
|
}
|
|
|
|
if { ![binutils_assemble_flags $srcdir/$subdir/dw2-3.S ${compressedfile3}gabi.o --compress-debug-sections=zlib-gabi] } then {
|
|
fail "compressed debug sections with zlib-gabi"
|
|
return
|
|
}
|
|
|
|
set testname "readelf -t zlib-gabi compress debug sections"
|
|
set got [remote_exec host "$READELF -t --wide ${compressedfile3}gabi.o" "" "/dev/null" "tmpdir/dw2-3.rt"]
|
|
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
|
|
fail "$testname (reason: unexpected output)"
|
|
send_log "$got\n"
|
|
}
|
|
if { [regexp_diff tmpdir/dw2-3.rt $srcdir/$subdir/dw2-3.rt] } then {
|
|
fail "$testname"
|
|
} else {
|
|
pass "$testname"
|
|
}
|
|
|
|
set testname "readelf -S zlib-gabi compress debug sections"
|
|
set got [remote_exec host "$READELF -S --wide ${compressedfile3}gabi.o" "" "/dev/null" "tmpdir/dw2-3.rS"]
|
|
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
|
|
fail "$testname (reason: unexpected output)"
|
|
send_log "$got\n"
|
|
}
|
|
if { [regexp_diff tmpdir/dw2-3.rS $srcdir/$subdir/dw2-3.rS] } then {
|
|
fail "$testname"
|
|
} else {
|
|
pass "$testname"
|
|
}
|
|
|
|
if { ![binutils_assemble_flags $srcdir/$subdir/dw2-3.S ${compressedfile3}gnu.o --compress-debug-sections=zlib-gnu] } then {
|
|
fail "compressed debug sections with zlib-gnu"
|
|
return
|
|
}
|
|
|
|
set src1 ${compressedfile3}gnu.o
|
|
set src2 ${compressedfile3}.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 {
|
|
fail "compressed debug sections with zlib-gnu"
|
|
return
|
|
}
|
|
|
|
remote_file host delete ${libfile}gabi.a
|
|
set got [binutils_run $AR "rc ${libfile}gabi.a ${compressedfile}gabi.o ${compressedfile2}gabi.o ${compressedfile3}gabi.o"]
|
|
if ![string match "" $got] then {
|
|
fail "compressed debug sections"
|
|
return
|
|
}
|
|
|
|
set testname "objcopy compress debug sections with zlib-gabi"
|
|
set got [binutils_run $OBJCOPY "--compress-debug-sections=zlib-gabi ${testfile}.o ${copyfile}gabi.o"]
|
|
if ![string match "" $got] then {
|
|
fail "objcopy ($testname)"
|
|
return
|
|
}
|
|
send_log "cmp ${compressedfile}gabi.o ${copyfile}gabi.o\n"
|
|
verbose "cmp ${compressedfile}gabi.o ${copyfile}gabi.o"
|
|
set src1 ${compressedfile}gabi.o
|
|
set src2 ${copyfile}gabi.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 {
|
|
send_log "$exec_output\n"
|
|
verbose "$exec_output" 1
|
|
fail "objcopy ($testname)"
|
|
} else {
|
|
pass "objcopy ($testname)"
|
|
}
|
|
|
|
set testname "objcopy decompress compressed debug sections with zlib-gabi"
|
|
set got [binutils_run $OBJCOPY "--decompress-debug-sections ${compressedfile}gabi.o ${copyfile}gabi.o"]
|
|
if ![string match "" $got] then {
|
|
fail "objcopy ($testname)"
|
|
return
|
|
}
|
|
send_log "cmp ${testfile}.o ${copyfile}gabi.o\n"
|
|
verbose "cmp ${testfile}.o ${copyfile}gabi.o"
|
|
set src1 ${testfile}.o
|
|
set src2 ${copyfile}gabi.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 {
|
|
send_log "$exec_output\n"
|
|
verbose "$exec_output" 1
|
|
fail "objcopy ($testname)"
|
|
} else {
|
|
pass "objcopy ($testname)"
|
|
}
|
|
|
|
set testname "objcopy zlib-gnu compress debug sections with zlib-gabi"
|
|
set got [binutils_run $OBJCOPY "--compress-debug-sections=zlib-gabi ${compressedfile}.o ${copyfile}gabi.o"]
|
|
if ![string match "" $got] then {
|
|
fail "objcopy ($testname)"
|
|
return
|
|
}
|
|
send_log "cmp ${compressedfile}gabi.o ${copyfile}gabi.o\n"
|
|
verbose "cmp ${compressedfile}gabi.o ${copyfile}gabi.o"
|
|
set src1 ${compressedfile}gabi.o
|
|
set src2 ${copyfile}gabi.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 {
|
|
send_log "$exec_output\n"
|
|
verbose "$exec_output" 1
|
|
fail "objcopy ($testname)"
|
|
} else {
|
|
pass "objcopy ($testname)"
|
|
}
|
|
|
|
set testname "objcopy zlib-gabi compress debug sections with zlib-gnu"
|
|
set got [binutils_run $OBJCOPY "--compress-debug-sections=zlib-gnu ${compressedfile}gabi.o ${copyfile}gnu.o"]
|
|
if ![string match "" $got] then {
|
|
fail "objcopy ($testname)"
|
|
return
|
|
}
|
|
send_log "cmp ${compressedfile}gnu.o ${copyfile}gnu.o\n"
|
|
verbose "cmp ${compressedfile}gnu.o ${copyfile}gnu.o"
|
|
set src1 ${compressedfile}gnu.o
|
|
set src2 ${copyfile}gnu.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 {
|
|
send_log "$exec_output\n"
|
|
verbose "$exec_output" 1
|
|
fail "objcopy ($testname)"
|
|
} else {
|
|
pass "objcopy ($testname)"
|
|
}
|
|
|
|
set testname "objcopy compress debug sections 3 with zlib-gabi"
|
|
set got [binutils_run $OBJCOPY "--compress-debug-sections=zlib-gabi ${testfile3}.o ${copyfile}gabi.o"]
|
|
if ![string match "" $got] then {
|
|
fail "objcopy ($testname)"
|
|
return
|
|
}
|
|
send_log "cmp ${compressedfile3}gabi.o ${copyfile}gabi.o\n"
|
|
verbose "cmp ${compressedfile3}gabi.o ${copyfile}gabi.o"
|
|
set src1 ${compressedfile3}gabi.o
|
|
set src2 ${copyfile}gabi.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 {
|
|
send_log "$exec_output\n"
|
|
verbose "$exec_output" 1
|
|
fail "objcopy ($testname)"
|
|
} else {
|
|
pass "objcopy ($testname)"
|
|
}
|
|
|
|
set testname "objcopy decompress compressed debug sections 3 with zlib-gabi"
|
|
set got [binutils_run $OBJCOPY "--decompress-debug-sections ${compressedfile3}gabi.o ${copyfile}gabi.o"]
|
|
if ![string match "" $got] then {
|
|
fail "objcopy ($testname)"
|
|
return
|
|
}
|
|
send_log "cmp ${testfile3}.o ${copyfile}gabi.o\n"
|
|
verbose "cmp ${testfile3}.o ${copyfile}gabi.o"
|
|
set src1 ${testfile3}.o
|
|
set src2 ${copyfile}gabi.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 {
|
|
send_log "$exec_output\n"
|
|
verbose "$exec_output" 1
|
|
fail "objcopy ($testname)"
|
|
} else {
|
|
pass "objcopy ($testname)"
|
|
}
|
|
|
|
set testname "objcopy zlib-gnu compress debug sections 3 with zlib-gabi"
|
|
set got [binutils_run $OBJCOPY "--compress-debug-sections=zlib-gabi ${compressedfile3}.o ${copyfile}gabi.o"]
|
|
if ![string match "" $got] then {
|
|
fail "objcopy ($testname)"
|
|
return
|
|
}
|
|
send_log "cmp ${compressedfile3}gabi.o ${copyfile}gabi.o\n"
|
|
verbose "cmp ${compressedfile3}gabi.o ${copyfile}gabi.o"
|
|
set src1 ${compressedfile3}gabi.o
|
|
set src2 ${copyfile}gabi.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 {
|
|
send_log "$exec_output\n"
|
|
verbose "$exec_output" 1
|
|
fail "objcopy ($testname)"
|
|
} else {
|
|
pass "objcopy ($testname)"
|
|
}
|
|
|
|
set testname "objcopy zlib-gabi compress debug sections 3 with zlib-gnu"
|
|
set got [binutils_run $OBJCOPY "--compress-debug-sections=zlib-gnu ${compressedfile3}gabi.o ${copyfile}gnu.o"]
|
|
if ![string match "" $got] then {
|
|
fail "objcopy ($testname)"
|
|
return
|
|
}
|
|
send_log "cmp ${compressedfile3}gnu.o ${copyfile}gnu.o\n"
|
|
verbose "cmp ${compressedfile3}gnu.o ${copyfile}gnu.o"
|
|
set src1 ${compressedfile3}gnu.o
|
|
set src2 ${copyfile}gnu.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 {
|
|
send_log "$exec_output\n"
|
|
verbose "$exec_output" 1
|
|
fail "objcopy ($testname)"
|
|
} else {
|
|
pass "objcopy ($testname)"
|
|
}
|
|
|
|
set testname "objcopy zlib-gnu compress debug sections 3"
|
|
set got [binutils_run $OBJCOPY "${compressedfile3}gnu.o ${copyfile}gnu.o"]
|
|
if ![string match "" $got] then {
|
|
fail "objcopy ($testname)"
|
|
return
|
|
}
|
|
send_log "cmp ${compressedfile3}gnu.o ${copyfile}gnu.o\n"
|
|
verbose "cmp ${compressedfile3}gnu.o ${copyfile}gnu.o"
|
|
set src1 ${compressedfile3}gnu.o
|
|
set src2 ${copyfile}gnu.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 {
|
|
send_log "$exec_output\n"
|
|
verbose "$exec_output" 1
|
|
fail "objcopy ($testname)"
|
|
} else {
|
|
pass "objcopy ($testname)"
|
|
}
|
|
|
|
set testname "objcopy zlib-gnu compress debug sections 3"
|
|
set got [binutils_run $OBJCOPY "${compressedfile3}gnu.o ${copyfile}gnu.o"]
|
|
if ![string match "" $got] then {
|
|
fail "objcopy ($testname)"
|
|
return
|
|
}
|
|
send_log "cmp ${compressedfile3}gnu.o ${copyfile}gnu.o\n"
|
|
verbose "cmp ${compressedfile3}gnu.o ${copyfile}gnu.o"
|
|
set src1 ${compressedfile3}gnu.o
|
|
set src2 ${copyfile}gnu.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 {
|
|
send_log "$exec_output\n"
|
|
verbose "$exec_output" 1
|
|
fail "objcopy ($testname)"
|
|
} else {
|
|
pass "objcopy ($testname)"
|
|
}
|
|
|
|
set testname "objcopy decompress debug sections in archive with zlib-gabi"
|
|
set got [binutils_run $OBJCOPY "--decompress-debug-sections ${libfile}gabi.a ${copyfile}gabi.a"]
|
|
if ![string match "" $got] then {
|
|
fail "objcopy ($testname)"
|
|
} else {
|
|
set got [remote_exec host "$READELF -S --wide ${copyfile}gabi.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 with zlib-gabi"
|
|
set got [binutils_run $OBJCOPY "--compress-debug-sections=zlib-gabi ${copyfile}gabi.a ${compressedcopyfile}gabi.a"]
|
|
if ![string match "" $got] then {
|
|
fail "objcopy ($testname)"
|
|
} else {
|
|
set got [remote_exec host "$OBJDUMP -W ${compressedcopyfile}gabi.a" "" "/dev/null" "tmpdir/libdw2-compressedgabi.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-compressedgabi.out $srcdir/$subdir/libdw2-compressedgabi.out] } then {
|
|
fail "$testname"
|
|
} else {
|
|
pass "$testname"
|
|
}
|
|
}
|
|
|
|
set testname "objdump compress debug sections 3 with zlib-gabi"
|
|
set got [remote_exec host "$OBJDUMP -W ${compressedfile3}gabi.o" "" "/dev/null" "objdump.out"]
|
|
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
|
|
fail "$testname"
|
|
send_log "$got\n"
|
|
}
|
|
if { [regexp_diff objdump.out $srcdir/$subdir/dw2-3gabi.W] } then {
|
|
fail "$testname"
|
|
} else {
|
|
pass "$testname"
|
|
}
|
|
|
|
proc convert_test { testname as_flags objcop_flags } {
|
|
global srcdir
|
|
global subdir
|
|
global testfile3
|
|
global copyfile
|
|
global OBJCOPY
|
|
global OBJDUMP
|
|
|
|
if { ![binutils_assemble_flags $srcdir/$subdir/dw2-3.S ${testfile3}.o "$as_flags"] } then {
|
|
unresolved "$testname"
|
|
return
|
|
}
|
|
|
|
set got [binutils_run $OBJCOPY "$objcop_flags ${testfile3}.o ${copyfile}.o"]
|
|
if ![string match "" $got] then {
|
|
fail "objcopy ($testname)"
|
|
return
|
|
}
|
|
|
|
set got [remote_exec host "$OBJDUMP -W ${copyfile}.o" "" "/dev/null" "objdump.out"]
|
|
|
|
if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
|
|
fail "$testname (reason: unexpected output)"
|
|
send_log $got
|
|
send_log "\n"
|
|
return
|
|
}
|
|
|
|
if { [regexp_diff objdump.out $srcdir/$subdir/dw2-3.W] } then {
|
|
fail "$testname"
|
|
} else {
|
|
pass "$testname"
|
|
}
|
|
}
|
|
|
|
if { ([istarget "x86_64-*-elf*"]
|
|
|| [istarget "x86_64-*-linux*"]) } {
|
|
set testname "Convert x86-64 object with zlib-gabi to x32 (1)"
|
|
convert_test "$testname" "--compress-debug-sections=zlib-gabi --64" "-O elf32-x86-64"
|
|
|
|
set testname "Convert x86-64 object with zlib-gabi to x32 (2)"
|
|
convert_test "$testname" "--compress-debug-sections=zlib-gabi --64" "-O elf32-x86-64 --compress-debug-sections=zlib-gnu"
|
|
|
|
set testname "Convert x86-64 object with zlib-gabi to x32 (3)"
|
|
convert_test "$testname" "--compress-debug-sections=zlib-gabi --64" "-O elf32-x86-64 --decompress-debug-sections"
|
|
|
|
set testname "Convert x86-64 object with zlib-gnu to x32 (1)"
|
|
convert_test "$testname" "--compress-debug-sections=zlib-gnu --64" "-O elf32-x86-64"
|
|
|
|
set testname "Convert x86-64 object with zlib-gnu to x32 (2)"
|
|
convert_test "$testname" "--compress-debug-sections=zlib-gnu --64" "-O elf32-x86-64 --compress-debug-sections=zlib-gabi"
|
|
|
|
set testname "Convert x86-64 object with zlib-gnu to x32 (3)"
|
|
convert_test "$testname" "--compress-debug-sections=zlib-gnu --64" "-O elf32-x86-64 --decompress-debug-sections"
|
|
|
|
set testname "Convert x86-64 object to x32 (1)"
|
|
convert_test "$testname" "--nocompress-debug-sections --64" "-O elf32-x86-64"
|
|
|
|
set testname "Convert x86-64 object to x32 (2)"
|
|
convert_test "$testname" "--nocompress-debug-sections --64" "-O elf32-x86-64 --compress-debug-sections=zlib-gabi"
|
|
|
|
set testname "Convert x86-64 object to x32 (3)"
|
|
convert_test "$testname" "--nocompress-debug-sections --64" "-O elf32-x86-64 --compress-debug-sections=zlib-gnu"
|
|
|
|
|
|
set testname "Convert x32 object with zlib-gabi to x86-64 (1)"
|
|
convert_test "$testname" "--compress-debug-sections=zlib-gabi --x32" "-O elf64-x86-64"
|
|
|
|
set testname "Convert x32 object with zlib-gabi to x86-64 (2)"
|
|
convert_test "$testname" "--compress-debug-sections=zlib-gabi --x32" "-O elf64-x86-64 --compress-debug-sections=zlib-gnu"
|
|
|
|
set testname "Convert x32 object with zlib-gabi to x86-64 (3)"
|
|
convert_test "$testname" "--compress-debug-sections=zlib-gabi --x32" "-O elf64-x86-64 --decompress-debug-sections"
|
|
|
|
set testname "Convert x32 object with zlib-gnu to x86-64 (1)"
|
|
convert_test "$testname" "--compress-debug-sections=zlib-gnu --x32" "-O elf64-x86-64"
|
|
|
|
set testname "Convert x32 object with zlib-gnu to x86-64 (2)"
|
|
convert_test "$testname" "--compress-debug-sections=zlib-gnu --x32" "-O elf64-x86-64 --compress-debug-sections=zlib-gabi"
|
|
|
|
set testname "Convert x32 object with zlib-gnu to x86-64 (3)"
|
|
convert_test "$testname" "--compress-debug-sections=zlib-gnu --x32" "-O elf64-x86-64 --decompress-debug-sections"
|
|
|
|
set testname "Convert x32 object to x86-64 (1)"
|
|
convert_test "$testname" "--nocompress-debug-sections --x32" "-O elf64-x86-64"
|
|
|
|
set testname "Convert x32 object to x86-64 (2)"
|
|
convert_test "$testname" "--nocompress-debug-sections --x32" "-O elf64-x86-64 --compress-debug-sections=zlib-gabi"
|
|
|
|
set testname "Convert x32 object to x86-64 (3)"
|
|
convert_test "$testname" "--nocompress-debug-sections --x32" "-O elf64-x86-64 --compress-debug-sections=zlib-gnu"
|
|
}
|