PR 9836
[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_CFLAGS = $(WARN_CFLAGS) $(LFS_CFLAGS) -fmerge-constants
13 AM_CXXFLAGS = $(WARN_CXXFLAGS) $(LFS_CFLAGS) -fmerge-constants
14
15 INCLUDES = \
16         -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../../include \
17         -I$(srcdir)/../../elfcpp -I.. \
18         -DLOCALEDIR="\"$(datadir)/locale\"" \
19         @INCINTL@
20
21 TEST_READELF = $(top_builddir)/../binutils/readelf
22 TEST_OBJDUMP = $(top_builddir)/../binutils/objdump
23 TEST_CXXFILT = $(top_builddir)/../binutils/cxxfilt
24 TEST_STRIP = $(top_builddir)/../binutils/strip-new
25 TEST_AR = $(top_builddir)/../binutils/ar
26
27 if PLUGINS
28 LIBDL = -ldl
29 endif
30
31 if THREADS
32 THREADSLIB = -lpthread
33 endif
34
35 if OMP_SUPPORT
36 TLS_TEST_C_CFLAGS = -fopenmp
37 endif
38
39 # 'make clean' is good about deleting some intermediate files (such as
40 # .o's), but not all of them (such as .so's and .err files).  We
41 # improve on that here.  automake-1.9 info docs say "mostlyclean" is
42 # the right choice for files 'make' builds that people rebuild.
43 MOSTLYCLEANFILES = *.so
44
45
46 # We will add to these later, for each individual test.  Note
47 # that we add each test under check_SCRIPTS or check_PROGRAMS;
48 # the TESTS variable is automatically populated from these.
49 check_SCRIPTS =
50 check_DATA =
51 check_PROGRAMS =
52 BUILT_SOURCES =
53
54 TESTS = $(check_SCRIPTS) $(check_PROGRAMS)
55
56 # ---------------------------------------------------------------------
57 # These tests test the internals of gold (unittests).
58
59 # Infrastucture needed for the unittests
60 check_LIBRARIES = libgoldtest.a
61 libgoldtest_a_SOURCES = test.cc testmain.cc testfile.cc
62
63 DEPENDENCIES = \
64         libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL_DEP)
65 LDADD = libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL) \
66         $(THREADSLIB) $(LIBDL)
67
68
69 # The unittests themselves
70 check_PROGRAMS += object_unittest
71 object_unittest_SOURCES = object_unittest.cc
72
73 check_PROGRAMS += binary_unittest
74 binary_unittest_SOURCES = binary_unittest.cc
75
76
77 # ---------------------------------------------------------------------
78 # These tests test the output of gold (end-to-end tests).  In
79 # particular, they make sure that gold can link "difficult" object
80 # files, and the resulting object files run correctly.  These can only
81 # run if we've built ld-new for the native architecture (that is,
82 # we're not cross-compiling it), since we run ld-new as part of these
83 # tests.  We use the gcc-specific flag '-B' to use our linker instead
84 # of the default linker, which is why we only run our tests under gcc.
85
86 if NATIVE_LINKER
87 if GCC
88
89 # Infrastucture needed for the unittests: a directory where the linker
90 # is named 'ld'.  This is because the -B flag appends 'ld' to its arg.
91 gcctestdir/ld: ../ld-new
92         test -d gcctestdir || mkdir -p gcctestdir
93         rm -f gcctestdir/ld
94         (cd gcctestdir && $(LN_S) ../../ld-new ld)
95
96 # Each of these .o's is a useful, small complete program.  They're
97 # particularly useful for making sure ld-new's flags do what they're
98 # supposed to (hence their names), but are used for many tests that
99 # don't actually involve analyzing input data.
100 flagstest_debug.o: constructor_test.cc
101         $(CXXCOMPILE) -O0 -g -c -o $@ $<
102 flagstest_ndebug.o: constructor_test.cc
103         $(CXXCOMPILE) -O0 -c -o $@ $<
104
105
106 check_PROGRAMS += basic_test
107 check_PROGRAMS += basic_static_test
108 check_PROGRAMS += basic_pic_test
109 check_PROGRAMS += basic_static_pic_test
110 basic_test.o: basic_test.cc
111         $(CXXCOMPILE) -O0 -c -o $@ $<
112 basic_test: basic_test.o gcctestdir/ld
113         $(CXXLINK) -Bgcctestdir/ basic_test.o
114 basic_static_test: basic_test.o gcctestdir/ld
115         $(CXXLINK) -Bgcctestdir/ -static basic_test.o
116
117 basic_pic_test.o: basic_test.cc
118         $(CXXCOMPILE) -O0 -c -fpic -o $@ $<
119 basic_pic_test: basic_pic_test.o gcctestdir/ld
120         $(CXXLINK) -Bgcctestdir/ basic_pic_test.o
121 basic_static_pic_test: basic_pic_test.o gcctestdir/ld
122         $(CXXLINK) -Bgcctestdir/ -static basic_pic_test.o
123
124
125 check_PROGRAMS += constructor_test
126 check_PROGRAMS += constructor_static_test
127 constructor_test_SOURCES = constructor_test.cc
128 constructor_test_DEPENDENCIES = gcctestdir/ld
129 constructor_test_LDFLAGS = -Bgcctestdir/
130
131 constructor_static_test_SOURCES = $(constructor_test_SOURCES)
132 constructor_static_test_DEPENDENCIES = $(constructor_test_DEPENDENCIES)
133 constructor_static_test_LDFLAGS = $(constructor_test_LDFLAGS) -static
134
135
136 check_PROGRAMS += two_file_test
137 check_PROGRAMS += two_file_static_test
138 check_PROGRAMS += two_file_pic_test
139 two_file_test_SOURCES = \
140         two_file_test_1.cc \
141         two_file_test_1b.cc \
142         two_file_test_2.cc \
143         two_file_test_main.cc \
144         two_file_test.h
145 two_file_test_DEPENDENCIES = gcctestdir/ld
146 two_file_test_LDFLAGS = -Bgcctestdir/
147
148 two_file_static_test_SOURCES = $(two_file_test_SOURCES)
149 two_file_static_test_DEPENDENCIES = $(two_file_test_DEPENDENCIES)
150 two_file_static_test_LDFLAGS = $(two_file_test_LDFLAGS) -static
151
152 two_file_pic_test_SOURCES = two_file_test_main.cc
153 two_file_pic_test_DEPENDENCIES = \
154         gcctestdir/ld two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o
155 two_file_pic_test_LDFLAGS = -Bgcctestdir/
156 two_file_pic_test_LDADD = two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o
157
158
159 check_PROGRAMS += two_file_shared_1_test
160 check_PROGRAMS += two_file_shared_2_test
161 check_PROGRAMS += two_file_shared_1_pic_2_test
162 check_PROGRAMS += two_file_shared_2_pic_1_test
163 check_PROGRAMS += two_file_same_shared_test
164 check_PROGRAMS += two_file_separate_shared_12_test
165 check_PROGRAMS += two_file_separate_shared_21_test
166 two_file_test_1_pic.o: two_file_test_1.cc
167         $(CXXCOMPILE) -c -fpic -o $@ $<
168 two_file_test_1b_pic.o: two_file_test_1b.cc
169         $(CXXCOMPILE) -c -fpic -o $@ $<
170 two_file_test_2_pic.o: two_file_test_2.cc
171         $(CXXCOMPILE) -c -fpic -o $@ $<
172 two_file_shared_1.so: two_file_test_1_pic.o two_file_test_1b_pic.o gcctestdir/ld
173         $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o
174 two_file_shared_2.so: two_file_test_2_pic.o gcctestdir/ld
175         $(CXXLINK) -Bgcctestdir/ -shared two_file_test_2_pic.o
176 two_file_shared.so: two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o gcctestdir/ld
177         $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o
178
179 two_file_shared_1_test_SOURCES = two_file_test_2.cc two_file_test_main.cc
180 two_file_shared_1_test_DEPENDENCIES = gcctestdir/ld two_file_shared_1.so
181 two_file_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
182 two_file_shared_1_test_LDADD = two_file_shared_1.so
183
184 two_file_shared_2_test_SOURCES = two_file_test_1.cc two_file_test_1b.cc two_file_test_main.cc
185 two_file_shared_2_test_DEPENDENCIES = gcctestdir/ld two_file_shared_2.so
186 two_file_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
187 two_file_shared_2_test_LDADD = two_file_shared_2.so
188
189 two_file_shared_1_pic_2_test_SOURCES = two_file_test_main.cc
190 two_file_shared_1_pic_2_test_DEPENDENCIES = \
191         gcctestdir/ld two_file_shared_1.so two_file_test_1_pic.o two_file_test_1b_pic.o
192 two_file_shared_1_pic_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
193 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
194
195 two_file_shared_2_pic_1_test_SOURCES = two_file_test_main.cc
196 two_file_shared_2_pic_1_test_DEPENDENCIES = \
197         gcctestdir/ld two_file_shared_2.so two_file_test_2_pic.o
198 two_file_shared_2_pic_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
199 two_file_shared_2_pic_1_test_LDADD = two_file_test_2_pic.o two_file_shared_1.so
200
201 two_file_same_shared_test_SOURCES = two_file_test_main.cc
202 two_file_same_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared.so
203 two_file_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
204 two_file_same_shared_test_LDADD = two_file_shared.so
205
206 two_file_separate_shared_12_test_SOURCES = two_file_test_main.cc
207 two_file_separate_shared_12_test_DEPENDENCIES = \
208         gcctestdir/ld two_file_shared_1.so two_file_shared_2.so
209 two_file_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
210 two_file_separate_shared_12_test_LDADD = \
211         two_file_shared_1.so two_file_shared_2.so
212
213 two_file_separate_shared_21_test_SOURCES = two_file_test_main.cc
214 two_file_separate_shared_21_test_DEPENDENCIES = \
215         gcctestdir/ld two_file_shared_1.so two_file_shared_2.so
216 two_file_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
217 two_file_separate_shared_21_test_LDADD = \
218         two_file_shared_2.so two_file_shared_1.so
219
220 check_PROGRAMS += two_file_relocatable_test
221 two_file_relocatable_test_SOURCES = two_file_test_main.cc
222 two_file_relocatable_test_DEPENDENCIES = \
223         gcctestdir/ld two_file_relocatable.o
224 two_file_relocatable_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
225 two_file_relocatable_test_LDADD = two_file_relocatable.o
226 two_file_relocatable.o: gcctestdir/ld two_file_test_1.o two_file_test_1b.o two_file_test_2.o
227         gcctestdir/ld -r -o $@ two_file_test_1.o two_file_test_1b.o two_file_test_2.o
228
229 # The nonpic tests will fail on platforms which can not put non-PIC
230 # code into shared libraries, so we just don't run them in that case.
231 if FN_PTRS_IN_SO_WITHOUT_PIC
232
233 check_PROGRAMS += two_file_shared_1_nonpic_test
234 check_PROGRAMS += two_file_shared_2_nonpic_test
235 check_PROGRAMS += two_file_same_shared_nonpic_test
236 check_PROGRAMS += two_file_separate_shared_12_nonpic_test
237 check_PROGRAMS += two_file_separate_shared_21_nonpic_test
238 check_PROGRAMS += two_file_mixed_shared_test
239 check_PROGRAMS += two_file_mixed_2_shared_test
240 two_file_shared_1_nonpic.so: two_file_test_1.o gcctestdir/ld
241         $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b.o
242 two_file_shared_2_nonpic.so: two_file_test_2.o gcctestdir/ld
243         $(CXXLINK) -Bgcctestdir/ -shared two_file_test_2.o
244 two_file_shared_nonpic.so: two_file_test_1.o two_file_test_1b.o two_file_test_2.o gcctestdir/ld
245         $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b.o two_file_test_2.o
246 two_file_shared_mixed.so: two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2.o gcctestdir/ld
247         $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2.o
248 two_file_shared_mixed_1.so: two_file_test_1.o two_file_test_1b_pic.o two_file_shared_2.so gcctestdir/ld
249         $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b_pic.o two_file_shared_2.so
250
251 two_file_shared_1_nonpic_test_SOURCES = \
252         two_file_test_2.cc two_file_test_main.cc
253 two_file_shared_1_nonpic_test_DEPENDENCIES = \
254         gcctestdir/ld two_file_shared_1_nonpic.so
255 two_file_shared_1_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
256 two_file_shared_1_nonpic_test_LDADD = two_file_shared_1_nonpic.so
257
258 two_file_shared_2_nonpic_test_SOURCES = \
259         two_file_test_1.cc two_file_test_1b.cc two_file_test_main.cc
260 two_file_shared_2_nonpic_test_DEPENDENCIES = \
261         gcctestdir/ld two_file_shared_2_nonpic.so
262 two_file_shared_2_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
263 two_file_shared_2_nonpic_test_LDADD = two_file_shared_2_nonpic.so
264
265 two_file_same_shared_nonpic_test_SOURCES = two_file_test_main.cc
266 two_file_same_shared_nonpic_test_DEPENDENCIES = \
267         gcctestdir/ld two_file_shared_nonpic.so
268 two_file_same_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
269 two_file_same_shared_nonpic_test_LDADD = two_file_shared_nonpic.so
270
271 two_file_separate_shared_12_nonpic_test_SOURCES = two_file_test_main.cc
272 two_file_separate_shared_12_nonpic_test_DEPENDENCIES = \
273         gcctestdir/ld two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so
274 two_file_separate_shared_12_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
275 two_file_separate_shared_12_nonpic_test_LDADD = \
276         two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so
277
278 two_file_separate_shared_21_nonpic_test_SOURCES = two_file_test_main.cc
279 two_file_separate_shared_21_nonpic_test_DEPENDENCIES = \
280         gcctestdir/ld two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so
281 two_file_separate_shared_21_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
282 two_file_separate_shared_21_nonpic_test_LDADD = \
283         two_file_shared_2_nonpic.so two_file_shared_1_nonpic.so
284
285 two_file_mixed_shared_test_SOURCES = two_file_test_main.cc
286 two_file_mixed_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared_mixed.so
287 two_file_mixed_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
288 two_file_mixed_shared_test_LDADD = two_file_shared_mixed.so
289
290 two_file_mixed_2_shared_test_SOURCES = two_file_test_main.cc
291 two_file_mixed_2_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared_mixed_1.so two_file_shared_2.so
292 two_file_mixed_2_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
293 two_file_mixed_2_shared_test_LDADD = two_file_shared_mixed_1.so two_file_shared_2.so
294
295 endif FN_PTRS_IN_SO_WITHOUT_PIC
296
297 check_PROGRAMS += two_file_strip_test
298 two_file_strip_test: two_file_test
299         $(TEST_STRIP) -o two_file_strip_test two_file_test
300
301 check_PROGRAMS += two_file_same_shared_strip_test
302 two_file_same_shared_strip_test_SOURCES = two_file_test_main.cc
303 two_file_same_shared_strip_test_DEPENDENCIES = \
304         gcctestdir/ld two_file_shared_strip.so
305 two_file_same_shared_strip_test_LDFLAGS = -Bgcctestdir/ -Wl,-R.
306 two_file_same_shared_strip_test_LDADD = two_file_shared_strip.so
307 two_file_shared_strip.so: two_file_shared.so
308         $(TEST_STRIP) -S -o two_file_shared_strip.so two_file_shared.so
309
310 check_PROGRAMS += common_test_1
311 common_test_1_SOURCES = common_test_1.c
312 common_test_1_DEPENDENCIES = gcctestdir/ld
313 common_test_1_LDFLAGS = -Bgcctestdir/
314
315 check_PROGRAMS += exception_test
316 check_PROGRAMS += exception_static_test
317 check_PROGRAMS += exception_shared_1_test
318 check_PROGRAMS += exception_shared_2_test
319 check_PROGRAMS += exception_same_shared_test
320 check_PROGRAMS += exception_separate_shared_12_test
321 check_PROGRAMS += exception_separate_shared_21_test
322 exception_test_1_pic.o: exception_test_1.cc
323         $(CXXCOMPILE) -c -fpic -o $@ $<
324 exception_test_2_pic.o: exception_test_2.cc
325         $(CXXCOMPILE) -c -fpic -o $@ $<
326 exception_shared_1.so: exception_test_1_pic.o gcctestdir/ld
327         $(CXXLINK) -Bgcctestdir/ -shared exception_test_1_pic.o
328 exception_shared_2.so: exception_test_2_pic.o gcctestdir/ld
329         $(CXXLINK) -Bgcctestdir/ -shared exception_test_2_pic.o
330 exception_shared.so: exception_test_1_pic.o exception_test_2_pic.o gcctestdir/ld
331         $(CXXLINK) -Bgcctestdir/ -shared exception_test_1_pic.o exception_test_2_pic.o
332
333 exception_test_SOURCES = \
334         exception_test_main.cc \
335         exception_test_1.cc \
336         exception_test_2.cc \
337         exception_test.h
338 exception_test_DEPENDENCIES = gcctestdir/ld
339 exception_test_LDFLAGS = -Bgcctestdir/
340
341 exception_static_test_SOURCES = $(exception_test_SOURCES)
342 exception_static_test_DEPENDENCIES = $(exception_test_DEPENDENCIES)
343 exception_static_test_LDFLAGS = $(exception_test_LDFLAGS) -static
344
345 exception_shared_1_test_SOURCES = exception_test_2.cc exception_test_main.cc
346 exception_shared_1_test_DEPENDENCIES = gcctestdir/ld exception_shared_1.so
347 exception_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
348 exception_shared_1_test_LDADD = exception_shared_1.so
349
350 exception_shared_2_test_SOURCES = exception_test_1.cc exception_test_main.cc
351 exception_shared_2_test_DEPENDENCIES = gcctestdir/ld exception_shared_2.so
352 exception_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
353 exception_shared_2_test_LDADD = exception_shared_2.so
354
355 exception_same_shared_test_SOURCES = exception_test_main.cc
356 exception_same_shared_test_DEPENDENCIES = gcctestdir/ld exception_shared.so
357 exception_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
358 exception_same_shared_test_LDADD = exception_shared.so
359
360 exception_separate_shared_12_test_SOURCES = exception_test_main.cc
361 exception_separate_shared_12_test_DEPENDENCIES = \
362         gcctestdir/ld exception_shared_1.so exception_shared_2.so
363 exception_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
364 exception_separate_shared_12_test_LDADD = \
365         exception_shared_1.so exception_shared_2.so
366
367 exception_separate_shared_21_test_SOURCES = exception_test_main.cc
368 exception_separate_shared_21_test_DEPENDENCIES = \
369         gcctestdir/ld exception_shared_1.so exception_shared_2.so
370 exception_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
371 exception_separate_shared_21_test_LDADD = \
372         exception_shared_2.so exception_shared_1.so
373
374
375 check_PROGRAMS += weak_test
376 weak_test_SOURCES = weak_test.cc
377 weak_test_DEPENDENCIES = gcctestdir/ld
378 weak_test_LDFLAGS = -Bgcctestdir/
379
380 check_PROGRAMS += weak_undef_test
381 weak_undef_test_SOURCES = weak_undef_test.cc
382 weak_undef_test_DEPENDENCIES = gcctestdir/ld weak_undef_lib.so alt/weak_undef_lib.so
383 weak_undef_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,alt
384 weak_undef_test_LDADD = -L . weak_undef_lib.so
385 weak_undef_file1.o: weak_undef_file1.cc
386         $(CXXCOMPILE) -c -fpic -o $@ $<
387 weak_undef_file2.o: weak_undef_file2.cc
388         $(CXXCOMPILE) -c -fpic -o $@ $<
389 weak_undef_lib.so: weak_undef_file1.o
390         $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file1.o
391 alt/weak_undef_lib.so: weak_undef_file2.o
392         test -d alt || mkdir -p alt
393         $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file2.o
394
395 if FN_PTRS_IN_SO_WITHOUT_PIC
396 check_PROGRAMS += weak_undef_nonpic_test
397 weak_undef_nonpic_test_SOURCES = weak_undef_test.cc
398 weak_undef_nonpic_test_DEPENDENCIES = gcctestdir/ld weak_undef_lib_nonpic.so alt/weak_undef_lib_nonpic.so
399 weak_undef_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,alt
400 weak_undef_nonpic_test_LDADD = -L . weak_undef_lib_nonpic.so
401 weak_undef_file1_nonpic.o: weak_undef_file1.cc
402         $(CXXCOMPILE) -c -o $@ $<
403 weak_undef_file2_nonpic.o: weak_undef_file2.cc
404         $(CXXCOMPILE) -c -o $@ $<
405 weak_undef_lib_nonpic.so: weak_undef_file1_nonpic.o
406         $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file1_nonpic.o
407 alt/weak_undef_lib_nonpic.so: weak_undef_file2_nonpic.o
408         test -d alt || mkdir -p alt
409         $(CXXLINK) -Bgcctestdir/ -shared weak_undef_file2_nonpic.o
410 endif FN_PTRS_IN_SO_WITHOUT_PIC
411
412
413 check_PROGRAMS += weak_alias_test
414 weak_alias_test_SOURCES = weak_alias_test_main.cc
415 weak_alias_test_DEPENDENCIES = \
416         gcctestdir/ld weak_alias_test_1.so weak_alias_test_2.so \
417         weak_alias_test_3.o weak_alias_test_4.so
418 weak_alias_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
419 weak_alias_test_LDADD = \
420         weak_alias_test_1.so weak_alias_test_2.so weak_alias_test_3.o \
421         weak_alias_test_4.so
422 weak_alias_test_1_pic.o: weak_alias_test_1.cc
423         $(CXXCOMPILE) -c -fpic -o $@ $<
424 weak_alias_test_1.so: weak_alias_test_1_pic.o gcctestdir/ld
425         $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_1_pic.o
426 weak_alias_test_2_pic.o: weak_alias_test_2.cc
427         $(CXXCOMPILE) -c -fpic -o $@ $<
428 weak_alias_test_2.so: weak_alias_test_2_pic.o gcctestdir/ld
429         $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_2_pic.o
430 weak_alias_test_3.o: weak_alias_test_3.cc
431         $(CXXCOMPILE) -c -o $@ $<
432 weak_alias_test_4_pic.o: weak_alias_test_4.cc
433         $(CXXCOMPILE) -c -fpic -o $@ $<
434 weak_alias_test_4.so: weak_alias_test_4_pic.o gcctestdir/ld
435         $(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_4_pic.o
436
437 check_SCRIPTS += weak_plt.sh
438 check_PROGRAMS += weak_plt
439 check_DATA += weak_plt_shared.so
440 weak_plt_main_pic.o: weak_plt_main.cc
441         $(CXXCOMPILE) -c -fpic -o $@ $<
442 weak_plt: weak_plt_main_pic.o gcctestdir/ld
443         $(CXXLINK) -Bgcctestdir/ weak_plt_main_pic.o
444 weak_plt_shared_pic.o: weak_plt_shared.cc
445         $(CXXCOMPILE) -c -fpic -o $@ $<
446 weak_plt_shared.so: weak_plt_shared_pic.o gcctestdir/ld
447         $(CXXLINK) -Bgcctestdir/ -shared weak_plt_shared_pic.o
448
449 check_PROGRAMS += copy_test
450 copy_test_SOURCES = copy_test.cc
451 copy_test_DEPENDENCIES = gcctestdir/ld copy_test_1.so copy_test_2.so
452 copy_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
453 copy_test_LDADD = copy_test_1.so copy_test_2.so
454 copy_test_1_pic.o: copy_test_1.cc
455         $(CXXCOMPILE) -c -fpic -o $@ $<
456 copy_test_1.so: gcctestdir/ld copy_test_1_pic.o
457         $(CXXLINK) -Bgcctestdir/ -shared copy_test_1_pic.o
458 copy_test_2_pic.o: copy_test_2.cc
459         $(CXXCOMPILE) -c -fpic -o $@ $<
460 copy_test_2.so: gcctestdir/ld copy_test_2_pic.o
461         $(CXXLINK) -Bgcctestdir/ -shared copy_test_2_pic.o
462
463 if TLS
464
465 check_PROGRAMS += tls_test
466 check_PROGRAMS += tls_pic_test
467 check_PROGRAMS += tls_shared_test
468 check_PROGRAMS += tls_shared_ie_test
469 check_PROGRAMS += tls_shared_gd_to_ie_test
470 tls_test_pic.o: tls_test.cc
471         $(CXXCOMPILE) -c -fpic -o $@ $<
472 tls_test_file2_pic.o: tls_test_file2.cc
473         $(CXXCOMPILE) -c -fpic -o $@ $<
474 tls_test_c_pic.o: tls_test_c.c
475         $(COMPILE) -c -fpic $(TLS_TEST_C_CFLAGS) -o $@ $<
476 tls_test_shared.so: tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o gcctestdir/ld
477         $(CXXLINK) -Bgcctestdir/ -shared tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o -Wl,-z,defs
478 tls_test_shared2.so: tls_test_file2_pic.o gcctestdir/ld
479         $(CXXLINK) -Bgcctestdir/ -shared tls_test_file2_pic.o
480
481 tls_test_pic_ie.o: tls_test.cc
482         $(CXXCOMPILE) -c -fpic -ftls-model=initial-exec -o $@ $<
483 tls_test_file2_pic_ie.o: tls_test_file2.cc
484         $(CXXCOMPILE) -c -fpic -ftls-model=initial-exec -o $@ $<
485 tls_test_c_pic_ie.o: tls_test_c.c
486         $(COMPILE) -c -fpic -ftls-model=initial-exec $(TLS_TEST_C_CFLAGS) -o $@ $<
487 tls_test_ie_shared.so: tls_test_pic_ie.o tls_test_file2_pic_ie.o tls_test_c_pic_ie.o gcctestdir/ld
488         $(CXXLINK) -Bgcctestdir/ -shared tls_test_pic_ie.o tls_test_file2_pic_ie.o tls_test_c_pic_ie.o
489
490 tls_test_SOURCES = tls_test.cc tls_test_file2.cc tls_test_main.cc tls_test.h
491 tls_test_DEPENDENCIES = gcctestdir/ld tls_test_c.o
492 tls_test_LDFLAGS = -Bgcctestdir/
493 tls_test_LDADD = tls_test_c.o -lpthread
494 tls_test_c.o: tls_test_c.c
495         $(COMPILE) -c $(TLS_TEST_C_CFLAGS) -o $@ $<
496
497 tls_pic_test_SOURCES = tls_test_main.cc
498 tls_pic_test_DEPENDENCIES = gcctestdir/ld tls_test_pic.o tls_test_file2_pic.o \
499         tls_test_c_pic.o
500 tls_pic_test_LDFLAGS = -Bgcctestdir/
501 tls_pic_test_LDADD = tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o \
502         -lpthread
503
504 tls_shared_test_SOURCES = tls_test_main.cc
505 tls_shared_test_DEPENDENCIES = gcctestdir/ld tls_test_shared.so
506 tls_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
507 tls_shared_test_LDADD = tls_test_shared.so -lpthread
508
509 tls_shared_ie_test_SOURCES = tls_test_main.cc
510 tls_shared_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_ie_shared.so
511 tls_shared_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
512 tls_shared_ie_test_LDADD = tls_test_ie_shared.so -lpthread
513
514 tls_shared_gd_to_ie_test_SOURCES = tls_test_main.cc
515 tls_shared_gd_to_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_pic.o \
516         tls_test_c_pic.o tls_test_shared2.so
517 tls_shared_gd_to_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
518 tls_shared_gd_to_ie_test_LDADD = tls_test_pic.o tls_test_c_pic.o \
519         tls_test_shared2.so -lpthread
520
521 if TLS_GNU2_DIALECT
522
523 check_PROGRAMS += tls_shared_gnu2_gd_to_ie_test
524
525 tls_test_gnu2.o: tls_test.cc
526         $(CXXCOMPILE) -c -fpic -mtls-dialect=gnu2 -o $@ $<
527 tls_test_file2_gnu2.o: tls_test_file2.cc
528         $(CXXCOMPILE) -c -fpic -mtls-dialect=gnu2 -o $@ $<
529 tls_test_c_gnu2.o: tls_test_c.c
530         $(COMPILE) -c -fpic -mtls-dialect=gnu2 $(TLS_TEST_C_CFLAGS) -o $@ $<
531 tls_test_gnu2_shared2.so: tls_test_file2_gnu2.o gcctestdir/ld
532         $(CXXLINK) -Bgcctestdir/ -shared tls_test_file2_gnu2.o
533
534 tls_shared_gnu2_gd_to_ie_test_SOURCES = tls_test_main.cc
535 tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_gnu2.o \
536         tls_test_c_gnu2.o tls_test_gnu2_shared2.so
537 tls_shared_gnu2_gd_to_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
538 tls_shared_gnu2_gd_to_ie_test_LDADD = tls_test_gnu2.o tls_test_c_gnu2.o \
539         tls_test_gnu2_shared2.so -lpthread
540
541 if TLS_DESCRIPTORS
542
543 check_PROGRAMS += tls_shared_gnu2_test
544
545 tls_test_gnu2_shared.so: tls_test_gnu2.o tls_test_file2_gnu2.o tls_test_c_gnu2.o gcctestdir/ld
546         $(CXXLINK) -Bgcctestdir/ -shared tls_test_gnu2.o tls_test_file2_gnu2.o tls_test_c_gnu2.o
547
548 tls_shared_gnu2_test_SOURCES = tls_test_main.cc
549 tls_shared_gnu2_test_DEPENDENCIES = gcctestdir/ld tls_test_gnu2_shared.so
550 tls_shared_gnu2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
551 tls_shared_gnu2_test_LDADD = tls_test_gnu2_shared.so -lpthread
552
553 endif TLS_DESCRIPTORS
554
555 endif TLS_GNU2_DIALECT
556
557 if STATIC_TLS
558 check_PROGRAMS += tls_static_test
559 check_PROGRAMS += tls_static_pic_test
560
561 tls_static_test_SOURCES = $(tls_test_SOURCES)
562 tls_static_test_DEPENDENCIES = $(tls_test_DEPENDENCIES)
563 tls_static_test_LDFLAGS = $(tls_test_LDFLAGS) -static
564 tls_static_test_LDADD = $(tls_test_LDADD)
565
566 tls_static_pic_test_SOURCES = $(tls_pic_test_SOURCES)
567 tls_static_pic_test_DEPENDENCIES = $(tls_pic_test_DEPENDENCIES)
568 tls_static_pic_test_LDFLAGS = $(tls_pic_test_LDFLAGS) -static
569 tls_static_pic_test_LDADD = $(tls_pic_test_LDADD)
570 endif
571
572 if FN_PTRS_IN_SO_WITHOUT_PIC
573 check_PROGRAMS += tls_shared_nonpic_test
574 tls_test_shared_nonpic.so: tls_test.o tls_test_file2.o tls_test_c.o gcctestdir/ld
575         $(CXXLINK) -Bgcctestdir/ -shared tls_test.o tls_test_file2.o tls_test_c.o
576
577 tls_shared_nonpic_test_SOURCES = tls_test_main.cc
578 tls_shared_nonpic_test_DEPENDENCIES = gcctestdir/ld tls_test_shared_nonpic.so
579 tls_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
580 tls_shared_nonpic_test_LDADD = tls_test_shared_nonpic.so -lpthread
581 endif FN_PTRS_IN_SO_WITHOUT_PIC
582
583 endif TLS
584
585 check_PROGRAMS += many_sections_test
586 many_sections_test_SOURCES = many_sections_test.cc
587 many_sections_test_DEPENDENCIES = gcctestdir/ld
588 many_sections_test_LDFLAGS = -Bgcctestdir/ -rdynamic
589
590 BUILT_SOURCES += many_sections_define.h
591 many_sections_define.h:
592         (for i in `seq 1 70000`; do \
593            echo "int var_$$i __attribute__((section(\"section_$$i\"))) = $$i;"; \
594          done) > $@.tmp
595         mv -f $@.tmp $@
596
597 BUILT_SOURCES += many_sections_check.h
598 many_sections_check.h:
599         (for i in `seq 1 1000 70000`; do \
600            echo "assert(var_$$i == $$i);"; \
601          done) > $@.tmp
602         mv -f $@.tmp $@
603
604 check_PROGRAMS += many_sections_r_test
605 many_sections_r_test.o: many_sections_test.o gcctestdir/ld
606         gcctestdir/ld -r -o $@ many_sections_test.o
607 many_sections_r_test: many_sections_r_test.o gcctestdir/ld
608         $(CXXLINK) -Bgcctestdir/ many_sections_r_test.o $(LIBS)
609
610 if CONSTRUCTOR_PRIORITY
611
612 check_PROGRAMS += initpri1
613 initpri1_SOURCES = initpri1.c
614 initpri1_DEPENDENCIES = gcctestdir/ld
615 initpri1_LDFLAGS = -Bgcctestdir/
616
617 endif
618
619
620 # Test --detect-odr-violations
621 check_SCRIPTS += debug_msg.sh
622
623 # Create the data files that debug_msg.sh analyzes.
624 check_DATA += debug_msg.err
625 MOSTLYCLEANFILES += debug_msg.err
626 debug_msg.o: debug_msg.cc
627         $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/debug_msg.cc
628 odr_violation1.o: odr_violation1.cc
629         $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/odr_violation1.cc
630 odr_violation2.o: odr_violation2.cc
631         $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/odr_violation2.cc
632 debug_msg.err: debug_msg.o odr_violation1.o odr_violation2.o gcctestdir/ld
633         @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg debug_msg.o odr_violation1.o odr_violation2.o "2>$@"
634         @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg debug_msg.o odr_violation1.o odr_violation2.o 2>$@; \
635         then \
636           echo 1>&2 "Link of debug_msg should have failed"; \
637           rm -f $@; \
638           exit 1; \
639         fi
640
641 # See if we can also detect problems when we're linking .so's, not .o's.
642 check_DATA += debug_msg_so.err
643 MOSTLYCLEANFILES += debug_msg_so.err
644 debug_msg.so: debug_msg.cc gcctestdir/ld
645         $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/debug_msg.cc
646 odr_violation1.so: odr_violation1.cc gcctestdir/ld
647         $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/odr_violation1.cc
648 odr_violation2.so: odr_violation2.cc gcctestdir/ld
649         $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/odr_violation2.cc
650 debug_msg_so.err: debug_msg.so odr_violation1.so odr_violation2.so gcctestdir/ld
651         @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_so debug_msg.so odr_violation1.so odr_violation2.so "2>$@"
652         @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_so debug_msg.so odr_violation1.so odr_violation2.so 2>$@; \
653         then \
654           echo 1>&2 "Link of debug_msg_so should have failed"; \
655           rm -f $@; \
656           exit 1; \
657         fi
658
659 # We also want to make sure we do something reasonable when there's no
660 # debug info available.  For the best test, we use .so's.
661 check_DATA += debug_msg_ndebug.err
662 MOSTLYCLEANFILES += debug_msg_ndebug.err
663 debug_msg_ndebug.so: debug_msg.cc gcctestdir/ld
664         $(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/debug_msg.cc
665 odr_violation1_ndebug.so: odr_violation1.cc gcctestdir/ld
666         $(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/odr_violation1.cc
667 odr_violation2_ndebug.so: odr_violation2.cc gcctestdir/ld
668         $(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/odr_violation2.cc
669 debug_msg_ndebug.err: debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so gcctestdir/ld
670         @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_ndebug debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so "2>$@"
671         @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_ndebug debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so 2>$@; \
672         then \
673           echo 1>&2 "Link of debug_msg_ndebug should have failed"; \
674           rm -f $@; \
675           exit 1; \
676         fi
677
678
679 # Similar to --detect-odr-violations: check for undefined symbols in .so's
680 check_SCRIPTS += undef_symbol.sh
681 check_DATA += undef_symbol.err
682 MOSTLYCLEANFILES += undef_symbol.err
683 undef_symbol.o: undef_symbol.cc
684         $(CXXCOMPILE) -O0 -g -c -fPIC $<
685 undef_symbol.so: undef_symbol.o gcctestdir/ld
686         $(CXXLINK) -Bgcctestdir/ -shared undef_symbol.o
687 undef_symbol.err: undef_symbol_main.o undef_symbol.so gcctestdir/ld
688         @echo $(CXXLINK) -Bgcctestdir/ -o undef_symbol_test undef_symbol_main.o undef_symbol.so "2>$@"
689         @if $(CXXLINK) -Bgcctestdir/ -o undef_symbol_test undef_symbol_main.o undef_symbol.so 2>$@; \
690         then \
691           echo 1>&2 "Link of undef_symbol_test should have failed"; \
692           rm -f $@; \
693           exit 1; \
694         fi
695
696
697 # Test -o when emitting to a special file (such as something in /dev).
698 check_PROGRAMS += flagstest_o_specialfile
699 flagstest_o_specialfile: flagstest_debug.o gcctestdir/ld
700         $(CXXLINK) -Bgcctestdir/ -o /dev/stdout $< 2>&1 | cat > $@
701         chmod a+x $@
702         test -s $@
703
704 if HAVE_ZLIB
705
706 # Test --compress-debug-sections.  FIXME: check we actually compress.
707 check_PROGRAMS += flagstest_compress_debug_sections
708 flagstest_compress_debug_sections: flagstest_debug.o gcctestdir/ld
709         $(CXXLINK) -Bgcctestdir/ -o $@ $< -Wl,--compress-debug-sections=zlib
710         test -s $@
711
712
713 # The specialfile output has a tricky case when we also compress debug
714 # sections, because it requires output-file resizing.
715 check_PROGRAMS += flagstest_o_specialfile_and_compress_debug_sections
716 flagstest_o_specialfile_and_compress_debug_sections: flagstest_debug.o \
717                 gcctestdir/ld
718         $(CXXLINK) -Bgcctestdir/ -o /dev/stdout $< -Wl,--compress-debug-sections=zlib 2>&1 | cat > $@
719         chmod a+x $@
720         test -s $@
721
722 endif HAVE_ZLIB
723
724 # Test symbol versioning.
725 check_PROGRAMS += ver_test
726 ver_test_SOURCES = ver_test_main.cc
727 ver_test_DEPENDENCIES = gcctestdir/ld ver_test_1.so ver_test_2.so ver_test_4.so
728 ver_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
729 ver_test_LDADD = ver_test_1.so ver_test_2.so ver_test_4.so
730 ver_test_1.so: ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so gcctestdir/ld
731         $(CXXLINK) -Bgcctestdir/ -shared ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so
732 ver_test_2.so: ver_test_2.o $(srcdir)/ver_test_2.script ver_test_4.so gcctestdir/ld
733         $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_2.script ver_test_2.o ver_test_4.so
734 ver_test_4.so: ver_test_4.o $(srcdir)/ver_test_4.script gcctestdir/ld
735         $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_4.script ver_test_4.o
736 ver_test_1.o: ver_test_1.cc
737         $(CXXCOMPILE) -c -fpic -o $@ $<
738 ver_test_2.o: ver_test_2.cc
739         $(CXXCOMPILE) -c -fpic -o $@ $<
740 ver_test_3.o: ver_test_3.cc
741         $(CXXCOMPILE) -c -fpic -o $@ $<
742 ver_test_4.o: ver_test_4.cc
743         $(CXXCOMPILE) -c -fpic -o $@ $<
744
745 check_SCRIPTS += ver_test_1.sh
746 check_DATA += ver_test_1.syms
747 ver_test_1.syms: ver_test_1.so
748         $(TEST_READELF) -s $< >$@ 2>/dev/null
749
750 check_PROGRAMS += ver_test_2
751 ver_test_2_SOURCES = ver_test_main_2.cc
752 ver_test_2_DEPENDENCIES = gcctestdir/ld ver_test_4.so ver_test_2.so
753 ver_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
754 ver_test_2_LDADD = ver_test_4.so ver_test_2.so
755
756 check_SCRIPTS += ver_test_2.sh
757 check_DATA += ver_test_2.syms
758 ver_test_2.syms: ver_test_2
759         $(TEST_READELF) -s $< >$@ 2>/dev/null
760
761 check_SCRIPTS += ver_test_4.sh
762 check_DATA += ver_test_4.syms
763 ver_test_4.syms: ver_test_4.so
764         $(TEST_READELF) -s $< >$@ 2>/dev/null
765
766 ver_test_5.so: ver_test_5.o $(srcdir)/ver_test_5.script ver_test_4.so gcctestdir/ld
767         $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_5.script ver_test_5.o ver_test_4.so
768 ver_test_5.o: ver_test_5.cc
769         $(CXXCOMPILE) -c -fpic -o $@ $<
770 check_SCRIPTS += ver_test_5.sh
771 check_DATA += ver_test_5.syms
772 ver_test_5.syms: ver_test_5.so
773         $(TEST_READELF) -s $< >$@ 2>/dev/null
774
775 check_PROGRAMS += ver_test_6
776 ver_test_6_SOURCES = ver_test_6.c
777 ver_test_6_DEPENDENCIES = gcctestdir/ld ver_test_2.so
778 ver_test_6_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
779 ver_test_6_LDADD = ver_test_2.so
780
781 ver_test_7.so: ver_test_4.o $(srcdir)/ver_test_4.script ver_test_7.o gcctestdir/ld
782         $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_4.script ver_test_4.o ver_test_7.o
783 ver_test_7.o: ver_test_7.cc
784         $(CXXCOMPILE) -c -fpic -o $@ $<
785 check_SCRIPTS += ver_test_7.sh
786 check_DATA += ver_test_7.syms
787 ver_test_7.syms: ver_test_7.so
788         $(TEST_READELF) -s $< >$@ 2>/dev/null
789
790 check_PROGRAMS += ver_test_8
791 ver_test_8_SOURCES = two_file_test_main.cc
792 ver_test_8_DEPENDENCIES = gcctestdir/ld ver_test_8_1.so ver_test_8_2.so
793 ver_test_8_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
794 ver_test_8_LDADD = ver_test_8_1.so ver_test_8_2.so
795 ver_test_8_1.so: two_file_test_1_pic.o two_file_test_1b_pic.o ver_test_8_2.so gcctestdir/ld
796         $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o ver_test_8_2.so
797 ver_test_8_2.so: two_file_test_2_pic.o $(srcdir)/ver_test_8.script gcctestdir/ld
798         $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_8.script two_file_test_2_pic.o
799
800 check_PROGRAMS += ver_test_9
801 ver_test_9_SOURCES = ver_test_main.cc
802 ver_test_9_DEPENDENCIES = gcctestdir/ld ver_test_9.so
803 ver_test_9_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
804 ver_test_9_LDADD = ver_test_9.so
805 ver_test_9.so: ver_test_9.o ver_test_4.so ver_test_5.so gcctestdir/ld
806         $(CXXLINK) -Bgcctestdir/ -shared ver_test_9.o ver_test_5.so ver_test_4.so
807 ver_test_9.o: ver_test_9.cc
808         $(CXXCOMPILE) -c -fpic -o $@ $<
809
810 check_SCRIPTS += ver_test_10.sh
811 check_DATA += ver_test_10.syms
812 ver_test_10.syms: ver_test_10.so
813         $(TEST_READELF) -s $< >$@ 2>/dev/null
814 ver_test_10.so: gcctestdir/ld ver_test_2.o ver_test_10.script
815         $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_10.script ver_test_2.o
816
817 check_PROGRAMS += protected_1
818 protected_1_SOURCES = \
819         protected_main_1.cc protected_main_2.cc protected_main_3.cc
820 protected_1_DEPENDENCIES = gcctestdir/ld protected_1.so
821 protected_1_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
822 protected_1_LDADD = protected_1.so
823
824 protected_1.so: gcctestdir/ld protected_1_pic.o protected_2_pic.o protected_3_pic.o
825         $(CXXLINK) -Bgcctestdir/ -shared protected_1_pic.o protected_2_pic.o protected_3_pic.o
826 protected_1_pic.o: protected_1.cc
827         $(CXXCOMPILE) -c -fpic -o $@ $<
828 protected_2_pic.o: protected_2.cc
829         $(CXXCOMPILE) -c -fpic -o $@ $<
830 protected_3_pic.o: protected_3.cc
831         $(CXXCOMPILE) -c -fpic -o $@ $<
832
833 check_PROGRAMS += protected_2
834 protected_2_SOURCES = protected_main_1.cc protected_3.cc
835 protected_2_DEPENDENCIES = gcctestdir/ld protected_1.so
836 protected_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
837 protected_2_LDADD = protected_1.so
838
839 check_PROGRAMS += relro_test
840 relro_test_SOURCES = relro_test_main.cc
841 relro_test_DEPENDENCIES = gcctestdir/ld relro_test.so
842 relro_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
843 relro_test_LDADD = relro_test.so
844 relro_test.so: gcctestdir/ld relro_test_pic.o
845         $(CXXLINK) -Bgcctestdir/ -shared -Wl,-z,relro relro_test_pic.o
846 relro_test_pic.o: relro_test.cc
847         $(CXXCOMPILE) -c -fpic -o $@ $<
848
849 check_PROGRAMS += relro_script_test
850 relro_script_test_SOURCES = relro_test_main.cc
851 relro_script_test_DEPENDENCIES = gcctestdir/ld relro_script_test.so
852 relro_script_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
853 relro_script_test_LDADD = relro_script_test.so
854 relro_script_test.so: gcctestdir/ld relro_script_test.t relro_test_pic.o
855         $(CXXLINK) -Bgcctestdir/ -shared -Wl,-z,relro -T $(srcdir)/relro_script_test.t relro_test_pic.o
856
857 check_PROGRAMS += script_test_1
858 script_test_1_SOURCES = script_test_1.cc
859 script_test_1_DEPENDENCIES = gcctestdir/ld script_test_1.t
860 script_test_1_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -T $(srcdir)/script_test_1.t
861
862 check_PROGRAMS += script_test_2
863 script_test_2_SOURCES = script_test_2.cc script_test_2a.cc script_test_2b.cc
864 script_test_2_DEPENDENCIES = gcctestdir/ld script_test_2.t
865 script_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -T $(srcdir)/script_test_2.t
866
867 check_PROGRAMS += justsyms
868 justsyms_SOURCES = justsyms_1.cc
869 justsyms_DEPENDENCIES = gcctestdir/ld justsyms_2r.o
870 justsyms_LDFLAGS = -Bgcctestdir/ -Wl,-R,justsyms_2r.o
871 justsyms_2.o: justsyms_2.cc
872         $(CXXCOMPILE) -c -o $@ $<
873 justsyms_2r.o: justsyms_2.o gcctestdir/ld $(srcdir)/justsyms.t
874         gcctestdir/ld -o $@ -r -T $(srcdir)/justsyms.t justsyms_2.o
875
876 check_PROGRAMS += binary_test
877 binary_test_SOURCES = binary_test.cc
878 binary_test_DEPENDENCIES = gcctestdir/ld binary.txt
879 binary_test_LDFLAGS = -Bgcctestdir/ -Wl,--format,binary,binary.txt,--format,elf
880 # Copy the file to the build directory to avoid worrying about the
881 # full pathname in the generated symbols.
882 binary.txt: $(srcdir)/binary.in
883         rm -f $@
884         $(LN_S) $< $@
885
886 check_SCRIPTS += ver_matching_test.sh
887 check_DATA += ver_matching_test.stdout
888 MOSTLYCLEANFILES += ver_matching_test.stdout
889 ver_matching_def.so: ver_matching_def.cc gcctestdir/ld
890         $(CXXLINK) -O0 -Bgcctestdir/ -shared $(srcdir)/ver_matching_def.cc -Wl,--version-script=$(srcdir)/version_script.map
891 ver_matching_test.stdout: ver_matching_def.so
892         $(TEST_OBJDUMP) -T ver_matching_def.so | $(TEST_CXXFILT) > ver_matching_test.stdout
893
894 check_PROGRAMS += script_test_3
895 check_SCRIPTS += script_test_3.sh
896 check_DATA += script_test_3.stdout
897 MOSTLYCLEANFILES += script_test_3.stdout
898 script_test_3: basic_test.o gcctestdir/ld script_test_3.t
899         $(CXXLINK) -Bgcctestdir/ basic_test.o -T $(srcdir)/script_test_3.t
900 script_test_3.stdout: script_test_3
901         $(TEST_READELF) -SlW script_test_3 > script_test_3.stdout
902
903 check_SCRIPTS += script_test_4.sh
904 check_DATA += script_test_4.stdout
905 MOSTLYCLEANFILES += script_test_4.stdout
906 script_test_4: basic_test.o gcctestdir/ld $(srcdir)/script_test_4.t
907         $(CXXLINK) -Bgcctestdir/ basic_test.o -T $(srcdir)/script_test_4.t
908 script_test_4.stdout: script_test_4
909         $(TEST_READELF) -SlW script_test_4 > script_test_4.stdout
910
911 check_SCRIPTS += script_test_5.sh
912 check_DATA += script_test_5.stdout
913 MOSTLYCLEANFILES += script_test_5.stdout
914 script_test_5: script_test_5.o gcctestdir/ld $(srcdir)/script_test_5.t
915         $(CXXLINK) -Bgcctestdir/ script_test_5.o -T $(srcdir)/script_test_5.t
916 script_test_5.stdout: script_test_5
917         $(TEST_READELF) -SW script_test_5 > script_test_5.stdout
918
919 # Test --dynamic-list, --dynamic-list-data, --dynamic-list-cpp-new,
920 # and --dynamic-list-cpp-typeinfo
921
922 check_SCRIPTS += dynamic_list.sh
923 check_DATA += dynamic_list.stdout
924 MOSTLYCLEANFILES += dynamic_list.stdout
925 dynamic_list: basic_test.o gcctestdir/ld $(srcdir)/dynamic_list.t
926         $(CXXLINK) -Bgcctestdir/ basic_test.o \
927           -Wl,--dynamic-list $(srcdir)/dynamic_list.t \
928           -Wl,--dynamic-list-data \
929           -Wl,--dynamic-list-cpp-new \
930           -Wl,--dynamic-list-cpp-typeinfo
931 dynamic_list.stdout: dynamic_list
932         $(TEST_READELF) -DWs dynamic_list > dynamic_list.stdout
933
934 check_PROGRAMS += thin_archive_test_1
935 thin_archive_test_1_SOURCES = thin_archive_main.cc
936 thin_archive_test_1_DEPENDENCIES = gcctestdir/ld libthin1.a alt/libthin2.a
937 thin_archive_test_1_LDFLAGS = -Bgcctestdir/ -Lalt
938 thin_archive_test_1_LDADD = libthin1.a -lthin2
939
940 check_PROGRAMS += thin_archive_test_2
941 thin_archive_test_2_SOURCES = thin_archive_main.cc
942 thin_archive_test_2_DEPENDENCIES = gcctestdir/ld libthinall.a
943 thin_archive_test_2_LDFLAGS = -Bgcctestdir/ -L.
944 thin_archive_test_2_LDADD = -lthinall
945
946 libthin1.a: thin_archive_test_1.o alt/thin_archive_test_2.o
947         rm -f $@
948         $(TEST_AR) crT $@ $^
949 alt/libthin2.a: thin_archive_test_3.o alt/thin_archive_test_4.o
950         rm -f $@
951         $(TEST_AR) crT $@ $^
952 libthin3.a: thin_archive_test_1.o alt/thin_archive_test_4.o
953         rm -f $@
954         $(TEST_AR) crT $@ $^
955 alt/libthin4.a: alt/thin_archive_test_2.o thin_archive_test_3.o
956         rm -f $@
957         $(TEST_AR) crT $@ $^
958 libthinall.a: libthin3.a alt/libthin4.a
959         rm -f $@
960         $(TEST_AR) crT $@ $^
961 alt/thin_archive_test_2.o: thin_archive_test_2.cc
962         test -d alt || mkdir -p alt
963         $(CXXCOMPILE) -c -o $@ $<
964 alt/thin_archive_test_4.o: thin_archive_test_4.cc
965         test -d alt || mkdir -p alt
966         $(CXXCOMPILE) -c -o $@ $<
967
968 if PLUGINS
969
970 check_PROGRAMS += plugin_test_1
971 check_SCRIPTS += plugin_test_1.sh
972 check_DATA += plugin_test_1.err
973 MOSTLYCLEANFILES += plugin_test_1.err
974 plugin_test_1: two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms gcctestdir/ld plugin_test.so
975         $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms 2>plugin_test_1.err
976 plugin_test_1.err: plugin_test_1
977         @touch plugin_test_1.err
978
979 check_PROGRAMS += plugin_test_2
980 check_SCRIPTS += plugin_test_2.sh
981 check_DATA += plugin_test_2.err
982 MOSTLYCLEANFILES += plugin_test_2.err
983 plugin_test_2: two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_shared_2.so gcctestdir/ld plugin_test.so
984         $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,-R,.,--plugin,"./plugin_test.so" two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_shared_2.so 2>plugin_test_2.err
985 plugin_test_2.err: plugin_test_2
986         @touch plugin_test_2.err
987
988 check_PROGRAMS += plugin_test_3
989 check_SCRIPTS += plugin_test_3.sh
990 check_DATA += plugin_test_3.err
991 MOSTLYCLEANFILES += plugin_test_3.err
992 plugin_test_3: two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms gcctestdir/ld plugin_test.so
993         $(CXXLINK) -Bgcctestdir/ -Wl,--export-dynamic -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_main.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms empty.syms 2>plugin_test_3.err
994 plugin_test_3.err: plugin_test_3
995         @touch plugin_test_3.err
996
997 check_PROGRAMS += plugin_test_4
998 check_SCRIPTS += plugin_test_4.sh
999 check_DATA += plugin_test_4.err
1000 MOSTLYCLEANFILES += plugin_test_4.err
1001 plugin_test_4: two_file_test_main.o plugin_test_4.a gcctestdir/ld plugin_test.so
1002         $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_main.o -Wl,--whole-archive,plugin_test_4.a,--no-whole-archive 2>plugin_test_4.err
1003 plugin_test_4.err: plugin_test_4
1004         @touch plugin_test_4.err
1005
1006 plugin_test_4.a: two_file_test_1.syms two_file_test_1b.syms two_file_test_2.syms
1007         $(TEST_AR) cr $@ $^
1008
1009 plugin_test.so: plugin_test.o
1010         $(LINK) -Bgcctestdir/ -shared plugin_test.o
1011 plugin_test.o: plugin_test.c
1012         $(COMPILE) -O0 -c -fpic -o $@ $<
1013
1014 two_file_test_main.syms: two_file_test_main.o
1015         $(TEST_READELF) -sW $< >$@ 2>/dev/null
1016 two_file_test_1.syms: two_file_test_1.o
1017         $(TEST_READELF) -sW $< >$@ 2>/dev/null
1018 two_file_test_1b.syms: two_file_test_1b.o
1019         $(TEST_READELF) -sW $< >$@ 2>/dev/null
1020 two_file_test_2.syms: two_file_test_2.o
1021         $(TEST_READELF) -sW $< >$@ 2>/dev/null
1022 empty.syms:
1023         @echo "" >empty.syms
1024         @echo "Symbol table" >>empty.syms
1025
1026 endif PLUGINS
1027
1028 endif GCC
1029 endif NATIVE_LINKER