⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 selective.exp

📁 基于4个mips核的noc设计
💻 EXP
字号:
# Expect script for LD selective linking tests#   Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.## This file 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.## Written by Catherine Moore (clm@cygnus.com)# Make sure that constructors are handled correctly.# COFF based ports do not support selective linkingif {[istarget "*-*-coff"]} {    return}if {[istarget "*-*-pe"]} {    return}# selective linking is not yet implemented for 68hc11/68hc12if {[istarget "m6811-*-*"] || [istarget "m6812-*-*"]} {    return}# List contains test-items with three items followed by four lists:# 1:name 2:test-type (CC or C++; add as needed) 3:filename 4:ld-flags# 5:must-have-symbols 6:must-not-have-symbols 7:xfail-targets.## If a must(-not)-have symbol is a list, then that list must have two# items; the symbol name and a value the symbol must (not) have.## Note: ld_nm trims leading `_' from _start## FIXME: Instead of table, read settings from each source-file.set seltests {  {selective1 C 1.c {} {} {dropme1 dropme2} {}}  {selective2 C 2.c {} {} {foo} {mips*-*}}  {selective3 C 2.c {-u foo} {foo} {{foo 0}} {mips*-*}}  {selective4 C++ 3.cc {} {start foo__1A foo__1B} {bar__1A} {mips*-*}}  {selective5 C++ 4.cc {} {} {foo__1B foo__1A} {mips*-*}}  {selective6 C++ 5.cc {} {} {foo__1B foo__1A dropme1__Fv dropme2__Fv} {*-*-*}}}set cflags "-w -O -ffunction-sections -fdata-sections"set cxxflags "-fvtable-gc -fno-exceptions -fno-rtti"set ldflags "--gc-sections -Bstatic"# If we don't have g++ for the target, mark all tests as untested.if { [which $CXX] == 0 } {    foreach testitem $seltests {	untested "[lindex $testitem 0]"    }    return}foreach testitem $seltests {    set testname [lindex $testitem 0]    set testtype [lindex $testitem 1]    set testfile [lindex $testitem 2]    set objfile "tmpdir/[file rootname $testfile].o"    set ldfile "tmpdir/[file rootname $testfile].x"    set failed 0    set ldargs [lindex $testitem 3]    set mustsyms [lindex $testitem 4]    set mustnotsyms [lindex $testitem 5]    set xfails [lindex $testitem 6]    foreach xfail_target $xfails {	setup_xfail $xfail_target    }    # It's either C or C++ at the moment.    if { $testtype == "C++" } {	set testflags "$cflags $cxxflags"    } {	set testflags "$cflags"    }    # Note that we do not actually *use* CXX; we just add cxxflags for C++    # tests.  It might have been a buglet originally; now I think better    # leave as is.    if { ![ld_compile "$CC $testflags" $srcdir/$subdir/$testfile $objfile] } {	unresolved $testname	return    }    # V850 targets need libgcc.a    if [istarget v850*-*-elf] {	set objfile "$objfile -L ../gcc -lgcc"    }        # m6811/m6812 code has references to soft registers.    if {[istarget m6811-*-*] || [istarget m6812-*-*]} {	set objfile "$objfile --defsym _.frame=0 --defsym _.d1=0"	set objfile "$objfile --defsym _.d2=0"    }    if ![ld_simple_link $ld $ldfile "$ldflags [join $ldargs] $objfile"] {	fail $testname	continue    }    if ![ld_nm $nm $ldfile] {	unresolved $testname	continue    }    # Check each mandated symbol and optionally mandated values.     foreach mustsym $mustsyms {	if { [llength [concat $mustsym]] == 1 } {	    if { ![info exists nm_output($mustsym)] } {		verbose -log "$testname: missing $mustsym"		fail $testname		set failed 1		break	    }	} {	    set mustsymname [lindex $mustsym 0]	    set mustsymvalue [lindex $mustsym 1]	    if { ![info exists nm_output($mustsymname)] } {		verbose -log "$testname: missing $mustsymname"		fail $testname		set failed 1		break	    } {		if { $nm_output($mustsymname) != $mustsymvalue } {		    verbose -log "$testname: $mustsymname != $mustsymvalue"		    verbose -log "is instead $nm_output($mustsymname)"		    fail $testname		    set failed 1		    break		}	    }	}    }    if { $failed != 0 } {	continue    }    # Check each unwanted symbol, or that symbols do not have specific    # values.    foreach mustnotsym $mustnotsyms {	if { [llength [concat $mustnotsym]] == 1 } {	    if { [info exists nm_output($mustnotsym)] } {		verbose -log "$testname: $mustnotsym == $nm_output($mustnotsym)"		fail $testname		set failed 1		break	    }	} {	    set mustnotsymname [lindex $mustnotsym 0]	    set mustnotsymvalue [lindex $mustnotsym 1]	    if { [info exists nm_output($mustnotsymname)] \		    && $nm_output($mustnotsymname) == $mustnotsymvalue} {		verbose -log "$testname: $mustnotsymname == $mustnotsymvalue"		fail $testname		set failed 1		break	    }	}    }    if { $failed == 0 } {	pass $testname    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -