# Copyright (C) 1988, 90-96, 1997, 2000, 2001, 2002, 2007 Free Software Foundation, Inc. # 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 GCC; see the file COPYING3. If not see # . # This file used to be gcc.c-torture/special/special.exp, which # was written by Rob Savoye. (rob@cygnus.com) # All the other tests driven by that file have since been moved elsewhere. if { [isnative] && ![is_remote host] } then { set lines [gcc_target_compile "$srcdir/$subdir/linkage-x.c" "linkage-x.o" object {additional_flags="-w"}] if ![string match "" $lines] then { fail "$subdir/linkage.c compile" } else { # This is a completely bogus test. Sorry. # Need to ensure ABI for native compiler matches gcc set native_cflags "" if [istarget "mips-sgi-irix6*"] { set file_string [exec file "linkage-x.o"] if [ string match "*64*" $file_string ] { set native_cflags "-64" } if [ string match "*ELF 32*" $file_string ] { set native_cflags "-32" } if [ string match "*N32*" $file_string ] { set native_cflags "-n32" } } if [istarget "mips-sgi-iris6*o32" ] { set native_cflags "-32" } if [istarget "sparc*-sun-solaris2*"] { set file_string [exec file "linkage-x.o"] if [ string match "*64*" $file_string ] { set native_cflags "-xarch=v9" } } if [istarget "s390*-*-linux*"] { set file_string [exec file "linkage-x.o"] if [ string match "*32-bit*" $file_string ] { set native_cflags "-m31" } if [ string match "*64-bit*" $file_string ] { set native_cflags "-m64" } } elseif [istarget "x86_64-*-linux*"] { set file_string [exec file "linkage-x.o"] if [ string match "*32-bit*" $file_string ] { set native_cflags "-m32" } } elseif [istarget "*-hp-hpux*"] { set file_string [exec file "linkage-x.o"] if [ string match "*ELF-64*" $file_string ] { set native_cflags "+DD64" } } elseif [istarget "powerpc*-*-linux*"] { set file_string [exec file "linkage-x.o"] if [ string match "*64-bit*" $file_string ] { set native_cflags "-m64" } elseif [ string match "*32-bit*" $file_string ] { set native_cflags "-m32" } } elseif [istarget "*-*-darwin*"] { set file_string [exec file "linkage-x.o"] if [ string match "*64-bit*" $file_string ] { set native_cflags "-m64" } elseif [ string match "*32-bit*" $file_string ] { set native_cflags "-m32" } } if [file exists "linkage-y.o"] then { file delete "linkage-y.o" } send_log "cc -c $native_cflags $srcdir/$subdir/linkage-y.c >&/dev/null\n" catch { exec cc -c $native_cflags "$srcdir/$subdir/linkage-y.c" >&/dev/null } if ![file exists "linkage-y.o"] then { send_log "c89 -c $native_cflags $srcdir/$subdir/linkage-y.c >&/dev/null\n" catch { exec c89 -c $native_cflags "$srcdir/$subdir/linkage-y.c" >&/dev/null } } if [file exists "linkage-y.o"] then { set lines [gcc_target_compile "linkage-y.o linkage-x.o" "linkage.exe" executable ""] if [string match "" $lines] then { pass "$subdir/linkage.c link" file delete "linkage.exe" } else { fail "$subdir/linkage.c link" } file delete "linkage-y.o" } else { unsupported "$subdir/linkage.c native compile failed" } file delete "linkage-x.o" } }