diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2009-08-10 21:38:36 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2009-08-10 21:38:36 +0000 |
commit | e39e47bd251f5e5958750244d01eeb55b5e8bb1e (patch) | |
tree | a4e67e0d9c225a7fc707a0ce0477eed5e271b7d4 /ld | |
parent | 0561d57c86bcec2cb9203d682a636928a6ea1352 (diff) | |
download | fsf-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')
-rw-r--r-- | ld/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-i386/i386.exp | 48 |
2 files changed, 54 insertions, 0 deletions
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 <jan.kratochvil@redhat.com> + + 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 <nathan@codesourcery.com> * 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*"] |