mips.exp
来自「linux下编程用 编译软件」· EXP 代码 · 共 187 行
EXP
187 行
# Copyright (C) 1997 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # GCC testsuite that uses the `dg.exp' driver.# Exit immediately if this isn't a MIPS target.if ![istarget mips*-*-*] { return}# Load support procs.load_lib gcc-dg.exp# Find out which target is selected by the default compiler flags.# Also remember which aspects of the target are forced on the command# line (as opposed to being overridable defaults).## $mips_isa: the ISA level specified by __mips# $mips_arch: the architecture specified by _MIPS_ARCH# $mips_mips16: true if MIPS16 mode is selected# $mips_mips64: true if 64-bit output is selected# $mips_float: "hard" or "soft"## $mips_forced_isa: true if the command line uses -march=* or -mips*# $mips_forced_abi: true if the command line uses -mabi=* or -mgp*# $mips_forced_float: true if the command line uses -mhard/soft-floatproc setup_mips_tests {} { global mips_isa global mips_arch global mips_mips16 global mips_mips64 global mips_float global mips_forced_isa global mips_forced_abi global mips_forced_float global compiler_flags global tool set src dummy[pid].c set f [open $src "w"] puts $f { int isa = __mips; const char *arch = _MIPS_ARCH; #ifdef __mips16 int mips16 = 1; #endif #ifdef __mips64 int mips64 = 1; #endif #ifdef __mips_hard_float const char *float = "hard"; #else const char *float = "soft"; #endif } close $f set output [${tool}_target_compile $src "" preprocess ""] file delete $src regexp {isa = ([^;]*)} $output dummy mips_isa regexp {arch = "([^"]*)} $output dummy mips_arch set mips_mips16 [regexp {mips16 = 1} $output] set mips_mips64 [regexp {mips64 = 1} $output] regexp {float = "([^"]*)} $output dummy mips_float set mips_forced_isa [regexp -- {(-mips|-march)} $compiler_flags] set mips_forced_abi [regexp -- {(-mgp|-mabi)} $compiler_flags] set mips_forced_float [regexp -- {-m(hard|soft)-float} $compiler_flags]}# Return true if command-line option FLAG forces 32-bit code.proc is_gp32_flag {flag} { switch -glob -- $flag { -march=mips32* - -mgp32 { return 1 } default { return 0 } }}# Like dg-options, but treats certain MIPS-specific options specially:## -mgp32# -march=mips32*# Force 32-bit code. Skip the test if the multilib flags force# a 64-bit ABI.## -mgp64# Force 64-bit code. Also force a 64-bit target architecture# if the other flags don't do so. Skip the test if the multilib# flags force a 32-bit ABI or a 32-bit architecture.## -mno-mips16# Skip the test for MIPS16 targets.## -march=*# -mips*# Select the target architecture. Skip the test for MIPS16 targets# or if the multilib flags force a different architecture.## -msoft-float# -mhard-float# Select the given floating-point mode. Skip the test if the# multilib flags force a different selection.proc dg-mips-options {args} { upvar dg-extra-tool-flags extra_tool_flags upvar dg-do-what do_what global mips_isa global mips_arch global mips_mips16 global mips_mips64 global mips_float global mips_forced_isa global mips_forced_abi global mips_forced_float set flags [lindex $args 1] set matches 1 # First handle the -mgp* options. Add an architecture option if necessary. foreach flag $flags { if {[is_gp32_flag $flag] && $mips_mips64} { if {$mips_forced_abi} { set matches 0 } else { append flags " -mabi=32" } } elseif {$flag == "-mgp64" && !$mips_mips64} { if {$mips_forced_abi} { set matches 0 } else { append flags " -mabi=o64" if {[lsearch -regexp $flags {^(-mips|-march)}] < 0} { append flags " -mips3" } } } } # Handle the other options. foreach flag $flags { if {$flag == "-mno-mips16"} { if {$mips_mips16} { set matches 0 } } elseif {[regexp -- {^-march=(.*)} $flag dummy arch]} { if {$mips_mips16 || ($arch != $mips_arch && $mips_forced_isa)} { set matches 0 } } elseif {[regexp -- {^-mips(.*)} $flag dummy isa] && $isa != 16} { if {$mips_mips16 || ($isa != $mips_isa && $mips_forced_isa)} { set matches 0 } } elseif {[regexp -- {^-m(hard|soft)-float} $flag dummy float]} { if {$mips_float != $float && $mips_forced_float} { set matches 0 } } } if {$matches} { set extra_tool_flags $flags } else { set do_what [list [lindex $do_what 0] "N" "P"] }}setup_mips_testsdg-initdg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.c]] "" ""dg-finish
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?