From fe804fc24fd09a38462722bafb448bc5e0fc4b62 Mon Sep 17 00:00:00 2001 From: nickc Date: Fri, 5 Nov 1999 10:38:01 +0000 Subject: [PATCH] Create proc to test for alias attribute support from targets. Use this test to disable ecos tests for alias support if the target does not support them. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30415 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 13 +++++ gcc/testsuite/gcc.dg/special/ecos.exp | 39 ++++---------- gcc/testsuite/lib/target-supports.exp | 96 +++++++++++++++++++++++++++++++++++ 3 files changed, 120 insertions(+), 28 deletions(-) create mode 100644 gcc/testsuite/lib/target-supports.exp diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1f003d43f2b..eef48413fe7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,18 @@ 1999-11-05 Nick Clifton + * lib/target-supports.exp: New file: Provide procs to test for + features supported by the target. + (check_weak_available): Moved here from ecos.exp. + (check_alias_available): New proc: Determine of the target + toolchain supports the alias attribute. + + * gcc.dg/special/ecos.exp: Move check_weak_available to + target-supports.exp. + (alias-1.c): Only perform the test if the target supports + aliases. + (wkali-1.c): Only perform the test if the target supports + aliases. + * gcc.dg/990506-0.c: Expect error messages from cross targets as well as native targets. diff --git a/gcc/testsuite/gcc.dg/special/ecos.exp b/gcc/testsuite/gcc.dg/special/ecos.exp index f1a5f79904d..f944de92c3f 100644 --- a/gcc/testsuite/gcc.dg/special/ecos.exp +++ b/gcc/testsuite/gcc.dg/special/ecos.exp @@ -32,32 +32,7 @@ load_lib gcc-dg.exp ############################### # proc check_weak_available { } ############################### - -# weak symbols are only supported in some configs/object formats -# this proc returns 1 if they're support, 0 if they're not, or -1 if unsure - -proc check_weak_available { } { - global target_cpu - - # All mips targets should support it - - if { [ string first "mips" $target_cpu ] >= 0 } { - return 1 - } - - # ELF and ECOFF support it. a.out does with gas/gld but may also with - # other linkers, so we should try it - - set objformat [gcc_target_object_format] - - switch $objformat { - elf { return 1 } - ecoff { return 1 } - a.out { return 1 } - unknown { return -1 } - default { return 0 } - } -} +# has been moved to: gcc/testsuite/lib/target-supports.exp ########## # weak-1.c @@ -111,7 +86,11 @@ if { [ check_weak_available ] == 1 } { ########### dg-init -dg-runtest "$srcdir/$subdir/alias-1.c" "" "" +switch [check_alias_available "$srcdir/$subdir/alias-1.c"] { + yes { dg-runtest "$srcdir/$subdir/alias-1.c" "" "" } + no { unsupported "alias-1.c" } + default { fail "alias-1.c" } +} dg-finish ########### @@ -119,7 +98,11 @@ dg-finish ########### dg-init -dg-runtest "$srcdir/$subdir/wkali-1.c" "" "" +switch [check_alias_available "$srcdir/$subdir/wkali-1.c"] { + yes { dg-runtest "$srcdir/$subdir/wkali-1.c" "" "" } + no { unsupported "wkali-1.c" } + default { fail "wkali-1.c" } +} dg-finish ########### diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp new file mode 100644 index 00000000000..35f1188035a --- /dev/null +++ b/gcc/testsuite/lib/target-supports.exp @@ -0,0 +1,96 @@ +# Copyright (C) 1999 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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# gcc-patches@gcc.gnu.org + +# This file defines procs for determining features supported by the target. + +############################### +# proc check_weak_available { } +############################### + +# weak symbols are only supported in some configs/object formats +# this proc returns 1 if they're supported, 0 if they're not, or -1 if unsure + +proc check_weak_available { } { + global target_cpu + + # All mips targets should support it + + if { [ string first "mips" $target_cpu ] >= 0 } { + return 1 + } + + # ELF and ECOFF support it. a.out does with gas/gld but may also with + # other linkers, so we should try it + + set objformat [gcc_target_object_format] + + switch $objformat { + elf { return 1 } + ecoff { return 1 } + a.out { return 1 } + unknown { return -1 } + default { return 0 } + } +} + +############################### +# proc check_alias_available { } +############################### + +# Determine if the target toolchain supports the alias attribute. +# Parameter is the pathname of a file that can be used to test the alias support. +# Returns yes if it does. +# Returns no if it does not. +# Returns dontknow if something went wrong +# For an example of the use of this function, see gcc.dg/special/ecos.exp + +proc check_alias_available { testfile } { + global alias_available_saved + + if [info exists alias_available_saved] { + verbose "check_alias_available returning saved $alias_available_saved" 2 + } else { + verbose "check_alias_available compiling testfile $testfile" 2 + set lines [gcc_target_compile $testfile "tmp.o" object ""] + + if [string match "" $lines] then { + # No error messages, everything is OK. + set alias_available_saved yes + } else { + if [regexp "alias definitions not supported" $lines] { + verbose "check_alias_available target does not support aliases" 2 + + set objformat [gcc_target_object_format] + + if { $objformat == "elf" } { + verbose "check_alias_available but target uses ELF format, so it ought to" 2 + set alias_available_saved dontknow + } else { + set alias_available_saved no + } + } else { + set alias_available_saved dontknow + } + } + + verbose "check_alias_available returning $alias_available_saved" 2 + } + + return $alias_available_saved +} -- 2.11.4.GIT