# Copyright (C) 1999, 2001 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 { if [regexp "only weak aliases are supported" $lines] { verbose "check_alias_available target supports only weak aliases" 2 set alias_available_saved no } else { set alias_available_saved dontknow } } } verbose "check_alias_available returning $alias_available_saved" 2 } return $alias_available_saved }