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