1 # Expect script for LD section checks tests 2 # Copyright (C) 1999-2014 Free Software Foundation, Inc. 3 # 4 # This file is part of the GNU Binutils. 5 # 6 # This program is free software; you can redistribute it and/or modify 7 # it under the terms of the GNU General Public License as published by 8 # the Free Software Foundation; either version 3 of the License, or 9 # (at your option) any later version. 10 # 11 # This program is distributed in the hope that it will be useful, 12 # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 # GNU General Public License for more details. 15 # 16 # You should have received a copy of the GNU General Public License 17 # along with this program; if not, write to the Free Software 18 # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 19 # MA 02110-1301, USA. 20 # 21 # Written by Nick Clifton (nickc (at) cygnus.com) 22 23 proc section_check {} { 24 global ld_flags 25 global as 26 global ld 27 global srcdir 28 global subdir 29 30 # The usage of .lcomm in asm.s is incompatible with ia64 and ppc coff. 31 if { [istarget ia64-*-*] 32 || [istarget powerpc*-*-aix*] 33 || [istarget powerpc-*-beos*] 34 || [istarget rs6000-*-*] } { 35 return 36 } 37 set test "check sections 1" 38 39 set ldflags "--check-sections -e foo" 40 41 if { ![ld_assemble $as $srcdir/$subdir/asm.s tmpdir/asm.o]} { 42 unresolved $test 43 return 44 } 45 46 if ![ld_simple_link $ld tmpdir/asm.x "$ldflags tmpdir/asm.o"] { 47 fail $test 48 } else { 49 pass $test 50 } 51 52 set test "check sections 2" 53 54 # Change the linker flags so that our "buggy" linker 55 # script is used. 56 set ldflags "--check-sections -T $srcdir/$subdir/script -e foo" 57 58 # Perform the equivalent of invoking ld_simple_link 59 # except that we need to massage the output further. 60 61 set exec_output [run_host_cmd "$ld" "-o tmpdir/asm.x $ldflags tmpdir/asm.o"] 62 set exec_output [prune_warnings $exec_output] 63 64 # Make sure that we got some output from the linker 65 if [string match "" $exec_output] then { 66 fail $test 67 } 68 69 # Now remove our expected error message 70 regsub -all ".*: section .data .* overlaps section .text .*" $exec_output "" exec_output 71 72 # And check to see if anything else, (unexpected) was left 73 if [string match "" $exec_output] then { 74 pass $test 75 } else { 76 verbose -log "Unexpected linker message(s): $exec_output" 77 fail $test 78 } 79 } 80 81 section_check 82