* symtab.cc (Symbol_table::add_from_relobj): Don't set the version
[deliverable/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.
494e05f4 12AM_CXXFLAGS = $(WARN_CXXFLAGS) $(LFS_CFLAGS) -fmerge-constants
5a6f7e2d 13
fa99aa09 14INCLUDES = \
5a6f7e2d
ILT
15 -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../../include \
16 -I$(srcdir)/../../elfcpp \
17 -DLOCALEDIR="\"$(datadir)/locale\"" \
18 @INCINTL@
19
fe9a4c12
ILT
20if THREADS
21THREADSLIB = -lpthread
22endif
23
351a8000
ILT
24# 'make clean' is good about deleting some intermediate files (such as
25# .o's), but not all of them (such as .so's and .err files). We
26# improve on that here. automake-1.9 info docs say "mostlyclean" is
27# the right choice for files 'make' builds that people rebuild.
28MOSTLYCLEANFILES = *.so
6eee141f 29
6eee141f 30
351a8000
ILT
31# We will add to these later, for each individual test. Note
32# that we add each test under check_SCRIPTS or check_PROGRAMS;
33# the TESTS variable is automatically populated from these.
34check_SCRIPTS =
35check_DATA =
36check_PROGRAMS =
37TESTS = $(check_SCRIPTS) $(check_PROGRAMS)
22dc1b09 38
351a8000
ILT
39# ---------------------------------------------------------------------
40# These tests test the internals of gold (unittests).
5a6f7e2d 41
351a8000 42# Infrastucture needed for the unittests
5a6f7e2d
ILT
43check_LIBRARIES = libgoldtest.a
44libgoldtest_a_SOURCES = test.cc testmain.cc testfile.cc
45
ad2d6943
ILT
46DEPENDENCIES = \
47 libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL_DEP)
fe9a4c12
ILT
48LDADD = libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL) \
49 $(THREADSLIB)
5a6f7e2d 50
5a6f7e2d 51
351a8000
ILT
52# The unittests themselves
53check_PROGRAMS += object_unittest
5a6f7e2d 54object_unittest_SOURCES = object_unittest.cc
22dc1b09 55
bc644c6c
ILT
56check_PROGRAMS += binary_unittest
57binary_unittest_SOURCES = binary_unittest.cc
58
351a8000
ILT
59
60# ---------------------------------------------------------------------
61# These tests test the output of gold (end-to-end tests). In
62# particular, they make sure that gold can link "difficult" object
63# files, and the resulting object files run correctly. These can only
64# run if we've built ld-new for the native architecture (that is,
65# we're not cross-compiling it), since we run ld-new as part of these
66# tests. We use the gcc-specific flag '-B' to use our linker instead
67# of the default linker, which is why we only run our tests under gcc.
a360aedd 68
e2827e5f 69if NATIVE_LINKER
351a8000 70if GCC
e2827e5f 71
351a8000
ILT
72# Infrastucture needed for the unittests: a directory where the linker
73# is named 'ld'. This is because the -B flag appends 'ld' to its arg.
e2827e5f
ILT
74gcctestdir/ld: ../ld-new
75 test -d gcctestdir || mkdir -p gcctestdir
76 rm -f gcctestdir/ld
77 (cd gcctestdir && $(LN_S) ../../ld-new ld)
78
351a8000
ILT
79# Each of these .o's is a useful, small complete program. They're
80# particularly useful for making sure ld-new's flags do what they're
81# supposed to (hence their names), but are used for many tests that
82# don't actually involve analyzing input data.
43771f76
ILT
83flagstest_debug.o: constructor_test.cc
84 $(CXXCOMPILE) -O0 -g -c -o $@ $<
85flagstest_ndebug.o: constructor_test.cc
86 $(CXXCOMPILE) -O0 -c -o $@ $<
87
43771f76 88
351a8000
ILT
89check_PROGRAMS += basic_test
90check_PROGRAMS += basic_static_test
91check_PROGRAMS += basic_pic_test
92check_PROGRAMS += basic_static_pic_test
56ba9a23 93basic_test.o: basic_test.cc
22dc1b09 94 $(CXXCOMPILE) -O0 -c -o $@ $<
56ba9a23
ILT
95basic_test: basic_test.o gcctestdir/ld
96 $(CXXLINK) -Bgcctestdir/ basic_test.o
97basic_static_test: basic_test.o gcctestdir/ld
98 $(CXXLINK) -Bgcctestdir/ -static basic_test.o
22dc1b09 99
56ba9a23 100basic_pic_test.o: basic_test.cc
22dc1b09 101 $(CXXCOMPILE) -O0 -c -fpic -o $@ $<
56ba9a23
ILT
102basic_pic_test: basic_pic_test.o gcctestdir/ld
103 $(CXXLINK) -Bgcctestdir/ basic_pic_test.o
104basic_static_pic_test: basic_pic_test.o gcctestdir/ld
105 $(CXXLINK) -Bgcctestdir/ -static basic_pic_test.o
22dc1b09 106
351a8000
ILT
107
108check_PROGRAMS += constructor_test
109check_PROGRAMS += constructor_static_test
d5026652
ILT
110constructor_test_SOURCES = constructor_test.cc
111constructor_test_DEPENDENCIES = gcctestdir/ld
112constructor_test_LDFLAGS = -Bgcctestdir/
113
351a8000
ILT
114constructor_static_test_SOURCES = $(constructor_test_SOURCES)
115constructor_static_test_DEPENDENCIES = $(constructor_test_DEPENDENCIES)
116constructor_static_test_LDFLAGS = $(constructor_test_LDFLAGS) -static
cb615bc1 117
351a8000
ILT
118
119check_PROGRAMS += two_file_test
120check_PROGRAMS += two_file_static_test
121check_PROGRAMS += two_file_pic_test
3bd52c28
ILT
122two_file_test_SOURCES = \
123 two_file_test_1.cc \
03e8f2b2 124 two_file_test_1b.cc \
3bd52c28
ILT
125 two_file_test_2.cc \
126 two_file_test_main.cc \
127 two_file_test.h
128two_file_test_DEPENDENCIES = gcctestdir/ld
129two_file_test_LDFLAGS = -Bgcctestdir/
130
351a8000
ILT
131two_file_static_test_SOURCES = $(two_file_test_SOURCES)
132two_file_static_test_DEPENDENCIES = $(two_file_test_DEPENDENCIES)
133two_file_static_test_LDFLAGS = $(two_file_test_LDFLAGS) -static
f958d5fc
ILT
134
135two_file_pic_test_SOURCES = two_file_test_main.cc
136two_file_pic_test_DEPENDENCIES = \
03e8f2b2 137 gcctestdir/ld two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o
f958d5fc 138two_file_pic_test_LDFLAGS = -Bgcctestdir/
03e8f2b2 139two_file_pic_test_LDADD = two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o
f958d5fc 140
351a8000
ILT
141
142check_PROGRAMS += two_file_shared_1_test
143check_PROGRAMS += two_file_shared_2_test
144check_PROGRAMS += two_file_shared_1_pic_2_test
145check_PROGRAMS += two_file_shared_2_pic_1_test
146check_PROGRAMS += two_file_same_shared_test
147check_PROGRAMS += two_file_separate_shared_12_test
148check_PROGRAMS += two_file_separate_shared_21_test
149two_file_test_1_pic.o: two_file_test_1.cc
150 $(CXXCOMPILE) -c -fpic -o $@ $<
03e8f2b2
ILT
151two_file_test_1b_pic.o: two_file_test_1b.cc
152 $(CXXCOMPILE) -c -fpic -o $@ $<
351a8000
ILT
153two_file_test_2_pic.o: two_file_test_2.cc
154 $(CXXCOMPILE) -c -fpic -o $@ $<
03e8f2b2
ILT
155two_file_shared_1.so: two_file_test_1_pic.o two_file_test_1b_pic.o gcctestdir/ld
156 $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o
351a8000
ILT
157two_file_shared_2.so: two_file_test_2_pic.o gcctestdir/ld
158 $(CXXLINK) -Bgcctestdir/ -shared two_file_test_2_pic.o
03e8f2b2
ILT
159two_file_shared.so: two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o gcctestdir/ld
160 $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o
351a8000 161
3bd52c28
ILT
162two_file_shared_1_test_SOURCES = two_file_test_2.cc two_file_test_main.cc
163two_file_shared_1_test_DEPENDENCIES = gcctestdir/ld two_file_shared_1.so
164two_file_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
165two_file_shared_1_test_LDADD = two_file_shared_1.so
166
03e8f2b2 167two_file_shared_2_test_SOURCES = two_file_test_1.cc two_file_test_1b.cc two_file_test_main.cc
3bd52c28
ILT
168two_file_shared_2_test_DEPENDENCIES = gcctestdir/ld two_file_shared_2.so
169two_file_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
170two_file_shared_2_test_LDADD = two_file_shared_2.so
171
386c048c
ILT
172two_file_shared_1_pic_2_test_SOURCES = two_file_test_main.cc
173two_file_shared_1_pic_2_test_DEPENDENCIES = \
03e8f2b2 174 gcctestdir/ld two_file_shared_1.so two_file_test_1_pic.o two_file_test_1b_pic.o
386c048c 175two_file_shared_1_pic_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
03e8f2b2 176two_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
177
178two_file_shared_2_pic_1_test_SOURCES = two_file_test_main.cc
179two_file_shared_2_pic_1_test_DEPENDENCIES = \
180 gcctestdir/ld two_file_shared_2.so two_file_test_2_pic.o
181two_file_shared_2_pic_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
182two_file_shared_2_pic_1_test_LDADD = two_file_test_2_pic.o two_file_shared_1.so
183
3bd52c28
ILT
184two_file_same_shared_test_SOURCES = two_file_test_main.cc
185two_file_same_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared.so
186two_file_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
187two_file_same_shared_test_LDADD = two_file_shared.so
188
189two_file_separate_shared_12_test_SOURCES = two_file_test_main.cc
190two_file_separate_shared_12_test_DEPENDENCIES = \
191 gcctestdir/ld two_file_shared_1.so two_file_shared_2.so
192two_file_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
193two_file_separate_shared_12_test_LDADD = \
194 two_file_shared_1.so two_file_shared_2.so
195
196two_file_separate_shared_21_test_SOURCES = two_file_test_main.cc
197two_file_separate_shared_21_test_DEPENDENCIES = \
198 gcctestdir/ld two_file_shared_1.so two_file_shared_2.so
199two_file_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
200two_file_separate_shared_21_test_LDADD = \
201 two_file_shared_2.so two_file_shared_1.so
202
6a74a719
ILT
203check_PROGRAMS += two_file_relocatable_test
204two_file_relocatable_test_SOURCES = two_file_test_main.cc
205two_file_relocatable_test_DEPENDENCIES = \
206 gcctestdir/ld two_file_relocatable.o
207two_file_relocatable_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
208two_file_relocatable_test_LDADD = two_file_relocatable.o
209two_file_relocatable.o: gcctestdir/ld two_file_test_1.o two_file_test_1b.o two_file_test_2.o
210 gcctestdir/ld -r -o $@ two_file_test_1.o two_file_test_1b.o two_file_test_2.o
211
63402fe4
ILT
212# The nonpic tests will fail on platforms which can not put non-PIC
213# code into shared libraries, so we just don't run them in that case.
63402fe4 214if FN_PTRS_IN_SO_WITHOUT_PIC
3bd52c28 215
351a8000
ILT
216check_PROGRAMS += two_file_shared_1_nonpic_test
217check_PROGRAMS += two_file_shared_2_nonpic_test
218check_PROGRAMS += two_file_same_shared_nonpic_test
219check_PROGRAMS += two_file_separate_shared_12_nonpic_test
220check_PROGRAMS += two_file_separate_shared_21_nonpic_test
03e8f2b2
ILT
221check_PROGRAMS += two_file_mixed_shared_test
222check_PROGRAMS += two_file_mixed_2_shared_test
351a8000 223two_file_shared_1_nonpic.so: two_file_test_1.o gcctestdir/ld
03e8f2b2 224 $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b.o
351a8000
ILT
225two_file_shared_2_nonpic.so: two_file_test_2.o gcctestdir/ld
226 $(CXXLINK) -Bgcctestdir/ -shared two_file_test_2.o
03e8f2b2
ILT
227two_file_shared_nonpic.so: two_file_test_1.o two_file_test_1b.o two_file_test_2.o gcctestdir/ld
228 $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b.o two_file_test_2.o
229two_file_shared_mixed.so: two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2.o gcctestdir/ld
230 $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2.o
231two_file_shared_mixed_1.so: two_file_test_1.o two_file_test_1b_pic.o two_file_shared_2.so gcctestdir/ld
232 $(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b_pic.o two_file_shared_2.so
351a8000 233
3bd52c28
ILT
234two_file_shared_1_nonpic_test_SOURCES = \
235 two_file_test_2.cc two_file_test_main.cc
236two_file_shared_1_nonpic_test_DEPENDENCIES = \
237 gcctestdir/ld two_file_shared_1_nonpic.so
238two_file_shared_1_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
239two_file_shared_1_nonpic_test_LDADD = two_file_shared_1_nonpic.so
240
241two_file_shared_2_nonpic_test_SOURCES = \
03e8f2b2 242 two_file_test_1.cc two_file_test_1b.cc two_file_test_main.cc
3bd52c28
ILT
243two_file_shared_2_nonpic_test_DEPENDENCIES = \
244 gcctestdir/ld two_file_shared_2_nonpic.so
245two_file_shared_2_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
246two_file_shared_2_nonpic_test_LDADD = two_file_shared_2_nonpic.so
247
248two_file_same_shared_nonpic_test_SOURCES = two_file_test_main.cc
249two_file_same_shared_nonpic_test_DEPENDENCIES = \
250 gcctestdir/ld two_file_shared_nonpic.so
251two_file_same_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
252two_file_same_shared_nonpic_test_LDADD = two_file_shared_nonpic.so
253
254two_file_separate_shared_12_nonpic_test_SOURCES = two_file_test_main.cc
255two_file_separate_shared_12_nonpic_test_DEPENDENCIES = \
256 gcctestdir/ld two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so
257two_file_separate_shared_12_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
258two_file_separate_shared_12_nonpic_test_LDADD = \
259 two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so
260
261two_file_separate_shared_21_nonpic_test_SOURCES = two_file_test_main.cc
262two_file_separate_shared_21_nonpic_test_DEPENDENCIES = \
263 gcctestdir/ld two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so
264two_file_separate_shared_21_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
265two_file_separate_shared_21_nonpic_test_LDADD = \
266 two_file_shared_2_nonpic.so two_file_shared_1_nonpic.so
267
03e8f2b2
ILT
268two_file_mixed_shared_test_SOURCES = two_file_test_main.cc
269two_file_mixed_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared_mixed.so
270two_file_mixed_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
271two_file_mixed_shared_test_LDADD = two_file_shared_mixed.so
272
273two_file_mixed_2_shared_test_SOURCES = two_file_test_main.cc
274two_file_mixed_2_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared_mixed_1.so two_file_shared_2.so
275two_file_mixed_2_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
276two_file_mixed_2_shared_test_LDADD = two_file_shared_mixed_1.so two_file_shared_2.so
277
351a8000 278endif FN_PTRS_IN_SO_WITHOUT_PIC
3bd52c28 279
351a8000
ILT
280
281check_PROGRAMS += exception_test
282check_PROGRAMS += exception_static_test
283check_PROGRAMS += exception_shared_1_test
284check_PROGRAMS += exception_shared_2_test
285check_PROGRAMS += exception_same_shared_test
286check_PROGRAMS += exception_separate_shared_12_test
287check_PROGRAMS += exception_separate_shared_21_test
288exception_test_1_pic.o: exception_test_1.cc
289 $(CXXCOMPILE) -c -fpic -o $@ $<
290exception_test_2_pic.o: exception_test_2.cc
291 $(CXXCOMPILE) -c -fpic -o $@ $<
292exception_shared_1.so: exception_test_1_pic.o gcctestdir/ld
293 $(CXXLINK) -Bgcctestdir/ -shared exception_test_1_pic.o
294exception_shared_2.so: exception_test_2_pic.o gcctestdir/ld
295 $(CXXLINK) -Bgcctestdir/ -shared exception_test_2_pic.o
296exception_shared.so: exception_test_1_pic.o exception_test_2_pic.o gcctestdir/ld
297 $(CXXLINK) -Bgcctestdir/ -shared exception_test_1_pic.o exception_test_2_pic.o
63402fe4 298
3151305a
ILT
299exception_test_SOURCES = \
300 exception_test_main.cc \
301 exception_test_1.cc \
302 exception_test_2.cc \
303 exception_test.h
304exception_test_DEPENDENCIES = gcctestdir/ld
305exception_test_LDFLAGS = -Bgcctestdir/
306
351a8000
ILT
307exception_static_test_SOURCES = $(exception_test_SOURCES)
308exception_static_test_DEPENDENCIES = $(exception_test_DEPENDENCIES)
309exception_static_test_LDFLAGS = $(exception_test_LDFLAGS) -static
3151305a
ILT
310
311exception_shared_1_test_SOURCES = exception_test_2.cc exception_test_main.cc
312exception_shared_1_test_DEPENDENCIES = gcctestdir/ld exception_shared_1.so
313exception_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
314exception_shared_1_test_LDADD = exception_shared_1.so
315
316exception_shared_2_test_SOURCES = exception_test_1.cc exception_test_main.cc
317exception_shared_2_test_DEPENDENCIES = gcctestdir/ld exception_shared_2.so
318exception_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
319exception_shared_2_test_LDADD = exception_shared_2.so
320
321exception_same_shared_test_SOURCES = exception_test_main.cc
322exception_same_shared_test_DEPENDENCIES = gcctestdir/ld exception_shared.so
323exception_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
324exception_same_shared_test_LDADD = exception_shared.so
325
326exception_separate_shared_12_test_SOURCES = exception_test_main.cc
327exception_separate_shared_12_test_DEPENDENCIES = \
328 gcctestdir/ld exception_shared_1.so exception_shared_2.so
329exception_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
330exception_separate_shared_12_test_LDADD = \
331 exception_shared_1.so exception_shared_2.so
332
333exception_separate_shared_21_test_SOURCES = exception_test_main.cc
334exception_separate_shared_21_test_DEPENDENCIES = \
335 gcctestdir/ld exception_shared_1.so exception_shared_2.so
336exception_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
337exception_separate_shared_21_test_LDADD = \
338 exception_shared_2.so exception_shared_1.so
339
3151305a 340
351a8000 341check_PROGRAMS += weak_test
a360aedd 342weak_test_SOURCES = weak_test.cc
0e470e5c 343weak_test_DEPENDENCIES = gcctestdir/ld
a360aedd
ILT
344weak_test_LDFLAGS = -Bgcctestdir/
345
351a8000 346
6eee141f
ILT
347if TLS
348
351a8000
ILT
349check_PROGRAMS += tls_test
350check_PROGRAMS += tls_pic_test
351check_PROGRAMS += tls_shared_test
c03c7692 352check_PROGRAMS += tls_shared_ie_test
351a8000
ILT
353tls_test_pic.o: tls_test.cc
354 $(CXXCOMPILE) -c -fpic -o $@ $<
355tls_test_file2_pic.o: tls_test_file2.cc
356 $(CXXCOMPILE) -c -fpic -o $@ $<
357tls_test_shared.so: tls_test_pic.o tls_test_file2_pic.o gcctestdir/ld
358 $(CXXLINK) -Bgcctestdir/ -shared tls_test_pic.o tls_test_file2_pic.o
359
c03c7692
ILT
360tls_test_pic_ie.o: tls_test.cc
361 $(CXXCOMPILE) -c -fpic -ftls-model=initial-exec -o $@ $<
362tls_test_file2_pic_ie.o: tls_test_file2.cc
363 $(CXXCOMPILE) -c -fpic -ftls-model=initial-exec -o $@ $<
364tls_test_ie_shared.so: tls_test_pic_ie.o tls_test_file2_pic_ie.o gcctestdir/ld
365 $(CXXLINK) -Bgcctestdir/ -shared tls_test_pic_ie.o tls_test_file2_pic_ie.o
366
e0374858 367tls_test_SOURCES = tls_test.cc tls_test_file2.cc tls_test_main.cc tls_test.h
6eee141f
ILT
368tls_test_DEPENDENCIES = gcctestdir/ld
369tls_test_LDFLAGS = -Bgcctestdir/
370tls_test_LDADD = -lpthread
371
372tls_pic_test_SOURCES = tls_test_main.cc
e0374858 373tls_pic_test_DEPENDENCIES = gcctestdir/ld tls_test_pic.o tls_test_file2_pic.o
6eee141f 374tls_pic_test_LDFLAGS = -Bgcctestdir/
e0374858 375tls_pic_test_LDADD = tls_test_pic.o tls_test_file2_pic.o -lpthread
6eee141f 376
6eee141f
ILT
377tls_shared_test_SOURCES = tls_test_main.cc
378tls_shared_test_DEPENDENCIES = gcctestdir/ld tls_test_shared.so
379tls_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
380tls_shared_test_LDADD = tls_test_shared.so -lpthread
381
c03c7692
ILT
382tls_shared_ie_test_SOURCES = tls_test_main.cc
383tls_shared_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_ie_shared.so
384tls_shared_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
385tls_shared_ie_test_LDADD = tls_test_ie_shared.so -lpthread
386
351a8000
ILT
387if STATIC_TLS
388check_PROGRAMS += tls_static_test
389check_PROGRAMS += tls_static_pic_test
390
391tls_static_test_SOURCES = $(tls_test_SOURCES)
392tls_static_test_DEPENDENCIES = $(tls_test_DEPENDENCIES)
393tls_static_test_LDFLAGS = $(tls_test_LDFLAGS) -static
394tls_static_test_LDADD = $(tls_test_LDADD)
395
396tls_static_pic_test_SOURCES = $(tls_pic_test_SOURCES)
397tls_static_pic_test_DEPENDENCIES = $(tls_pic_test_DEPENDENCIES)
398tls_static_pic_test_LDFLAGS = $(tls_pic_test_LDFLAGS) -static
399tls_static_pic_test_LDADD = $(tls_pic_test_LDADD)
400endif
6eee141f
ILT
401
402if FN_PTRS_IN_SO_WITHOUT_PIC
351a8000
ILT
403check_PROGRAMS += tls_shared_nonpic_test
404tls_test_shared_nonpic.so: tls_test.o tls_test_file2.o gcctestdir/ld
405 $(CXXLINK) -Bgcctestdir/ -shared tls_test.o tls_test_file2.o
6eee141f
ILT
406
407tls_shared_nonpic_test_SOURCES = tls_test_main.cc
408tls_shared_nonpic_test_DEPENDENCIES = gcctestdir/ld tls_test_shared_nonpic.so
409tls_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
410tls_shared_nonpic_test_LDADD = tls_test_shared_nonpic.so -lpthread
351a8000 411endif FN_PTRS_IN_SO_WITHOUT_PIC
6eee141f 412
351a8000 413endif TLS
6eee141f 414
6eee141f 415
351a8000
ILT
416# Test --detect-odr-violations
417check_SCRIPTS += debug_msg.sh
6eee141f 418
351a8000
ILT
419# Create the data files that debug_msg.sh analyzes.
420check_DATA += debug_msg.err
421MOSTLYCLEANFILES += debug_msg.err
422debug_msg.o: debug_msg.cc
423 $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/debug_msg.cc
424odr_violation1.o: odr_violation1.cc
425 $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/odr_violation1.cc
426odr_violation2.o: odr_violation2.cc
427 $(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/odr_violation2.cc
428debug_msg.err: debug_msg.o odr_violation1.o odr_violation2.o gcctestdir/ld
429 @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg debug_msg.o odr_violation1.o odr_violation2.o "2>$@"
430 @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg debug_msg.o odr_violation1.o odr_violation2.o 2>$@; \
431 then \
432 echo 1>&2 "Link of debug_msg should have failed"; \
433 rm -f $@; \
434 exit 1; \
435 fi
436
437# See if we can also detect problems when we're linking .so's, not .o's.
438check_DATA += debug_msg_so.err
439MOSTLYCLEANFILES += debug_msg_so.err
440debug_msg.so: debug_msg.cc gcctestdir/ld
441 $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/debug_msg.cc
442odr_violation1.so: odr_violation1.cc gcctestdir/ld
443 $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/odr_violation1.cc
444odr_violation2.so: odr_violation2.cc gcctestdir/ld
445 $(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/odr_violation2.cc
446debug_msg_so.err: debug_msg.so odr_violation1.so odr_violation2.so gcctestdir/ld
447 @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_so debug_msg.so odr_violation1.so odr_violation2.so "2>$@"
448 @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_so debug_msg.so odr_violation1.so odr_violation2.so 2>$@; \
449 then \
450 echo 1>&2 "Link of debug_msg_so should have failed"; \
451 rm -f $@; \
452 exit 1; \
453 fi
454
455# We also want to make sure we do something reasonable when there's no
456# debug info available. For the best test, we use .so's.
457check_DATA += debug_msg_ndebug.err
458MOSTLYCLEANFILES += debug_msg_ndebug.err
459debug_msg_ndebug.so: debug_msg.cc gcctestdir/ld
460 $(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/debug_msg.cc
461odr_violation1_ndebug.so: odr_violation1.cc gcctestdir/ld
462 $(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/odr_violation1.cc
463odr_violation2_ndebug.so: odr_violation2.cc gcctestdir/ld
464 $(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/odr_violation2.cc
465debug_msg_ndebug.err: debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so gcctestdir/ld
466 @echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_ndebug debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so "2>$@"
467 @if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_ndebug debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so 2>$@; \
468 then \
469 echo 1>&2 "Link of debug_msg_ndebug should have failed"; \
470 rm -f $@; \
471 exit 1; \
472 fi
473
474
475# Similar to --detect-odr-violations: check for undefined symbols in .so's
476check_SCRIPTS += undef_symbol.sh
477check_DATA += undef_symbol.err
478MOSTLYCLEANFILES += undef_symbol.err
479undef_symbol.o: undef_symbol.cc
480 $(CXXCOMPILE) -O0 -g -c -fPIC $<
481undef_symbol.so: undef_symbol.o gcctestdir/ld
482 $(CXXLINK) -Bgcctestdir/ -shared undef_symbol.o
483undef_symbol.err: undef_symbol_main.o undef_symbol.so gcctestdir/ld
484 @echo $(CXXLINK) -Bgcctestdir/ -o undef_symbol_test undef_symbol_main.o undef_symbol.so "2>$@"
485 @if $(CXXLINK) -Bgcctestdir/ -o undef_symbol_test undef_symbol_main.o undef_symbol.so 2>$@; \
486 then \
487 echo 1>&2 "Link of undef_symbol_test should have failed"; \
488 rm -f $@; \
489 exit 1; \
490 fi
491
492
493# Test --compress-debug-sections. FIXME: check we actually compress.
494check_PROGRAMS += flagstest_compress_debug_sections
0e470e5c 495flagstest_compress_debug_sections: flagstest_debug.o gcctestdir/ld
351a8000
ILT
496 $(CXXLINK) -Bgcctestdir/ -o $@ $< --compress-debug-sections=zlib
497 test -s $@
498
499
500# Test -o when emitting to a special file (such as something in /dev).
501check_PROGRAMS += flagstest_o_specialfile
0e470e5c 502flagstest_o_specialfile: flagstest_debug.o gcctestdir/ld
351a8000
ILT
503 $(CXXLINK) -Bgcctestdir/ -o /dev/stdout $< 2>&1 | cat > $@
504 chmod a+x $@
505 test -s $@
506
507# The specialfile output has a tricky case when we also compress debug
508# sections, because it requires output-file resizing.
509check_PROGRAMS += flagstest_o_specialfile_and_compress_debug_sections
0e470e5c
ILT
510flagstest_o_specialfile_and_compress_debug_sections: flagstest_debug.o \
511 gcctestdir/ld
351a8000
ILT
512 $(CXXLINK) -Bgcctestdir/ -o /dev/stdout $< --compress-debug-sections=zlib 2>&1 | cat > $@
513 chmod a+x $@
514 test -s $@
515
99f8faca
ILT
516# Test symbol versioning.
517check_PROGRAMS += ver_test
518ver_test_SOURCES = ver_test_main.cc
519ver_test_DEPENDENCIES = gcctestdir/ld ver_test_1.so ver_test_2.so ver_test_4.so
520ver_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
521ver_test_LDADD = ver_test_1.so ver_test_2.so ver_test_4.so
522ver_test_1.so: ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so gcctestdir/ld
523 $(CXXLINK) -Bgcctestdir/ -shared ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so
09124467
ILT
524ver_test_2.so: ver_test_2.o $(srcdir)/ver_test_2.script ver_test_4.so gcctestdir/ld
525 $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_2.script ver_test_2.o ver_test_4.so
526ver_test_4.so: ver_test_4.o $(srcdir)/ver_test_4.script gcctestdir/ld
527 $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_4.script ver_test_4.o
99f8faca
ILT
528ver_test_1.o: ver_test_1.cc
529 $(CXXCOMPILE) -c -fpic -o $@ $<
530ver_test_2.o: ver_test_2.cc
531 $(CXXCOMPILE) -c -fpic -o $@ $<
532ver_test_3.o: ver_test_3.cc
533 $(CXXCOMPILE) -c -fpic -o $@ $<
534ver_test_4.o: ver_test_4.cc
535 $(CXXCOMPILE) -c -fpic -o $@ $<
351a8000 536
be3e6201
ILT
537check_PROGRAMS += ver_test_2
538ver_test_2_SOURCES = ver_test_main_2.cc
539ver_test_2_DEPENDENCIES = gcctestdir/ld ver_test_4.so ver_test_2.so
540ver_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
541ver_test_2_LDADD = ver_test_4.so ver_test_2.so
542
543if READELF
544
545check_SCRIPTS += ver_test_2.sh
546check_DATA += ver_test_2.syms
547ver_test_2.syms: ver_test_2
548 readelf -s $< >$@ 2>/dev/null
549
550endif
551
5871526f
ILT
552if READELF
553
554ver_test_5.so: ver_test_5.o $(srcdir)/ver_test_5.script ver_test_4.so gcctestdir/ld
555 $(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_5.script ver_test_5.o ver_test_4.so
556ver_test_5.o: ver_test_5.cc
557 $(CXXCOMPILE) -c -fpic -o $@ $<
558check_SCRIPTS += ver_test_5.sh
559check_DATA += ver_test_5.syms
560ver_test_5.syms: ver_test_5.so
561 readelf -s $< >$@ 2>/dev/null
562
563endif
564
e5756efb
ILT
565check_PROGRAMS += script_test_1
566script_test_1_SOURCES = script_test_1.cc
567script_test_1_DEPENDENCIES = gcctestdir/ld script_test_1.t
568script_test_1_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -T $(srcdir)/script_test_1.t
569
a445fddf
ILT
570check_PROGRAMS += script_test_2
571script_test_2_SOURCES = script_test_2.cc script_test_2a.cc script_test_2b.cc
572script_test_2_DEPENDENCIES = gcctestdir/ld script_test_2.t
573script_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -T $(srcdir)/script_test_2.t
574
88dd47ac
ILT
575check_PROGRAMS += justsyms
576justsyms_SOURCES = justsyms_1.cc
577justsyms_DEPENDENCIES = gcctestdir/ld justsyms_2r.o
578justsyms_LDFLAGS = -Bgcctestdir/ -Wl,-R,justsyms_2r.o
579justsyms_2.o: justsyms_2.cc
580 $(CXXCOMPILE) -c -o $@ $<
581justsyms_2r.o: justsyms_2.o gcctestdir/ld
582 gcctestdir/ld -o $@ -r -T $(srcdir)/justsyms.t justsyms_2.o
583
bc644c6c
ILT
584check_PROGRAMS += binary_test
585binary_test_SOURCES = binary_test.cc
586binary_test_DEPENDENCIES = gcctestdir/ld binary.txt
587binary_test_LDFLAGS = -Bgcctestdir/ -Wl,--format,binary,binary.txt,--format,elf
588# Copy the file to the build directory to avoid worrying about the
589# full pathname in the generated symbols.
590binary.txt: $(srcdir)/binary.in
591 rm -f $@
592 $(LN_S) $< $@
593
09124467
ILT
594if OBJDUMP_AND_CPPFILT
595check_SCRIPTS += ver_matching_test.sh
596check_DATA += ver_matching_test.stdout
597MOSTLYCLEANFILES += ver_matching_test.stdout
598ver_matching_def.so: ver_matching_def.cc gcctestdir/ld
599 $(CXXLINK) -O0 -Bgcctestdir/ -shared $(srcdir)/ver_matching_def.cc -Wl,--version-script=$(srcdir)/version_script.map
600ver_matching_test.stdout: ver_matching_def.so
601 objdump -T ver_matching_def.so | c++filt > ver_matching_test.stdout
1c4f3631
ILT
602
603check_PROGRAMS += script_test_3
604check_SCRIPTS += script_test_3.sh
605check_DATA += script_test_3.stdout
606MOSTLYCLEANFILES += script_test_3.stdout
607script_test_3: basic_test.o gcctestdir/ld script_test_3.t
608 $(CXXLINK) -Bgcctestdir/ basic_test.o -T $(srcdir)/script_test_3.t
609script_test_3.stdout: script_test_3
610 objdump -p script_test_3 > script_test_3.stdout
09124467
ILT
611endif OBJDUMP_AND_CPPFILT
612
351a8000
ILT
613endif GCC
614endif NATIVE_LINKER
This page took 0.112789 seconds and 4 git commands to generate.