1 # Copyright
(C
) 1999 Free Software Foundation
, Inc.
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
2 of the License
, or
6 #
(at your option
) any later version.
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.
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.
17 # Please email
any bugs
, comments
, and
/or additions to this file to
:
18 # gcc
-bugs@gcc.gnu.org
20 # This file defines a proc
for determining the file format in use by the
21 # target. This is useful
for tests that are only supported by certain file
22 # formats. This procedure is defined in a separate file so that it can be
23 # included by other expect library files.
25 proc gcc_target_object_format
{ } {
26 global gcc_target_object_format_saved
30 if [info exists gcc_target_object_format_saved
] {
31 verbose
"gcc_target_object_format returning saved $gcc_target_object_format_saved" 2
32 } elseif
{ [string match
"*-*-darwin*" $target_triplet] } {
33 # Darwin doesn
't necessarily have objdump, so hand-code it.
34 set gcc_target_object_format_saved mach-o
35 } elseif { [string match "hppa*-*-hpux*" $target_triplet] } {
36 # HP-UX doesn't necessarily have objdump
, so hand
-code it.
37 if { [string match
"hppa*64*-*-hpux*" $target_triplet] } {
38 set gcc_target_object_format_saved elf
40 set gcc_target_object_format_saved som
43 set objdump_name
[find_binutils_prog objdump
]
44 set open_file
[open objfmtst.c w
]
45 puts $open_file
"void foo(void) { }"
48 $
{tool
}_target_compile objfmtst.c objfmtst.o object
""
49 file
delete objfmtst.c
52 set output
[exec $objdump_name
--file
-headers objfmtst.o
]
55 file
delete objfmtst.o
57 if ![ regexp
"file format (.*)arch" $output dummy objformat ] {
58 verbose
"Could not parse objdump output" 2
59 set gcc_target_object_format_saved unknown
61 switch -regexp $objformat
{
63 set gcc_target_object_format_saved elf
66 set gcc_target_object_format_saved ecoff
69 set gcc_target_object_format_saved coff
72 set gcc_target_object_format_saved a.out
75 set gcc_target_object_format_saved pe
78 set gcc_target_object_format_saved som
81 verbose
"Unknown file format: $objformat" 3
82 set gcc_target_object_format_saved unknown
86 verbose
"gcc_target_object_format returning $gcc_target_object_format_saved" 2
90 return $gcc_target_object_format_saved