X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=ld%2Ftestsuite%2Fld-scripts%2Fscript.exp;h=41432f951eac3fc5a0a9372ee9db5826152abd3b;hb=9933d1914983c250e1d082e47af68983dd8020a6;hp=94c5d9b7a39fc97bb5981df18e3f666bf22654af;hpb=74459f0e3ead9efad8aa29f2545b53e9c5f9988d;p=binutils-gdb.git diff --git a/ld/testsuite/ld-scripts/script.exp b/ld/testsuite/ld-scripts/script.exp index 94c5d9b7a39..41432f951ea 100644 --- a/ld/testsuite/ld-scripts/script.exp +++ b/ld/testsuite/ld-scripts/script.exp @@ -1,5 +1,23 @@ # Test basic linker script functionality # By Ian Lance Taylor, Cygnus Support +# Copyright 1999-2013 Free Software Foundation, Inc. +# +# This file is part of the GNU Binutils. +# +# 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. set testname "script" @@ -13,45 +31,65 @@ proc check_script { } { global testname global nm_output - if ![ld_nm $nm tmpdir/script] { + if ![ld_nm $nm "" tmpdir/script] { unresolved $testname + return + } + + if {![info exists nm_output(text_start)] \ + || ![info exists nm_output(text_end)] \ + || ![info exists nm_output(data_start)] \ + || ![info exists nm_output(data_end)]} { + send_log "bad output from nm\n" + verbose "bad output from nm" + fail $testname + return + } + + set passes 1 + set text_end 0x104 + set data_end 0x1004 + + if [istarget *c4x*-*-*] then { + set text_end 0x101 + set data_end 0x1001 + } + + if [istarget *c54x*-*-*] then { + set text_end 0x102 + set data_end 0x1002 + } + + if {$nm_output(text_start) != 0x100} { + send_log "text_start == $nm_output(text_start)\n" + verbose "text_start == $nm_output(text_start)" + set passes 0 + } + + if {$nm_output(text_end) < $text_end \ + || $nm_output(text_end) > 0x110} { + send_log "text_end == $nm_output(text_end)\n" + verbose "text_end == $nm_output(text_end)" + set passes 0 + } + + if {$nm_output(data_start) != 0x1000} { + send_log "data_start == $nm_output(data_start)\n" + verbose "data_start == $nm_output(data_start)" + set passes 0 + } + + if {$nm_output(data_end) < $data_end \ + || $nm_output(data_end) > 0x1010} { + send_log "data_end == $nm_output(data_end)\n" + verbose "data_end == $nm_output(data_end)" + set passes 0 + } + + if { $passes } { + pass $testname } else { - if {![info exists nm_output(text_start)] \ - || ![info exists nm_output(text_end)] \ - || ![info exists nm_output(data_start)] \ - || ![info exists nm_output(data_end)]} { - send_log "bad output from nm\n" - verbose "bad output from nm" - fail $testname - } else { - set text_end 0x104 - set data_end 0x1004 - if [istarget *c54x*-*-*] then { - set text_end 0x102 - set data_end 0x1002 - } - if {$nm_output(text_start) != 0x100} { - send_log "text_start == $nm_output(text_start)\n" - verbose "text_start == $nm_output(text_start)" - fail $testname - } else { if {$nm_output(text_end) < $text_end \ - || $nm_output(text_end) > 0x110} { - send_log "text_end == $nm_output(text_end)\n" - verbose "text_end == $nm_output(text_end)" - fail $testname - } else { if {$nm_output(data_start) != 0x1000} { - send_log "data_start == $nm_output(data_start)\n" - verbose "data_start == $nm_output(data_start)" - fail $testname - } else { if {$nm_output(data_end) < $data_end \ - || $nm_output(data_end) > 0x1010} { - send_log "data_end == $nm_output(data_end)\n" - verbose "data_end == $nm_output(data_end)" - fail $testname - } else { - pass $testname - } } } } - } + fail $testname } } @@ -59,9 +97,9 @@ proc check_script { } { set flags "" if {[istarget "*-*-pe*"] \ || [istarget "*-*-cygwin*"] \ - || [istarget "*-*-mingw32*"] \ + || [istarget "*-*-mingw*"] \ || [istarget "*-*-winnt*"] \ - || [istarget "*-*-nt*"] \ + || [istarget "*-*-nt"] \ || [istarget "*-*-interix*"] } then { set flags "--image-base 0" } @@ -79,3 +117,19 @@ if ![ld_simple_link $ld tmpdir/script "$flags -c $srcdir/$subdir/scriptm.t"] { } else { check_script } + +set testname "MEMORY" + +if ![ld_simple_link $ld tmpdir/script "$flags -T $srcdir/$subdir/memory.t tmpdir/script.o"] { + fail $testname +} else { + check_script +} + +set test_script_list [lsort [glob $srcdir/$subdir/region-alias-*.t]] + +foreach test_script $test_script_list { + run_dump_test [string range $test_script 0 end-2] +} + +run_dump_test "align-with-input"