1 # Copyright (C) 1993-2016 Free Software Foundation, Inc. 2 3 # This program is free software; you can redistribute it and/or modify 4 # it under the terms of the GNU General Public License as published by 5 # the Free Software Foundation; either version 3 of the License, or 6 # (at your option) any later version. 7 # 8 # This program is distributed in the hope that it will be useful, 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 # GNU General Public License for more details. 12 # 13 # You should have received a copy of the GNU General Public License 14 # along with this program; if not, write to the Free Software 15 # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. 16 17 # Please email any bugs, comments, and/or additions to this file to: 18 # bug-dejagnu (at) prep.ai.mit.edu 19 20 # This file was written by Rob Savoye. (rob (at) cygnus.com) 21 22 load_lib utils-lib.exp 23 24 if ![info exists NM] then { 25 set NM [findfile $base_dir/nm-new $base_dir/nm-new [transform nm]] 26 } 27 if ![info exists NMFLAGS] then { 28 set NMFLAGS "" 29 } 30 if ![info exists SIZE] then { 31 set SIZE [findfile $base_dir/size] 32 } 33 if ![info exists SIZEFLAGS] then { 34 set SIZEFLAGS "" 35 } 36 if ![info exists OBJDUMP] then { 37 set OBJDUMP [findfile $base_dir/objdump] 38 } 39 if ![info exists OBJDUMPFLAGS] then { 40 set OBJDUMPFLAGS "" 41 } 42 if ![info exists OBJCOPY] then { 43 set OBJCOPY [findfile $base_dir/objcopy] 44 } 45 if ![info exists OBJCOPYFLAGS] then { 46 set OBJCOPYFLAGS "" 47 } 48 if ![info exists AR] then { 49 set AR [findfile $base_dir/ar] 50 } 51 if ![info exists STRIP] then { 52 set STRIP [findfile $base_dir/strip-new $base_dir/strip-new [transform strip]] 53 } 54 if ![info exists STRIPFLAGS] then { 55 set STRIPFLAGS "" 56 } 57 if ![info exists READELF] then { 58 set READELF [findfile $base_dir/readelf] 59 } 60 if ![info exists READELFFLAGS] then { 61 set READELFFLAGS "" 62 } 63 if ![info exists ELFEDIT] then { 64 set ELFEDIT [findfile $base_dir/elfedit] 65 } 66 if ![info exists ELFEDITFLAGS] then { 67 set ELFEDITFLAGS "" 68 } 69 if ![info exists WINDRES] then { 70 set WINDRES [findfile $base_dir/windres] 71 } 72 if ![info exists DLLTOOL] then { 73 set DLLTOOL [findfile $base_dir/dlltool] 74 } 75 76 if ![file isdirectory tmpdir] {catch "exec mkdir tmpdir" status} 77 78 # Make a copy from tmpdir/gas/as and tmpdir/gas/ld to the assembler 79 # and linker in the build tree, so that we can use a -B option to gcc 80 # to force it to use the newly built assembler/linker. 81 if {![file isdirectory tmpdir/gas]} {catch "exec mkdir tmpdir/gas" status} 82 83 proc link_or_copy { src dst } { 84 if ![catch "exec ln -sf ../../../$src tmpdir/gas/$dst" status] then {return 0} 85 if ![catch "exec ln -f ../$src tmpdir/gas/$dst" status] then {return 0} 86 catch "exec cp -fpu ../$src tmpdir/gas/$dst" status 87 } 88 89 if {[file isfile gas/as-new[exe_ext]]} then { 90 link_or_copy gas/as-new[exe_ext] as[exe_ext] 91 } else { 92 # For non-Windows hosts there may be an executable 93 # without a .exe suffix, so try copying that instead. 94 link_or_copy gas/as-new as[exe_ext] 95 } 96 # This may not be needed any more... 97 if {[file isfile ld/ld-new[exe_ext]]} then { 98 link_or_copy ld/ld-new[exe_ext] ld[exe_ext] 99 } else { 100 link_or_copy ld/ld-new ld[exe_ext] 101 } 102 if {[file isfile tmpdir/gas/as[exe_ext]]} then { 103 set gcc_gas_flag "-B[pwd]/tmpdir/gas/" 104 set dlltool_gas_flag "-S [pwd]/tmpdir/gas/as[exe_ext]" 105 } else { 106 # Testing an installed toolchain. 107 set gcc_gas_flag "" 108 set dlltool_gas_flag "" 109 } 110 111 # 112 # binutils_run 113 # run a program, returning the output 114 # sets binutils_run_failed if the program does not exist 115 # 116 proc binutils_run { prog progargs } { 117 default_binutils_run $prog $progargs 118 } 119 120 # 121 # binutils_assemble 122 # assemble a file 123 # 124 proc binutils_assemble { source object } { 125 default_binutils_assemble_flags $source $object "" 126 } 127 128 # 129 # binutils_assemble_flags 130 # assemble a file 131 # 132 proc binutils_assemble_flags { source object asflags } { 133 default_binutils_assemble_flags $source $object $asflags 134 } 135