OSDN Git Service

Move proc gcc_target_object_format from ecos.exp to file-format.exp
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / special / ecos.exp
1 #   Copyright (C) 1999 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
16
17 # Please email any bugs, comments, and/or additions to this file to:
18 # jlarmour@cygnus.co.uk
19
20 # This file was written by Jonathan Larmour (jlarmour@cygnus.co.uk).
21
22 # GCC testsuite that uses the `dg.exp' driver.
23
24 # Load support procs.
25 load_lib gcc-dg.exp
26
27 ###############################
28 # proc gcc_target_object_format {}
29 ###############################
30 # has been moved to:  gcc/testsuite/lib/file-format.exp
31
32 ###############################
33 # proc check_weak_available { }
34 ###############################
35
36 # weak symbols are only supported in some configs/object formats
37 # this proc returns 1 if they're support, 0 if they're not, or -1 if unsure
38
39 proc check_weak_available { } {
40     global target_cpu
41
42     # All mips targets should support it
43     
44     if { [ string first "mips" $target_cpu ] >= 0 } {
45         return 1
46     }
47
48     # ELF and ECOFF support it. a.out does with gas/gld but may also with
49     # other linkers, so we should try it
50
51     set objformat [gcc_target_object_format]
52
53     switch $objformat {
54         elf      { return 1 }
55         ecoff    { return 1 }
56         a.out    { return 1 }
57         unknown  { return -1 }
58         default  { return 0 }
59     }
60 }
61
62 ##########
63 # weak-1.c
64 ##########
65
66 if { [ check_weak_available ] == 1 } {
67     dg-init
68
69     set lines [gcc_target_compile "$srcdir/$subdir/weak-1a.c" "weak-1a.o" object ""]
70     if ![string match "" $lines] then {
71         fail "weak-1a.o"
72     } else {
73         dg-runtest "$srcdir/$subdir/weak-1.c" "weak-1a.o" "" 
74         file delete weak-1a.o
75     }
76     dg-finish
77 } elseif { [ check_weak_available ] == 0 } {
78     unsupported "weak-1.c"
79 } else {
80     unresolved "weak-1.c"
81 }
82
83 ##########
84 # weak-2.c
85 ##########
86
87 if { [ check_weak_available ] == 1 } {
88     dg-init
89     
90     set lines [gcc_target_compile "$srcdir/$subdir/weak-2a.c" "weak-2a.o" object ""]
91     if ![string match "" $lines] then {
92         fail "weak-2a.o"
93     } else {
94         set lines [gcc_target_compile "$srcdir/$subdir/weak-2b.c" "weak-2b.o" object ""]
95         if ![string match "" $lines] then {
96             fail "weak-2b.o"
97         } else {
98             dg-runtest "$srcdir/$subdir/weak-2.c" "weak-2a.o weak-2b.o" "" 
99             file delete weak-2a.o weak-2b.o
100         }
101     }
102     dg-finish
103 } elseif { [ check_weak_available ] == 0 } {
104     unsupported "weak-2.c"
105 } else {
106     unresolved "weak-2.c"
107 }
108
109 ###########
110 # alias-1.c
111 ###########
112
113 dg-init
114 dg-runtest "$srcdir/$subdir/alias-1.c" "" ""
115 dg-finish
116
117 ###########
118 # wkali-1.c
119 ###########
120
121 dg-init
122 dg-runtest "$srcdir/$subdir/wkali-1.c" "" ""
123 dg-finish
124
125 ###########
126 # wkali-2.c
127 ###########
128
129 if { [ check_weak_available ] == 1 } {
130     dg-init
131     set lines [gcc_target_compile "$srcdir/$subdir/wkali-2a.c" "wkali-2a.o" object ""]
132     if ![string match "" $lines] then {
133         fail "wkali-2a.o"
134     } else {
135         set lines [gcc_target_compile "$srcdir/$subdir/wkali-2b.c" "wkali-2b.o" object ""]
136         if ![string match "" $lines] then {
137             fail "wkali-2b.o"
138         } else {
139             dg-runtest "$srcdir/$subdir/wkali-2.c" "wkali-2a.o wkali-2b.o" ""
140             file delete wkali-2a.o wkali-2b.o
141         }
142     }
143     dg-finish
144 } elseif { [ check_weak_available ] == 0 } {
145     unsupported "wkali-2.c"
146 } else {
147     unresolved "wkali-2.c"
148 }
149
150 ###########
151 # gcsec-1.c
152 ###########
153
154 set ld_output [ exec [ find_ld ] --help ]
155
156 if { [ string first "--gc-sections" $ld_output ] >= 0 } {
157
158     dg-init
159     dg-runtest "$srcdir/$subdir/gcsec-1.c" "-ffunction-sections -fdata-sections -Wl,--gc-sections" ""
160     dg-finish
161 } else {
162     unsupported "gcsec-1.c"
163 }
164
165 ### EOF ecos.exp