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