aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-i386
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2009-08-10 21:38:36 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2009-08-10 21:38:36 +0000
commite39e47bd251f5e5958750244d01eeb55b5e8bb1e (patch)
treea4e67e0d9c225a7fc707a0ce0477eed5e271b7d4 /ld/testsuite/ld-i386
parent0561d57c86bcec2cb9203d682a636928a6ea1352 (diff)
downloadfsf-binutils-gdb-e39e47bd251f5e5958750244d01eeb55b5e8bb1e.zip
fsf-binutils-gdb-e39e47bd251f5e5958750244d01eeb55b5e8bb1e.tar.gz
fsf-binutils-gdb-e39e47bd251f5e5958750244d01eeb55b5e8bb1e.tar.bz2
bfd/
Fix go32 stub preservation by objcopy. * coff-stgo32.c (adjust_filehdr_in_post): Use bfd_malloc. (go32_stubbed_coff_bfd_copy_private_bfd_data): Optionally allocate OBFD go32stub. ld/testsuite/ Test go32 stub preservation by objcopy. * ld-i386/i386.exp (go32 stub, go32 stub patch the source) (go32 stub objcopy, go32 stub comparison after objcopy): New.
Diffstat (limited to 'ld/testsuite/ld-i386')
-rw-r--r--ld/testsuite/ld-i386/i386.exp48
1 files changed, 48 insertions, 0 deletions
diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
index df2fcfc..53e4329 100644
--- a/ld/testsuite/ld-i386/i386.exp
+++ b/ld/testsuite/ld-i386/i386.exp
@@ -49,6 +49,54 @@ if {[istarget "i?86-*-vxworks"]} {
run_dump_test "vxworks1-static"
}
+if [istarget "*-*-go32*"] {
+ run_ld_link_tests {{"go32 stub" "" "" {zero.s} {} "go32stub"}}
+
+ set src "tmpdir/go32stub"
+ set dest "tmpdir/go32stub-copy"
+
+ set test "go32 stub patch the source"
+ set fi [open $src r+]
+ fconfigure $fi -translation binary
+ if {[read $fi 2] != "MZ"} {
+ fail $test
+ } else {
+ pass $test
+ seek $fi 0x40
+ puts -nonewline $fi "objcopy-test-go32stub"
+ }
+ close $fi
+
+ set test "go32 stub objcopy"
+ set status [remote_exec build $OBJCOPY "$OBJCOPYFLAGS $src $dest"]
+ set exec_output [lindex $status 1]
+ set exec_output [prune_warnings $exec_output]
+ if [string match "" $exec_output] then {
+ pass $test
+ } else {
+ send_log "$exec_output\n"
+ verbose "$exec_output" 1
+ fail $test
+ }
+
+ # cmp would compare the whole files and some data after the initial exe
+ # stub could differ.
+ set test "go32 stub comparison after objcopy"
+ set fi [open $src]
+ fconfigure $fi -translation binary
+ set src_stub [read $fi 2048]
+ close $fi
+ set fi [open $dest]
+ fconfigure $fi -translation binary
+ set dest_stub [read $fi 2048]
+ close $fi
+ if {$src_stub == $dest_stub} {
+ pass $test
+ } else {
+ fail $test
+ }
+}
+
if { !([istarget "i?86-*-elf*"]
|| ([istarget "i?86-*-linux*"]
&& ![istarget "*-*-*aout*"]