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