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