| # Copyright 1993, 1994, 1995, 1997, 1999, 2001, 2002, 2004, 2005, 2007, 2009 |
| # 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 |
| } |