# Copyright (C) 1988-2014 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 "sparc*-sun-solaris2*"] { set file_string [exec file "linkage-x.o"] if [ string match "*64*" $file_string ] { set native_cflags "-xarch=v9" } } if {[istarget "i?86*-*-solaris2*"] || [istarget "x86_64-*-solaris2.1\[0-9\]*"]} { set file_string [exec file "linkage-x.o"] if [ string match "*64*" $file_string ] { set native_cflags "-xarch=amd64" } } 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 "i*86-*-linux*"] || [istarget "i*86-*-gnu*"] || [istarget "x86_64-*-linux*"]} then { set file_string [exec file "linkage-x.o"] if [ string match "*32-bit*" $file_string ] { set native_cflags "-m32" } if [ string match "*64-bit*" $file_string ] { set native_cflags "-m64" } } 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 "powerpc*-*-darwin*"] { set file_string [exec file "linkage-x.o"] if [ string match "*ppc64" $file_string ] { set native_cflags "-m64" } elseif [ string match "*ppc" $file_string ] { set native_cflags "-m32" } } elseif [istarget "tilegx-*-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 "*86*-*-darwin*"] { set file_string [exec file "linkage-x.o"] if [ string match "*64*" $file_string ] { set native_cflags "-m64" } elseif [ string match "*i386" $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" } }