Commit 71152e6d by Nick Clifton Committed by Nick Clifton

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.

From-SVN: r30415
parent 8c36698e
1999-11-05 Nick Clifton <nickc@cygnus.com>
* 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.
......
......@@ -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
###########
......
# 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
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment