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