From e39e47bd251f5e5958750244d01eeb55b5e8bb1e Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Mon, 10 Aug 2009 21:38:36 +0000 Subject: 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. --- ld/testsuite/ChangeLog | 6 ++++++ ld/testsuite/ld-i386/i386.exp | 48 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) (limited to 'ld') diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 29457a6..25b52e5 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2009-08-10 Jan Kratochvil + + 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. + 2009-08-10 Nathan Sidwell * ld-powerpc/relax.s: New. 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*"] -- cgit v1.1