* common.cc (Symbol_table::allocate_commons): Remove options
[external/binutils.git] / gold / testsuite / Makefile.am
1 # Process this file with automake to generate Makefile.in
2
3 # As far as I can tell automake testing support assumes that the build
4 # system and the host system are the same.  So these tests will not
5 # work when building with a cross-compiler.
6
7 AUTOMAKE_OPTIONS =
8
9 # The two_file_test tests -fmerge-constants, so we simply always turn
10 # it on.  This may need to be controlled by a configure option
11 # eventually.
12 AM_CXXFLAGS = $(WARN_CXXFLAGS) $(LFS_CFLAGS) -fmerge-constants
13
14 INCLUDES = \
15         -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../../include \
16         -I$(srcdir)/../../elfcpp -I.. \
17         -DLOCALEDIR="\"$(datadir)/locale\"" \
18         @INCINTL@
19
20 TEST_READELF = $(top_builddir)/../binutils/readelf
21 TEST_OBJDUMP = $(top_builddir)/../binutils/objdump
22 TEST_CXXFILT = $(top_builddir)/../binutils/cxxfilt
23 TEST_STRIP = $(top_builddir)/../binutils/strip-new
24
25 if THREADS
26 THREADSLIB = -lpthread
27 endif
28
29 if OMP_SUPPORT
30 TLS_TEST_C_CFLAGS = -fopenmp
31 endif
32
33 # 'make clean' is good about deleting some intermediate files (such as
34 # .o's), but not all of them (such as .so's and .err files).  We
35 # improve on that here.  automake-1.9 info docs say "mostlyclean" is
36 # the right choice for files 'make' builds that people rebuild.
37 MOSTLYCLEANFILES = *.so
38
39
40 # We will add to these later, for each individual test.  Note
41 # that we add each test under check_SCRIPTS or check_PROGRAMS;
42 # the TESTS variable is automatically populated from these.
43 check_SCRIPTS =
44 check_DATA =
45 check_PROGRAMS =
46 TESTS = $(check_SCRIPTS) $(check_PROGRAMS)
47
48 # ---------------------------------------------------------------------
49 # These tests test the internals of gold (unittests).
50
51 # Infrastucture needed for the unittests
52 check_LIBRARIES = libgoldtest.a
53 libgoldtest_a_SOURCES = test.cc testmain.cc testfile.cc
54
55 DEPENDENCIES = \
56         libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL_DEP)
57 LDADD = libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL) \
58         $(THREADSLIB)
59
60
61 # The unittests themselves
62 check_PROGRAMS += object_unittest
63 object_unittest_SOURCES = object_unittest.cc
64
65 check_PROGRAMS += binary_unittest
66 binary_unittest_SOURCES = binary_unittest.cc
67
68
69 # ---------------------------------------------------------------------
70 # These tests test the output of gold (end-to-end tests).  In
71 # particular, they make sure that gold can link "difficult" object
72 # files, and the resulting object files run correctly.  These can only
73 # run if we've built ld-new for the native architecture (that is,
74 # we're not cross-compiling it), since we run ld-new as part of these
75 # tests.  We use the gcc-specific flag '-B' to use our linker instead
76 # of the default linker, which is why we only run our tests under gcc.
77
78 if NATIVE_LINKER
79 if GCC
80
81 # Infrastucture needed for the unittests: a directory where the linker
82 # is named 'ld'.  This is because the -B flag appends 'ld' to its arg.
83 gcctestdir/ld: ../ld-new
84         test -d gcctestdir || mkdir -p gcctestdir
85         rm -f gcctestdir/ld
86         (cd gcctestdir && $(LN_S) ../../ld-new ld)
87
88 # Each of these .o's is a useful, small complete program.  They're
89 # particularly useful for making sure ld-new's flags do what they're
90 # supposed to (hence their names), but are used for many tests that
91 # don't actually involve analyzing input data.
92 flagstest_debug.o: constructor_test.cc
93         $(CXXCOMPILE) -O0 -g -c -o $@ $<
94 flagstest_ndebug.o: constructor_test.cc
95         $(CXXCOMPILE) -O0 -c -o $@ $<
96
97
98 check_PROGRAMS += basic_test
99 check_PROGRAMS += basic_static_test
100 check_PROGRAMS += basic_pic_test
101 check_PROGRAMS += basic_static_pic_test
102 basic_test.o: basic_test.cc
103         $(CXXCOMPILE) -O0 -c -o $@ $<
104 basic_test: basic_test.o gcctestdir/ld
105         $(CXXLINK) -Bgcctestdir/ basic_test.o
106 basic_static_test: basic_test.o gcctestdir/ld
107         $(CXXLINK) -Bgcctestdir/ -static basic_test.o
108
109 basic_pic_test.o: basic_test.cc
110         $(CXXCOMPILE) -O0 -c -fpic -o $@ $<
111 basic_pic_test: basic_pic_test.o gcctestdir/ld
112         $(CXXLINK) -Bgcctestdir/ basic_pic_test.o
113 basic_static_pic_test: basic_pic_test.o gcctestdir/ld
114         $(CXXLINK) -Bgcctestdir/ -static basic_pic_test.o
115
116
117 check_PROGRAMS += constructor_test
118 check_PROGRAMS += constructor_static_test
119 constructor_test_SOURCES = constructor_test.cc
120 constructor_test_DEPENDENCIES = gcctestdir/ld
121 constructor_test_LDFLAGS = -Bgcctestdir/
122
123 constructor_static_test_SOURCES = $(constructor_test_SOURCES)
124 constructor_static_test_DEPENDENCIES = $(constructor_test_DEPENDENCIES)
125 constructor_static_test_LDFLAGS = $(constructor_test_LDFLAGS) -static
126
127
128 check_PROGRAMS += two_file_test
129 check_PROGRAMS += two_file_static_test
130 check_PROGRAMS += two_file_pic_test
131 two_file_test_SOURCES = \
132         two_file_test_1.cc \
133         two_file_test_1b.cc \
134         two_file_test_2.cc \
135         two_file_test_main.cc \
136         two_file_test.h
137 two_file_test_DEPENDENCIES = gcctestdir/ld
138 two_file_test_LDFLAGS = -Bgcctestdir/
139
140 two_file_static_test_SOURCES = $(two_file_test_SOURCES)
141 two_file_static_test_DEPENDENCIES = $(two_file_test_DEPENDENCIES)
142 two_file_static_test_LDFLAGS = $(two_file_test_LDFLAGS) -static
143
144 two_file_pic_test_SOURCES = two_file_test_main.cc
145 two_file_pic_test_DEPENDENCIES = \
146         gcctestdir/ld two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o
147 two_file_pic_test_LDFLAGS = -Bgcctestdir/
148 two_file_pic_test_LDADD = two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o
149
150
151 check_PROGRAMS += two_file_shared_1_test
152 check_PROGRAMS += two_file_shared_2_test
153 check_PROGRAMS += two_file_shared_1_pic_2_test
154 check_PROGRAMS += two_file_shared_2_pic_1_test
155 check_PROGRAMS += two_file_same_shared_test
156 check_PROGRAMS += two_file_separate_shared_12_test
157 check_PROGRAMS += two_file_separate_shared_21_test
158 two_file_test_1_pic.o: two_file_test_1.cc
159         $(CXXCOMPILE) -c -fpic -o $@ $<
160 two_file_test_1b_pic.o: two_file_test_1b.cc
161         $(CXXCOMPILE) -c -fpic -o $@ $<
162 two_file_test_2_pic.o: two_file_test_2.cc
163         $(CXXCOMPILE) -c -fpic -o $@ $<
164 two_file_shared_1.so: two_file_test_1_pic.o two_file_test_1b_pic.o gcctestdir/ld
165         $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o
166 two_file_shared_2.so: two_file_test_2_pic.o gcctestdir/ld
167         $(CXXLINK) -Bgcctestdir/ -shared two_file_test_2_pic.o
168 two_file_shared.so: two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o gcctestdir/ld
169         $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o
170
171 two_file_shared_1_test_SOURCES = two_file_test_2.cc two_file_test_main.cc
172 two_file_shared_1_test_DEPENDENCIES = gcctestdir/ld two_file_shared_1.so
173 two_file_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
174 two_file_shared_1_test_LDADD = two_file_shared_1.so
175
176 two_file_shared_2_test_SOURCES = two_file_test_1.cc two_file_test_1b.cc two_file_test_main.cc
177 two_file_shared_2_test_DEPENDENCIES = gcctestdir/ld two_file_shared_2.so
178 two_file_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
179 two_file_shared_2_test_LDADD = two_file_shared_2.so
180
181 two_file_shared_1_pic_2_test_SOURCES = two_file_test_main.cc
182 two_file_shared_1_pic_2_test_DEPENDENCIES = \
183         gcctestdir/ld two_file_shared_1.so two_file_test_1_pic.o two_file_test_1b_pic.o
184 two_file_shared_1_pic_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
185 two_file_shared_1_pic_2_test_LDADD = two_file_test_1_pic.o two_file_test_1b_pic.o two_file_shared_2.so
186
187 two_file_shared_2_pic_1_test_SOURCES = two_file_test_main.cc
188 two_file_shared_2_pic_1_test_DEPENDENCIES = \
189         gcctestdir/ld two_file_shared_2.so two_file_test_2_pic.o
190 two_file_shared_2_pic_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
191 two_file_shared_2_pic_1_test_LDADD = two_file_test_2_pic.o two_file_shared_1.so
192
193 two_file_same_shared_test_SOURCES = two_file_test_main.cc
194 two_file_same_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared.so
195 two_file_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
196 two_file_same_shared_test_LDADD = two_file_shared.so
197
198 two_file_separate_shared_12_test_SOURCES = two_file_test_main.cc
199 two_file_separate_shared_12_test_DEPENDENCIES = \
200         gcctestdir/ld two_file_shared_1.so two_file_shared_2.so
201 two_file_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
202 two_file_separate_shared_12_test_LDADD = \
203         two_file_shared_1.so two_file_shared_2.so
204
205 two_file_separate_shared_21_test_SOURCES = two_file_test_main.cc
206 two_file_separate_shared_21_test_DEPENDENCIES = \
207         gcctestdir/ld two_file_shared_1.so two_file_shared_2.so
208 two_file_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
209 two_file_separate_shared_21_test_LDADD = \
210         two_file_shared_2.so two_file_shared_1.so
211
212 check_PROGRAMS += two_file_relocatable_test
213 two_file_relocatable_test_SOURCES = two_file_test_main.cc
214 two_file_relocatable_test_DEPENDENCIES = \
215         gcctestdir/ld two_file_relocatable.o
216 two_file_relocatable_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
217 two_file_relocatable_test_LDADD = two_file_relocatable.o
218 two_file_relocatable.o: gcctestdir/ld two_file_test_1.o two_file_test_1b.o two_file_test_2.o
219         gcctestdir/ld -r -o $@ two_file_test_1.o two_file_test_1b.o two_file_test_2.o
220
221 # The nonpic tests will fail on platforms which can not put non-PIC
222 # code into shared libraries, so we just don't run them in that case.
223 if FN_PTRS_IN_SO_WITHOUT_PIC
224
225 check_PROGRAMS += two_file_shared_1_nonpic_test
226 check_PROGRAMS += two_file_shared_2_nonpic_test
227 check_PROGRAMS += two_file_same_shared_nonpic_test
228 check_PROGRAMS += two_file_separate_shared_12_nonpic_test
229 check_PROGRAMS += two_file_separate_shared_21_nonpic_test
230 check_PROGRAMS += two_file_mixed_shared_test
231 check_PROGRAMS += two_file_mixed_2_shared_test
232 two_file_shared_1_nonpic.so: two_file_test_1.o gcctestdir/ld
233         $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b.o
234 two_file_shared_2_nonpic.so: two_file_test_2.o gcctestdir/ld
235         $(CXXLINK) -Bgcctestdir/ -shared two_file_test_2.o
236 two_file_shared_nonpic.so: two_file_test_1.o two_file_test_1b.o two_file_test_2.o gcctestdir/ld
237         $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b.o two_file_test_2.o
238 two_file_shared_mixed.so: two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2.o gcctestdir/ld
239         $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2.o
240 two_file_shared_mixed_1.so: two_file_test_1.o two_file_test_1b_pic.o two_file_shared_2.so gcctestdir/ld
241         $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b_pic.o two_file_shared_2.so
242
243 two_file_shared_1_nonpic_test_SOURCES = \
244         two_file_test_2.cc two_file_test_main.cc
245 two_file_shared_1_nonpic_test_DEPENDENCIES = \
246         gcctestdir/ld two_file_shared_1_nonpic.so
247 two_file_shared_1_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
248 two_file_shared_1_nonpic_test_LDADD = two_file_shared_1_nonpic.so
249
250 two_file_shared_2_nonpic_test_SOURCES = \
251         two_file_test_1.cc two_file_test_1b.cc two_file_test_main.cc
252 two_file_shared_2_nonpic_test_DEPENDENCIES = \
253         gcctestdir/ld two_file_shared_2_nonpic.so
254 two_file_shared_2_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
255 two_file_shared_2_nonpic_test_LDADD = two_file_shared_2_nonpic.so
256
257 two_file_same_shared_nonpic_test_SOURCES = two_file_test_main.cc
258 two_file_same_shared_nonpic_test_DEPENDENCIES = \
259         gcctestdir/ld two_file_shared_nonpic.so
260 two_file_same_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
261 two_file_same_shared_nonpic_test_LDADD = two_file_shared_nonpic.so
262
263 two_file_separate_shared_12_nonpic_test_SOURCES = two_file_test_main.cc
264 two_file_separate_shared_12_nonpic_test_DEPENDENCIES = \
265         gcctestdir/ld two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so
266 two_file_separate_shared_12_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
267 two_file_separate_shared_12_nonpic_test_LDADD = \
268         two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so
269
270 two_file_separate_shared_21_nonpic_test_SOURCES = two_file_test_main.cc
271 two_file_separate_shared_21_nonpic_test_DEPENDENCIES = \
272         gcctestdir/ld two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so
273 two_file_separate_shared_21_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
274 two_file_separate_shared_21_nonpic_test_LDADD = \
275         two_file_shared_2_nonpic.so two_file_shared_1_nonpic.so
276
277 two_file_mixed_shared_test_SOURCES = two_file_test_main.cc
278 two_file_mixed_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared_mixed.so
279 two_file_mixed_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
280 two_file_mixed_shared_test_LDADD = two_file_shared_mixed.so
281
282 two_file_mixed_2_shared_test_SOURCES = two_file_test_main.cc
283 two_file_mixed_2_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared_mixed_1.so two_file_shared_2.so
284 two_file_mixed_2_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
285 two_file_mixed_2_shared_test_LDADD = two_file_shared_mixed_1.so two_file_shared_2.so
286
287 endif FN_PTRS_IN_SO_WITHOUT_PIC
288
289 check_PROGRAMS += two_file_strip_test
290 two_file_strip_test: two_file_test
291         $(TEST_STRIP) -o two_file_strip_test two_file_test
292
293 check_PROGRAMS += two_file_same_shared_strip_test
294 two_file_same_shared_strip_test_SOURCES = two_file_test_main.cc
295 two_file_same_shared_strip_test_DEPENDENCIES = \
296         gcctestdir/ld two_file_shared_strip.so
297 two_file_same_shared_strip_test_LDFLAGS = -Bgcctestdir/ -Wl,-R.
298 two_file_same_shared_strip_test_LDADD = two_file_shared_strip.so
299 two_file_shared_strip.so: two_file_shared.so
300         $(TEST_STRIP) -S -o two_file_shared_strip.so two_file_shared.so
301
302 check_PROGRAMS += common_test_1
303 common_test_1_SOURCES = common_test_1.c
304 common_test_1_DEPENDENCIES = gcctestdir/ld
305 common_test_1_LDFLAGS = -Bgcctestdir/
306
307 check_PROGRAMS += exception_test
308 check_PROGRAMS += exception_static_test
309 check_PROGRAMS += exception_shared_1_test
310 check_PROGRAMS += exception_shared_2_test
311 check_PROGRAMS += exception_same_shared_test
312 check_PROGRAMS += exception_separate_shared_12_test
313 check_PROGRAMS += exception_separate_shared_21_test
314 exception_test_1_pic.o: exception_test_1.cc
315         $(CXXCOMPILE) -c -fpic -o $@ $<
316 exception_test_2_pic.o: exception_test_2.cc
317         $(CXXCOMPILE) -c -fpic -o $@ $<
318 exception_shared_1.so: exception_test_1_pic.o gcctestdir/ld
319         $(CXXLINK) -Bgcctestdir/ -shared exception_test_1_pic.o
320 exception_shared_2.so: exception_test_2_pic.o gcctestdir/ld
321         $(CXXLINK) -Bgcctestdir/ -shared exception_test_2_pic.o
322 exception_shared.so: exception_test_1_pic.o exception_test_2_pic.o gcctestdir/ld
323         $(CXXLINK) -Bgcctestdir/ -shared exception_test_1_pic.o exception_test_2_pic.o
324
325 exception_test_SOURCES = \
326         exception_test_main.cc \
327         exception_test_1.cc \
328         exception_test_2.cc \
329         exception_test.h
330 exception_test_DEPENDENCIES = gcctestdir/ld
331 exception_test_LDFLAGS = -Bgcctestdir/
332
333 exception_static_test_SOURCES = $(exception_test_SOURCES)
334 exception_static_test_DEPENDENCIES = $(exception_test_DEPENDENCIES)
335 exception_static_test_LDFLAGS = $(exception_test_LDFLAGS) -static
336
337 exception_shared_1_test_SOURCES = exception_test_2.cc exception_test_main.cc
338 exception_shared_1_test_DEPENDENCIES = gcctestdir/ld exception_shared_1.so
339 exception_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
340 exception_shared_1_test_LDADD = exception_shared_1.so
341
342 exception_shared_2_test_SOURCES = exception_test_1.cc exception_test_main.cc
343 exception_shared_2_test_DEPENDENCIES = gcctestdir/ld exception_shared_2.so
344 exception_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
345 exception_shared_2_test_LDADD = exception_shared_2.so
346
347 exception_same_shared_test_SOURCES = exception_test_main.cc
348 exception_same_shared_test_DEPENDENCIES = gcctestdir/ld exception_shared.so
349 exception_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
350 exception_same_shared_test_LDADD = exception_shared.so
351
352 exception_separate_shared_12_test_SOURCES = exception_test_main.cc
353 exception_separate_shared_12_test_DEPENDENCIES = \
354         gcctestdir/ld exception_shared_1.so exception_shared_2.so
355 exception_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
356 exception_separate_shared_12_test_LDADD = \
357         exception_shared_1.so exception_shared_2.so
358
359 exception_separate_shared_21_test_SOURCES = exception_test_main.cc
360 exception_separate_shared_21_test_DEPENDENCIES = \
361         gcctestdir/ld exception_shared_1.so exception_shared_2.so
362 exception_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
363 exception_separate_shared_21_test_LDADD = \
364         exception_shared_2.so exception_shared_1.so
365
366
367 check_PROGRAMS += weak_test
368 weak_test_SOURCES = weak_test.cc
369 weak_test_DEPENDENCIES = gcctestdir/ld
370 weak_test_LDFLAGS = -Bgcctestdir/
371
372 check_PROGRAMS += weak_undef_test
373 weak_undef_test_SOURCES = weak_undef_test.cc
374 weak_undef_test_DEPENDENCIES = gcctestdir/ld weak_undef_lib.so alt/weak_undef_lib.so
375 weak_undef_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,alt
376 weak_undef_test_LDADD = -L . weak_undef_lib.so
377 weak_undef_file1.o: weak_undef_file1.cc
378         $(CXXCOMPILE) -c -fpic -o $@ $<
379 weak_undef_file2.o: weak_undef_file2.cc
380         $(CXXCOMPILE) -c -fpic -o $@ $<
381 weak_undef_lib.so: weak_undef_file1.o
382         $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file1.o
383 alt/weak_undef_lib.so: weak_undef_file2.o
384         test -d alt || mkdir -p alt
385         $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file2.o
386
387 if FN_PTRS_IN_SO_WITHOUT_PIC
388 check_PROGRAMS += weak_undef_nonpic_test
389 weak_undef_nonpic_test_SOURCES = weak_undef_test.cc
390 weak_undef_nonpic_test_DEPENDENCIES = gcctestdir/ld weak_undef_lib_nonpic.so alt/weak_undef_lib_nonpic.so
391 weak_undef_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,alt
392 weak_undef_nonpic_test_LDADD = -L . weak_undef_lib_nonpic.so
393 weak_undef_file1_nonpic.o: weak_undef_file1.cc
394         $(CXXCOMPILE) -c -o $@ $<
395 weak_undef_file2_nonpic.o: weak_undef_file2.cc
396         $(CXXCOMPILE) -c -o $@ $<
397 weak_undef_lib_nonpic.so: weak_undef_file1_nonpic.o
398         $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file1_nonpic.o
399 alt/weak_undef_lib_nonpic.so: weak_undef_file2_nonpic.o
400         test -d alt || mkdir -p alt
401         $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file2_nonpic.o
402 endif FN_PTRS_IN_SO_WITHOUT_PIC
403
404
405 check_PROGRAMS += weak_alias_test
406 weak_alias_test_SOURCES = weak_alias_test_main.cc
407 weak_alias_test_DEPENDENCIES = \
408         gcctestdir/ld weak_alias_test_1.so weak_alias_test_2.so \
409         weak_alias_test_3.o weak_alias_test_4.so
410 weak_alias_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
411 weak_alias_test_LDADD = \
412         weak_alias_test_1.so weak_alias_test_2.so weak_alias_test_3.o \
413         weak_alias_test_4.so
414 weak_alias_test_1_pic.o: weak_alias_test_1.cc
415         $(CXXCOMPILE) -c -fpic -o $@ $<
416 weak_alias_test_1.so: weak_alias_test_1_pic.o
417         $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_1_pic.o
418 weak_alias_test_2_pic.o: weak_alias_test_2.cc
419         $(CXXCOMPILE) -c -fpic -o $@ $<
420 weak_alias_test_2.so: weak_alias_test_2_pic.o
421         $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_2_pic.o
422 weak_alias_test_3.o: weak_alias_test_3.cc
423         $(CXXCOMPILE) -c -o $@ $<
424 weak_alias_test_4_pic.o: weak_alias_test_4.cc
425         $(CXXCOMPILE) -c -fpic -o $@ $<
426 weak_alias_test_4.so: weak_alias_test_4_pic.o
427         $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_4_pic.o
428
429 if TLS
430
431 check_PROGRAMS += tls_test
432 check_PROGRAMS += tls_pic_test
433 check_PROGRAMS += tls_shared_test
434 check_PROGRAMS += tls_shared_ie_test
435 check_PROGRAMS += tls_shared_gd_to_ie_test
436 tls_test_pic.o: tls_test.cc
437         $(CXXCOMPILE) -c -fpic -o $@ $<
438 tls_test_file2_pic.o: tls_test_file2.cc
439         $(CXXCOMPILE) -c -fpic -o $@ $<
440 tls_test_c_pic.o: tls_test_c.c
441         $(COMPILE) -c -fpic $(TLS_TEST_C_CFLAGS) -o $@ $<
442 tls_test_shared.so: tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o gcctestdir/ld
443         $(CXXLINK) -Bgcctestdir/ -shared tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o
444 tls_test_shared2.so: tls_test_file2_pic.o gcctestdir/ld
445         $(CXXLINK) -Bgcctestdir/ -shared tls_test_file2_pic.o
446
447 tls_test_pic_ie.o: tls_test.cc
448         $(CXXCOMPILE) -c -fpic -ftls-model=initial-exec -o $@ $<
449 tls_test_file2_pic_ie.o: tls_test_file2.cc
450         $(CXXCOMPILE) -c -fpic -ftls-model=initial-exec -o $@ $<
451 tls_test_c_pic_ie.o: tls_test_c.c
452         $(COMPILE) -c -fpic -ftls-model=initial-exec $(TLS_TEST_C_CFLAGS) -o $@ $<
453 tls_test_ie_shared.so: tls_test_pic_ie.o tls_test_file2_pic_ie.o tls_test_c_pic_ie.o gcctestdir/ld
454         $(CXXLINK) -Bgcctestdir/ -shared tls_test_pic_ie.o tls_test_file2_pic_ie.o tls_test_c_pic_ie.o
455
456 tls_test_SOURCES = tls_test.cc tls_test_file2.cc tls_test_main.cc tls_test.h
457 tls_test_DEPENDENCIES = gcctestdir/ld tls_test_c.o
458 tls_test_LDFLAGS = -Bgcctestdir/
459 tls_test_LDADD = tls_test_c.o -lpthread
460 tls_test_c.o: tls_test_c.c
461         $(COMPILE) -c $(TLS_TEST_C_CFLAGS) -o $@ $<
462
463 tls_pic_test_SOURCES = tls_test_main.cc
464 tls_pic_test_DEPENDENCIES = gcctestdir/ld tls_test_pic.o tls_test_file2_pic.o \
465         tls_test_c_pic.o
466 tls_pic_test_LDFLAGS = -Bgcctestdir/
467 tls_pic_test_LDADD = tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o \
468         -lpthread
469
470 tls_shared_test_SOURCES = tls_test_main.cc
471 tls_shared_test_DEPENDENCIES = gcctestdir/ld tls_test_shared.so
472 tls_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
473 tls_shared_test_LDADD = tls_test_shared.so -lpthread
474
475 tls_shared_ie_test_SOURCES = tls_test_main.cc
476 tls_shared_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_ie_shared.so
477 tls_shared_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
478 tls_shared_ie_test_LDADD = tls_test_ie_shared.so -lpthread
479
480 tls_shared_gd_to_ie_test_SOURCES = tls_test_main.cc
481 tls_shared_gd_to_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_pic.o \
482         tls_test_c_pic.o tls_test_shared2.so
483 tls_shared_gd_to_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
484 tls_shared_gd_to_ie_test_LDADD = tls_test_pic.o tls_test_c_pic.o \
485         tls_test_shared2.so -lpthread
486
487 if TLS_GNU2_DIALECT
488
489 check_PROGRAMS += tls_shared_gnu2_gd_to_ie_test
490
491 tls_test_gnu2.o: tls_test.cc
492         $(CXXCOMPILE) -c -fpic -mtls-dialect=gnu2 -o $@ $<
493 tls_test_file2_gnu2.o: tls_test_file2.cc
494         $(CXXCOMPILE) -c -fpic -mtls-dialect=gnu2 -o $@ $<
495 tls_test_c_gnu2.o: tls_test_c.c
496         $(COMPILE) -c -fpic -mtls-dialect=gnu2 $(TLS_TEST_C_CFLAGS) -o $@ $<
497 tls_test_gnu2_shared2.so: tls_test_file2_gnu2.o gcctestdir/ld
498         $(CXXLINK) -Bgcctestdir/ -shared tls_test_file2_gnu2.o
499
500 tls_shared_gnu2_gd_to_ie_test_SOURCES = tls_test_main.cc
501 tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_gnu2.o \
502         tls_test_c_gnu2.o tls_test_gnu2_shared2.so
503 tls_shared_gnu2_gd_to_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
504 tls_shared_gnu2_gd_to_ie_test_LDADD = tls_test_gnu2.o tls_test_c_gnu2.o \
505         tls_test_gnu2_shared2.so -lpthread
506
507 if TLS_DESCRIPTORS
508
509 check_PROGRAMS += tls_shared_gnu2_test
510
511 tls_test_gnu2_shared.so: tls_test_gnu2.o tls_test_file2_gnu2.o tls_test_c_gnu2.o gcctestdir/ld
512         $(CXXLINK) -Bgcctestdir/ -shared tls_test_gnu2.o tls_test_file2_gnu2.o tls_test_c_gnu2.o
513
514 tls_shared_gnu2_test_SOURCES = tls_test_main.cc
515 tls_shared_gnu2_test_DEPENDENCIES = gcctestdir/ld tls_test_gnu2_shared.so
516 tls_shared_gnu2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
517 tls_shared_gnu2_test_LDADD = tls_test_gnu2_shared.so -lpthread
518
519 endif TLS_DESCRIPTORS
520
521 endif TLS_GNU2_DIALECT
522
523 if STATIC_TLS
524 check_PROGRAMS += tls_static_test
525 check_PROGRAMS += tls_static_pic_test
526
527 tls_static_test_SOURCES = $(tls_test_SOURCES)
528 tls_static_test_DEPENDENCIES = $(tls_test_DEPENDENCIES)
529 tls_static_test_LDFLAGS = $(tls_test_LDFLAGS) -static
530 tls_static_test_LDADD = $(tls_test_LDADD)
531
532 tls_static_pic_test_SOURCES = $(tls_pic_test_SOURCES)
533 tls_static_pic_test_DEPENDENCIES = $(tls_pic_test_DEPENDENCIES)
534 tls_static_pic_test_LDFLAGS = $(tls_pic_test_LDFLAGS) -static
535 tls_static_pic_test_LDADD = $(tls_pic_test_LDADD)
536 endif
537
538 if FN_PTRS_IN_SO_WITHOUT_PIC
539 check_PROGRAMS += tls_shared_nonpic_test
540 tls_test_shared_nonpic.so: tls_test.o tls_test_file2.o tls_test_c.o gcctestdir/ld
541         $(CXXLINK) -Bgcctestdir/ -shared tls_test.o tls_test_file2.o tls_test_c.o
542
543 tls_shared_nonpic_test_SOURCES = tls_test_main.cc
544 tls_shared_nonpic_test_DEPENDENCIES = gcctestdir/ld tls_test_shared_nonpic.so
545 tls_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
546 tls_shared_nonpic_test_LDADD = tls_test_shared_nonpic.so -lpthread
547 endif FN_PTRS_IN_SO_WITHOUT_PIC
548
549 endif TLS
550
551
552 if CONSTRUCTOR_PRIORITY
553
554 check_PROGRAMS += initpri1
555 initpri1_SOURCES = initpri1.c
556 initpri1_DEPENDENCIES = gcctestdir/ld
557 initpri1_LDFLAGS = -Bgcctestdir/
558
559 endif
560
561
562 # Test --detect-odr-violations
563 check_SCRIPTS += debug_msg.sh
564
565 # Create the data files that debug_msg.sh analyzes.
566 check_DATA += debug_msg.err
567 MOSTLYCLEANFILES += debug_msg.err
568 debug_msg.o: debug_msg.cc
569         $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/debug_msg.cc
570 odr_violation1.o: odr_violation1.cc
571         $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/odr_violation1.cc
572 odr_violation2.o: odr_violation2.cc
573         $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/odr_violation2.cc
574 debug_msg.err: debug_msg.o odr_violation1.o odr_violation2.o gcctestdir/ld
575         @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg debug_msg.o odr_violation1.o odr_violation2.o "2>$@"
576         @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg debug_msg.o odr_violation1.o odr_violation2.o 2>$@; \
577         then \
578           echo 1>&2 "Link of debug_msg should have failed"; \
579           rm -f $@; \
580           exit 1; \
581         fi
582
583 # See if we can also detect problems when we're linking .so's, not .o's.
584 check_DATA += debug_msg_so.err
585 MOSTLYCLEANFILES += debug_msg_so.err
586 debug_msg.so: debug_msg.cc gcctestdir/ld
587         $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/debug_msg.cc
588 odr_violation1.so: odr_violation1.cc gcctestdir/ld
589         $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/odr_violation1.cc
590 odr_violation2.so: odr_violation2.cc gcctestdir/ld
591         $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/odr_violation2.cc
592 debug_msg_so.err: debug_msg.so odr_violation1.so odr_violation2.so gcctestdir/ld
593         @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_so debug_msg.so odr_violation1.so odr_violation2.so "2>$@"
594         @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_so debug_msg.so odr_violation1.so odr_violation2.so 2>$@; \
595         then \
596           echo 1>&2 "Link of debug_msg_so should have failed"; \
597           rm -f $@; \
598           exit 1; \
599         fi
600
601 # We also want to make sure we do something reasonable when there's no
602 # debug info available.  For the best test, we use .so's.
603 check_DATA += debug_msg_ndebug.err
604 MOSTLYCLEANFILES += debug_msg_ndebug.err
605 debug_msg_ndebug.so: debug_msg.cc gcctestdir/ld
606         $(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/debug_msg.cc
607 odr_violation1_ndebug.so: odr_violation1.cc gcctestdir/ld
608         $(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/odr_violation1.cc
609 odr_violation2_ndebug.so: odr_violation2.cc gcctestdir/ld
610         $(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/odr_violation2.cc
611 debug_msg_ndebug.err: debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so gcctestdir/ld
612         @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_ndebug debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so "2>$@"
613         @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_ndebug debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so 2>$@; \
614         then \
615           echo 1>&2 "Link of debug_msg_ndebug should have failed"; \
616           rm -f $@; \
617           exit 1; \
618         fi
619
620
621 # Similar to --detect-odr-violations: check for undefined symbols in .so's
622 check_SCRIPTS += undef_symbol.sh
623 check_DATA += undef_symbol.err
624 MOSTLYCLEANFILES += undef_symbol.err
625 undef_symbol.o: undef_symbol.cc
626         $(CXXCOMPILE) -O0 -g -c -fPIC $<
627 undef_symbol.so: undef_symbol.o gcctestdir/ld
628         $(CXXLINK) -Bgcctestdir/ -shared undef_symbol.o
629 undef_symbol.err: undef_symbol_main.o undef_symbol.so gcctestdir/ld
630         @echo $(CXXLINK) -Bgcctestdir/ -o undef_symbol_test undef_symbol_main.o undef_symbol.so "2>$@"
631         @if $(CXXLINK) -Bgcctestdir/ -o undef_symbol_test undef_symbol_main.o undef_symbol.so 2>$@; \
632         then \
633           echo 1>&2 "Link of undef_symbol_test should have failed"; \
634           rm -f $@; \
635           exit 1; \
636         fi
637
638
639 # Test -o when emitting to a special file (such as something in /dev).
640 check_PROGRAMS += flagstest_o_specialfile
641 flagstest_o_specialfile: flagstest_debug.o gcctestdir/ld
642         $(CXXLINK) -Bgcctestdir/ -o /dev/stdout $< 2>&1 | cat > $@
643         chmod a+x $@
644         test -s $@
645
646 if HAVE_ZLIB
647
648 # Test --compress-debug-sections.  FIXME: check we actually compress.
649 check_PROGRAMS += flagstest_compress_debug_sections
650 flagstest_compress_debug_sections: flagstest_debug.o gcctestdir/ld
651         $(CXXLINK) -Bgcctestdir/ -o $@ $< -Wl,--compress-debug-sections=zlib
652         test -s $@
653
654
655 # The specialfile output has a tricky case when we also compress debug
656 # sections, because it requires output-file resizing.
657 check_PROGRAMS += flagstest_o_specialfile_and_compress_debug_sections
658 flagstest_o_specialfile_and_compress_debug_sections: flagstest_debug.o \
659                 gcctestdir/ld
660         $(CXXLINK) -Bgcctestdir/ -o /dev/stdout $< -Wl,--compress-debug-sections=zlib 2>&1 | cat > $@
661         chmod a+x $@
662         test -s $@
663
664 endif HAVE_ZLIB
665
666 # Test symbol versioning.
667 check_PROGRAMS += ver_test
668 ver_test_SOURCES = ver_test_main.cc
669 ver_test_DEPENDENCIES = gcctestdir/ld ver_test_1.so ver_test_2.so ver_test_4.so
670 ver_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
671 ver_test_LDADD = ver_test_1.so ver_test_2.so ver_test_4.so
672 ver_test_1.so: ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so gcctestdir/ld
673         $(CXXLINK) -Bgcctestdir/ -shared ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so
674 ver_test_2.so: ver_test_2.o $(srcdir)/ver_test_2.script ver_test_4.so gcctestdir/ld
675         $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_2.script ver_test_2.o ver_test_4.so
676 ver_test_4.so: ver_test_4.o $(srcdir)/ver_test_4.script gcctestdir/ld
677         $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_4.script ver_test_4.o
678 ver_test_1.o: ver_test_1.cc
679         $(CXXCOMPILE) -c -fpic -o $@ $<
680 ver_test_2.o: ver_test_2.cc
681         $(CXXCOMPILE) -c -fpic -o $@ $<
682 ver_test_3.o: ver_test_3.cc
683         $(CXXCOMPILE) -c -fpic -o $@ $<
684 ver_test_4.o: ver_test_4.cc
685         $(CXXCOMPILE) -c -fpic -o $@ $<
686
687 check_PROGRAMS += ver_test_2
688 ver_test_2_SOURCES = ver_test_main_2.cc
689 ver_test_2_DEPENDENCIES = gcctestdir/ld ver_test_4.so ver_test_2.so
690 ver_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
691 ver_test_2_LDADD = ver_test_4.so ver_test_2.so
692
693 check_SCRIPTS += ver_test_2.sh
694 check_DATA += ver_test_2.syms
695 ver_test_2.syms: ver_test_2
696         $(TEST_READELF) -s $< >$@ 2>/dev/null
697
698 check_SCRIPTS += ver_test_4.sh
699 check_DATA += ver_test_4.syms
700 ver_test_4.syms: ver_test_4.so
701         $(TEST_READELF) -s $< >$@ 2>/dev/null
702
703 ver_test_5.so: ver_test_5.o $(srcdir)/ver_test_5.script ver_test_4.so gcctestdir/ld
704         $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_5.script ver_test_5.o ver_test_4.so
705 ver_test_5.o: ver_test_5.cc
706         $(CXXCOMPILE) -c -fpic -o $@ $<
707 check_SCRIPTS += ver_test_5.sh
708 check_DATA += ver_test_5.syms
709 ver_test_5.syms: ver_test_5.so
710         $(TEST_READELF) -s $< >$@ 2>/dev/null
711
712 check_PROGRAMS += ver_test_6
713 ver_test_6_SOURCES = ver_test_6.c
714 ver_test_6_DEPENDENCIES = gcctestdir/ld ver_test_2.so
715 ver_test_6_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
716 ver_test_6_LDADD = ver_test_2.so
717
718 ver_test_7.so: ver_test_4.o $(srcdir)/ver_test_4.script ver_test_7.o gcctestdir/ld
719         $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_4.script ver_test_4.o ver_test_7.o
720 ver_test_7.o: ver_test_7.cc
721         $(CXXCOMPILE) -c -fpic -o $@ $<
722 check_SCRIPTS += ver_test_7.sh
723 check_DATA += ver_test_7.syms
724 ver_test_7.syms: ver_test_7.so
725         $(TEST_READELF) -s $< >$@ 2>/dev/null
726
727 check_PROGRAMS += script_test_1
728 script_test_1_SOURCES = script_test_1.cc
729 script_test_1_DEPENDENCIES = gcctestdir/ld script_test_1.t
730 script_test_1_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -T $(srcdir)/script_test_1.t
731
732 check_PROGRAMS += script_test_2
733 script_test_2_SOURCES = script_test_2.cc script_test_2a.cc script_test_2b.cc
734 script_test_2_DEPENDENCIES = gcctestdir/ld script_test_2.t
735 script_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -T $(srcdir)/script_test_2.t
736
737 check_PROGRAMS += justsyms
738 justsyms_SOURCES = justsyms_1.cc
739 justsyms_DEPENDENCIES = gcctestdir/ld justsyms_2r.o
740 justsyms_LDFLAGS = -Bgcctestdir/ -Wl,-R,justsyms_2r.o
741 justsyms_2.o: justsyms_2.cc
742         $(CXXCOMPILE) -c -o $@ $<
743 justsyms_2r.o: justsyms_2.o gcctestdir/ld $(srcdir)/justsyms.t
744         gcctestdir/ld -o $@ -r -T $(srcdir)/justsyms.t justsyms_2.o
745
746 check_PROGRAMS += binary_test
747 binary_test_SOURCES = binary_test.cc
748 binary_test_DEPENDENCIES = gcctestdir/ld binary.txt
749 binary_test_LDFLAGS = -Bgcctestdir/ -Wl,--format,binary,binary.txt,--format,elf
750 # Copy the file to the build directory to avoid worrying about the
751 # full pathname in the generated symbols.
752 binary.txt: $(srcdir)/binary.in
753         rm -f $@
754         $(LN_S) $< $@
755
756 check_SCRIPTS += ver_matching_test.sh
757 check_DATA += ver_matching_test.stdout
758 MOSTLYCLEANFILES += ver_matching_test.stdout
759 ver_matching_def.so: ver_matching_def.cc gcctestdir/ld
760         $(CXXLINK) -O0 -Bgcctestdir/ -shared $(srcdir)/ver_matching_def.cc -Wl,--version-script=$(srcdir)/version_script.map
761 ver_matching_test.stdout: ver_matching_def.so
762         $(TEST_OBJDUMP) -T ver_matching_def.so | $(TEST_CXXFILT) > ver_matching_test.stdout
763
764 check_PROGRAMS += script_test_3
765 check_SCRIPTS += script_test_3.sh
766 check_DATA += script_test_3.stdout
767 MOSTLYCLEANFILES += script_test_3.stdout
768 script_test_3: basic_test.o gcctestdir/ld script_test_3.t
769         $(CXXLINK) -Bgcctestdir/ basic_test.o -T $(srcdir)/script_test_3.t
770 script_test_3.stdout: script_test_3
771         $(TEST_READELF) -SlW script_test_3 > script_test_3.stdout
772
773 check_SCRIPTS += script_test_4.sh
774 check_DATA += script_test_4.stdout
775 MOSTLYCLEANFILES += script_test_4.stdout
776 script_test_4: basic_test.o gcctestdir/ld $(srcdir)/script_test_4.t
777         $(CXXLINK) -Bgcctestdir/ basic_test.o -T $(srcdir)/script_test_4.t
778 script_test_4.stdout: script_test_4
779         $(TEST_READELF) -SlW script_test_4 > script_test_4.stdout
780
781 endif GCC
782 endif NATIVE_LINKER