# Expect script for LD cdtest Tests# Copyright 1993, 1994, 1995, 1997, 2001, 2004# Free Software Foundation, Inc.## This file 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 2 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.## Written by Jeffrey Wheat (cassidy@cygnus.com)# Rewritten by Ian Lance Taylor (ian@cygnus.com)## Make sure that constructors are handled correctly.set test1 "cdtest"set test2 "cdtest with -Ur"# This test requires running the executable generated by ld.if ![isnative] {return}if { [which $CXX] == 0 } {untested $test1untested $test2return}if { ![ld_compile "$CXX $CXXFLAGS -fno-exceptions" $srcdir/$subdir/cdtest-foo.cc tmpdir/cdtest-foo.o]|| ![ld_compile "$CXX $CXXFLAGS -fno-exceptions" $srcdir/$subdir/cdtest-bar.cc tmpdir/cdtest-bar.o]|| ![ld_compile "$CXX $CXXFLAGS -fno-exceptions" $srcdir/$subdir/cdtest-main.cc tmpdir/cdtest-main.o] } {unresolved $test1unresolved $test2return}set expected_output "$srcdir/$subdir/cdtest.dat"if ![ld_link $ld tmpdir/cdtest {tmpdir/cdtest-foo.o tmpdir/cdtest-bar.o tmpdir/cdtest-main.o}] {fail $test1} else {send_log "tmpdir/cdtest >tmpdir/cdtest.out\n"verbose "tmpdir/cdtest >tmpdir/cdtest.out"catch "exec tmpdir/cdtest >tmpdir/cdtest.out" exec_outputif ![string match "" $exec_output] then {send_log "$exec_output\n"verbose "$exec_output" 1fail $test1} else {send_log "diff tmpdir/cdtest.out $expected_output\n"verbose "diff tmpdir/cdtest.out $expected_output"catch "exec diff tmpdir/cdtest.out $expected_output" exec_outputset exec_output [prune_warnings $exec_output]if ![string match "" $exec_output] then {send_log "$exec_output\n"verbose "$exec_output" 1send_log "Checking against Named Return Value optimization\n"verbose "Checking against Named Return Value optimization" 1set expected_output "$srcdir/$subdir/cdtest-nrv.dat"send_log "diff tmpdir/cdtest.out $expected_output\n"verbose "diff tmpdir/cdtest.out $expected_output"catch "exec diff tmpdir/cdtest.out $expected_output" exec_outputset exec_output [prune_warnings $exec_output]}if [string match "" $exec_output] then {pass $test1} else {send_log "$exec_output\n"verbose "$exec_output" 1fail $test1}}}if ![ld_relocate $ld tmpdir/cdtest.o {-Ur tmpdir/cdtest-foo.o tmpdir/cdtest-bar.o tmpdir/cdtest-main.o}] {fail $test2} else {if ![ld_link $ld tmpdir/cdtest tmpdir/cdtest.o] {fail $test2} else {send_log "tmpdir/cdtest >tmpdir/cdtest.out\n"verbose "tmpdir/cdtest >tmpdir/cdtest.out"catch "exec tmpdir/cdtest >tmpdir/cdtest.out" exec_outputif ![string match "" $exec_output] then {send_log "$exec_output\n"verbose "$exec_output" 1fail $test2} else {send_log "diff tmpdir/cdtest.out $expected_output\n"verbose "diff tmpdir/cdtest.out $expected_output"catch "exec diff tmpdir/cdtest.out $expected_output" exec_outputset exec_output [prune_warnings $exec_output]if [string match "" $exec_output] then {pass $test2} else {send_log "$exec_output\n"verbose "$exec_output" 1fail $test2}}}}