# Copyright (C) 1993-2017 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 3 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. # Please email any bugs, comments, and/or additions to this file to: # bug-dejagnu@prep.ai.mit.edu # This file was written by Rob Savoye. (rob@cygnus.com) load_lib utils-lib.exp if ![info exists NM] then { set NM [findfile $base_dir/nm-new $base_dir/nm-new [transform nm]] } if ![info exists NMFLAGS] then { set NMFLAGS "" } if ![info exists SIZE] then { set SIZE [findfile $base_dir/size] } if ![info exists SIZEFLAGS] then { set SIZEFLAGS "" } if ![info exists OBJDUMP] then { set OBJDUMP [findfile $base_dir/objdump] } if ![info exists OBJDUMPFLAGS] then { set OBJDUMPFLAGS "" } if ![info exists OBJCOPY] then { set OBJCOPY [findfile $base_dir/objcopy] } if ![info exists OBJCOPYFLAGS] then { set OBJCOPYFLAGS "" } if ![info exists AR] then { set AR [findfile $base_dir/ar] } if ![info exists STRIP] then { set STRIP [findfile $base_dir/strip-new $base_dir/strip-new [transform strip]] } if ![info exists STRIPFLAGS] then { set STRIPFLAGS "" } if ![info exists READELF] then { set READELF [findfile $base_dir/readelf] } if ![info exists READELFFLAGS] then { set READELFFLAGS "" } if ![info exists ELFEDIT] then { set ELFEDIT [findfile $base_dir/elfedit] } if ![info exists ELFEDITFLAGS] then { set ELFEDITFLAGS "" } if ![info exists WINDRES] then { set WINDRES [findfile $base_dir/windres] } if ![info exists DLLTOOL] then { set DLLTOOL [findfile $base_dir/dlltool] } if ![file isdirectory tmpdir] {catch "exec mkdir tmpdir" status} # Make a copy from tmpdir/gas/as and tmpdir/gas/ld to the assembler # and linker in the build tree, so that we can use a -B option to gcc # to force it to use the newly built assembler/linker. if {![file isdirectory tmpdir/gas]} {catch "exec mkdir tmpdir/gas" status} proc link_or_copy { src dst } { if ![catch "exec ln -sf ../../../$src tmpdir/gas/$dst" status] then {return 0} if ![catch "exec ln -f ../$src tmpdir/gas/$dst" status] then {return 0} catch "exec cp -fpu ../$src tmpdir/gas/$dst" status } if {[file isfile gas/as-new[exe_ext]]} then { link_or_copy gas/as-new[exe_ext] as[exe_ext] } else { # For non-Windows hosts there may be an executable # without a .exe suffix, so try copying that instead. link_or_copy gas/as-new as[exe_ext] } # This may not be needed any more... if {[file isfile ld/ld-new[exe_ext]]} then { link_or_copy ld/ld-new[exe_ext] ld[exe_ext] } else { link_or_copy ld/ld-new ld[exe_ext] } if {[file isfile tmpdir/gas/as[exe_ext]]} then { set gcc_gas_flag "-B[pwd]/tmpdir/gas/" set dlltool_gas_flag "-S [pwd]/tmpdir/gas/as[exe_ext]" } else { # Testing an installed toolchain. set gcc_gas_flag "" set dlltool_gas_flag "" } # # binutils_run # run a program, returning the output # sets binutils_run_failed if the program does not exist # proc binutils_run { prog progargs } { default_binutils_run $prog $progargs } # # binutils_assemble # assemble a file # proc binutils_assemble { source object } { default_binutils_assemble_flags $source $object "" } # # binutils_assemble_flags # assemble a file # proc binutils_assemble_flags { source object asflags } { default_binutils_assemble_flags $source $object $asflags }