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

📄 libmudflap.exp

📁 Mac OS X 10.4.9 for x86 Source Code gcc 实现源代码
💻 EXP
字号:
# Copyright (C) 2001, 2002, 2003, 2004 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.  # Define libmudflap callbacks for dg.exp.# This file is a copy of libstdc++-v3's dejagnu driver, with minor changes.# Useful hook:  if ${hostname}_init exists, it will be called, almost# the last thing before testing begins.  This can be defined in, e.g.,# ~/.dejagnurc or $DEJAGNU.proc load_gcc_lib { filename } {    global srcdir    load_file $srcdir/../../gcc/testsuite/lib/$filename}load_lib mfdg.expload_lib libgloss.expload_gcc_lib target-libpath.expproc libmudflap-init { language } {    global env    global srcdir outdir blddir objdir tool_root_dir    global cxx cxxflags    global includes    global libs    global gluefile wrap_flags    global ld_library_path    switch $language {        "c" { set cxx [find_gcc] }        "c++" { set cxx [find_g++] }        default { error "bad language code $language"; return }    }    verbose -log "libmudflap-init $cxx"    set blddir [lookfor_file [get_multilibs] libmudflap]    set cxxblddir [lookfor_file [get_multilibs] libstdc++-v3]    set cxxflags_file "${cxxblddir}/scripts/testsuite_flags"    # By default, we assume we want to run program images.    global dg-do-what-default    set dg-do-what-default run    # set LD_LIBRARY_PATH so that libgcc_s, libstdc++ binaries can be found.    # locate libgcc.a so we don't need to account for different values of    # SHLIB_EXT on different platforms    set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a]    if {$gccdir != ""} {	set gccdir [file dirname $gccdir]    }    set ld_library_path "."    append ld_library_path ":${gccdir}"    append ld_library_path ":${cxxblddir}/src/.libs"    if {[is_remote host] == 0} {	foreach i "[exec ${gccdir}/xgcc --print-multi-lib]" {	    set mldir ""	    regexp -- "\[a-z0-9=/\.-\]*;" $i mldir	    set mldir [string trimright $mldir "\;@"]	    if { "$mldir" == "." } {		continue	    }	    if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] >= 1 } {		append ld_library_path ":${gccdir}/${mldir}"	    }	}    }    append ld_library_path ":${blddir}/.libs"    set libs "-L${blddir}/.libs"    set cxxflags "-ggdb3 -DDEBUG_ASSERT"    set includes "-I${srcdir} -I${srcdir}/.. -I.."    if {$language == "c++"} {        if {[file exists $cxxflags_file]} then {            set includes "${includes} [exec sh $cxxflags_file --build-includes]"            set cxxflags "${cxxflags} [exec sh $cxxflags_file --cxxflags]"            # c++ libs are included by --build-cxx below            set cxx "[exec sh $cxxflags_file --build-cxx]"        } else {            lappend libs "-L${cxxblddir}src/.libs"            lappend includes "-I../../libstdc++-v3/include"        }    }    global mfconfig_libs    global add_flags    append add_flags " $mfconfig_libs"    set_ld_library_path_env_vars    if [info exists env(LD_LIBRARY_PATH)] {	verbose -log "LD_LIBRARY_PATH = $env(LD_LIBRARY_PATH)"    }    if { [target_info needs_status_wrapper]!=""} {      file delete ${objdir}/testglue.o;      set gluefile ${objdir}/testglue.o;      set result [build_wrapper $gluefile];      if { $result != "" } {          set gluefile [lindex $result 0];          set wrap_flags [lindex $result 1];      } else {          unset gluefile      }    }}proc libmudflap-dg-test { prog do_what extra_tool_flags } {    # Set up the compiler flags, based on what we're going to do.    switch $do_what {	"preprocess" {	    set compile_type "preprocess"	    set output_file "[file rootname [file tail $prog]].i"	}	"compile" {	    set compile_type "assembly"	    set output_file "[file rootname [file tail $prog]].s"	}	"assemble" {	    set compile_type "object"	    set output_file "[file rootname [file tail $prog]].o"	}	"link" {	    set compile_type "executable"	    set output_file "./[file rootname [file tail $prog]].exe"	}	"run" {	    set compile_type "executable"	    # FIXME: "./" is to cope with "." not being in $PATH.	    # Should this be handled elsewhere?	    # YES.	    set output_file "./[file rootname [file tail $prog]].exe"	    # This is the only place where we care if an executable was	    # created or not.  If it was, dg.exp will try to run it.	    remote_file build delete $output_file;	}	default {	    perror "$do_what: not a valid dg-do keyword"	    return ""	}    }    set options ""    if { $extra_tool_flags != "" } {	lappend options "additional_flags=$extra_tool_flags"    }    global mfconfig_libs    lappend options "libs=$mfconfig_libs"    set comp_output [libmudflap_target_compile "$prog" "$output_file" "$compile_type" $options];    set comp_output [prune_gcc_output $comp_output ];    return [list $comp_output $output_file]}proc libmudflap_target_compile { source dest type options } {    global gluefile     global wrap_flags    global cxx    global cxxflags    global includes    global libs    global blddir    if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } {	lappend options "libs=${gluefile}"	lappend options "ldflags=${wrap_flags}"    }    set cxx_final $cxx    set cxxlibglossflags  [libgloss_link_flags]    set cxx_final [concat $cxx_final $cxxlibglossflags]    set cxx_final [concat $cxx_final $cxxflags]    set cxx_final [concat $cxx_final $includes]    set cxx_final [concat $cxx_final $libs]    lappend options "compiler=$cxx_final"    # Picks up the freshly-built testsuite library corresponding to the    # multilib under test.    lappend options "ldflags=-L${blddir}/testsuite"    return [target_compile $source $dest $type $options]}# A bit sloppy...  Returns a list of source files (full pathnames) to# compile.  We mimic the mkcheck script in that the first time this is run,# all existing files are listed in "testsuite_files" in the output# directory.  Subsequent runs pull the list from that file, allowing users# to trim the list down to problematic tests.### This is supposed to be done via RUNTESTFLAGS, but that doesn't work.proc libmudflap-list-sourcefiles { } {    global srcdir    global outdir    set files_file "${outdir}/testsuite_files"    set sfiles ""    if { [file exists $files_file] } {	set f [open $files_file]	while { ! [eof $f] } {	    set t [gets $f]	    if { [string length "$t"] != 0 } {		lappend sfiles ${srcdir}/${t}	    }	}    } else {	set f [open $files_file "w"]	set where_we_were [pwd]	cd $srcdir	foreach s [lsort [glob -nocomplain "*/*.cc" "*/*/*.cc" "{,*/}*/*/*/*.cc" ]] {	    lappend sfiles ${srcdir}/${s}	    puts $f $s	}	cd $where_we_were    }    close $f    # Disable wchar_t tests if library not configured to support    # wchar_t testing.     set wchar_file "${outdir}/testsuite_wchar_t"        if { [file exists $wchar_file] } {	return $sfiles    } else {	# Remove wchar_t tests files from list.	set res {}	foreach w $sfiles {	    if [regexp "wchar_t" $w] {		verbose -log "element out list is $w"	    } else {		verbose -log "element in list is $w"		lappend res $w	    }	}	return $res    }}proc prune_gcc_output { text } {    regsub -all {(^|\n)[^\n]*ld: warning: libgcc_s[^\n]*not found[^\n]*try using[^\n]*} $text "" text    regsub -all {(^|\n)[^\n]*In function.*pthread_create[^\n]*} $text "" text    regsub -all {(^|\n)[^\n]*the use of .pthread.*is deprecated[^\n]*} $text "" text    regsub -all {(^|\n)[^\n]*Dwarf Error:.*FORM value: 14[^\n]*} $text "" text    regsub -all {(^|\n)[^\n]*In function[^\n]*} $text "" text    regsub -all {(^|\n)[^\n]*Using.*in statically linked applications requires[^\n]*} $text "" text    return $text}

⌨️ 快捷键说明

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