Add R_X86_64_PC32_BND/R_X86_64_PLT32_BND suppor to gold
[platform/upstream/binutils.git] / gold / testsuite / Makefile.am
index a1ac474..2b7b5ae 100644 (file)
@@ -8,10 +8,10 @@
 AUTOMAKE_OPTIONS = foreign -Wno-portability
 
 # The two_file_test tests -fmerge-constants, so we simply always turn
-# it on.  This may need to be controlled by a configure option
-# eventually.
-AM_CFLAGS = $(WARN_CFLAGS) $(LFS_CFLAGS) -fmerge-constants
-AM_CXXFLAGS = $(WARN_CXXFLAGS) $(LFS_CFLAGS) -fmerge-constants
+# it on.  For compilers that do not support the command-line option,
+# we assume they just always emit SHF_MERGE sections unconditionally.
+AM_CFLAGS = $(WARN_CFLAGS) $(LFS_CFLAGS) $(MERGE_CONSTANTS_FLAG)
+AM_CXXFLAGS = $(WARN_CXXFLAGS) $(LFS_CFLAGS) $(MERGE_CONSTANTS_FLAG)
 
 AM_CPPFLAGS = \
        -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../../include \
@@ -53,26 +53,6 @@ TEST_AR = $(top_builddir)/../binutils/ar
 TEST_NM = $(top_builddir)/../binutils/nm-new
 TEST_AS = $(top_builddir)/../gas/as-new
 
-# Make the default target available to scripts as $DEFAULT_TARGET.
-if DEFAULT_TARGET_ARM
-export DEFAULT_TARGET = arm
-endif
-if DEFAULT_TARGET_I386
-export DEFAULT_TARGET = i386
-endif
-if DEFAULT_TARGET_POWERPC
-export DEFAULT_TARGET = powerpc
-endif
-if DEFAULT_TARGET_SPARC
-export DEFAULT_TARGET = sparc
-endif
-if DEFAULT_TARGET_X86_64
-export DEFAULT_TARGET = x86_64
-endif
-if DEFAULT_TARGET_TILEGX
-export DEFAULT_TARGET = tilegx
-endif
-
 if PLUGINS
 LIBDL = -ldl
 endif
@@ -91,6 +71,9 @@ endif
 # the right choice for files 'make' builds that people rebuild.
 MOSTLYCLEANFILES = *.so *.syms *.stdout
 
+# Export make variables to the shell scripts so that they can see
+# (for example) DEFAULT_TARGET.
+.EXPORT_ALL_VARIABLES:
 
 # We will add to these later, for each individual test.  Note
 # that we add each test under check_SCRIPTS or check_PROGRAMS;
@@ -181,9 +164,9 @@ incremental_test.stdout: incremental_test ../incremental-dump
 check_SCRIPTS += gc_comdat_test.sh
 check_DATA += gc_comdat_test.stdout
 MOSTLYCLEANFILES += gc_comdat_test
-gc_comdat_test_1.o: gc_comdat_test_1.cc 
+gc_comdat_test_1.o: gc_comdat_test_1.cc
        $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $<
-gc_comdat_test_2.o: gc_comdat_test_2.cc 
+gc_comdat_test_2.o: gc_comdat_test_2.cc
        $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $<
 gc_comdat_test: gc_comdat_test_1.o gc_comdat_test_2.o gcctestdir/ld
        $(CXXLINK) -Bgcctestdir/ -Wl,--gc-sections gc_comdat_test_1.o gc_comdat_test_2.o
@@ -215,18 +198,20 @@ check_DATA += pr14265.stdout
 MOSTLYCLEANFILES += pr14265
 pr14265.o: pr14265.c
        $(COMPILE) -O0 -c -o $@ $<
-pr14265: pr14265.o 
-       $(LINK) -Bgcctestdir/ -Wl,--gc-sections -$(srcdir)/pr14265.t -o $@ $<
+pr14265: pr14265.o
+       $(LINK) -Bgcctestdir/ -Wl,--gc-sections -Wl,-T,$(srcdir)/pr14265.t -o $@ $<
 pr14265.stdout: pr14265
        $(TEST_NM) --format=bsd --numeric-sort $< > $@
 
 check_SCRIPTS += icf_test.sh
 check_DATA += icf_test.map
 MOSTLYCLEANFILES += icf_test icf_test.map
-icf_test.o: icf_test.cc 
+icf_test.o: icf_test.cc
        $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $<
-icf_test icf_test.map: icf_test.o gcctestdir/ld
+icf_test: icf_test.o gcctestdir/ld
        $(CXXLINK) -o icf_test -Bgcctestdir/ -Wl,--icf=all,-Map,icf_test.map icf_test.o
+icf_test.map: icf_test
+       @touch icf_test.map
 
 check_SCRIPTS += icf_keep_unique_test.sh
 check_DATA += icf_keep_unique_test.stdout
@@ -243,8 +228,10 @@ check_DATA += icf_safe_test_1.stdout icf_safe_test_2.stdout icf_safe_test.map
 MOSTLYCLEANFILES += icf_safe_test icf_safe_test.map
 icf_safe_test.o: icf_safe_test.cc
        $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $<
-icf_safe_test icf_safe_test.map: icf_safe_test.o gcctestdir/ld
+icf_safe_test: icf_safe_test.o gcctestdir/ld
        $(CXXLINK) -o icf_safe_test -Bgcctestdir/ -Wl,--icf=safe,-Map,icf_safe_test.map icf_safe_test.o
+icf_safe_test.map: icf_safe_test
+       @touch icf_safe_test.map
 icf_safe_test_1.stdout: icf_safe_test
        $(TEST_NM) $< > $@
 icf_safe_test_2.stdout: icf_safe_test
@@ -255,8 +242,10 @@ check_DATA += icf_safe_so_test_1.stdout icf_safe_so_test_2.stdout icf_safe_so_te
 MOSTLYCLEANFILES += icf_safe_so_test icf_safe_so_test.map
 icf_safe_so_test.o: icf_safe_so_test.cc
        $(CXXCOMPILE) -O0 -c -ffunction-sections -fPIC -g -o $@ $<
-icf_safe_so_test icf_safe_so_test.map: icf_safe_so_test.o gcctestdir/ld
+icf_safe_so_test: icf_safe_so_test.o gcctestdir/ld
        $(CXXLINK) -o icf_safe_so_test -Bgcctestdir/ -Wl,--icf=safe,-Map,icf_safe_so_test.map icf_safe_so_test.o -fPIC -shared
+icf_safe_so_test.map:
+       @touch icf_safe_so_test.map
 icf_safe_so_test_1.stdout: icf_safe_so_test
        $(TEST_NM) $< > $@
 icf_safe_so_test_2.stdout: icf_safe_so_test
@@ -288,7 +277,17 @@ text_section_no_grouping: text_section_grouping.o gcctestdir/ld
 text_section_grouping.stdout: text_section_grouping
        $(TEST_NM) -n --synthetic text_section_grouping > text_section_grouping.stdout
 text_section_no_grouping.stdout: text_section_no_grouping
-       $(TEST_NM) -n --synthetic text_section_no_grouping > text_section_no_grouping.stdout 
+       $(TEST_NM) -n --synthetic text_section_no_grouping > text_section_no_grouping.stdout
+
+check_SCRIPTS += section_sorting_name.sh
+check_DATA += section_sorting_name.stdout
+MOSTLYCLEANFILES += section_sorting_name
+section_sorting_name.o: section_sorting_name.cc
+       $(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $<
+section_sorting_name: section_sorting_name.o gcctestdir/ld
+       $(CXXLINK)  -Bgcctestdir/ -Wl,--sort-section=name section_sorting_name.o
+section_sorting_name.stdout: section_sorting_name
+       $(TEST_NM) -n --synthetic section_sorting_name > section_sorting_name.stdout
 
 check_PROGRAMS += icf_virtual_function_folding_test
 MOSTLYCLEANFILES += icf_virtual_function_folding_test icf_virtual_function_folding_test.map
@@ -329,12 +328,18 @@ icf_sht_rel_addend_test: icf_sht_rel_addend_test_1.o icf_sht_rel_addend_test_2.o
 icf_sht_rel_addend_test.stdout: icf_sht_rel_addend_test
        $(TEST_NM) icf_sht_rel_addend_test > icf_sht_rel_addend_test.stdout
 
+check_PROGRAMS += large_symbol_alignment
+large_symbol_alignment_SOURCES = large_symbol_alignment.cc
+large_symbol_alignment_DEPENDENCIES = gcctestdir/ld
+large_symbol_alignment_LDFLAGS = -Bgcctestdir/
+large_symbol_alignment_LDADD =
+
 check_SCRIPTS += merge_string_literals.sh
 check_DATA += merge_string_literals.stdout
 MOSTLYCLEANFILES += merge_string_literals
-merge_string_literals_1.o: merge_string_literals_1.c
+merge_string_literals_1.o: merge_string_literals_1.cc
        $(CXXCOMPILE) -O2 -c -fPIC -g -o $@ $<
-merge_string_literals_2.o: merge_string_literals_2.c
+merge_string_literals_2.o: merge_string_literals_2.cc
        $(CXXCOMPILE) -O2 -c -fPIC -g -o $@ $<
 merge_string_literals: merge_string_literals_1.o merge_string_literals_2.o gcctestdir/ld
        $(CXXLINK) -Bgcctestdir/ merge_string_literals_1.o merge_string_literals_2.o -O2 -shared -nostdlib
@@ -991,6 +996,20 @@ debug_msg.err: debug_msg.o odr_violation1.o odr_violation2.o gcctestdir/ld
          exit 1; \
        fi
 
+# Test error message when a vtable is undefined.
+check_SCRIPTS += missing_key_func.sh
+check_DATA += missing_key_func.err
+MOSTLYCLEANFILES += missing_key_func.err
+missing_key_func.o: missing_key_func.cc
+       $(CXXCOMPILE) -O0 -g -c -o $@ $(srcdir)/missing_key_func.cc
+missing_key_func.err: missing_key_func.o gcctestdir/ld
+       @echo $(CXXLINK) -Bgcctestdir/ -o missing_key_func missing_key_func.o "2>$@"
+       @if $(CXXLINK) -Bgcctestdir/ -o missing_key_func missing_key_func.o 2>$@; \
+       then \
+         echo 1>&2 "Link of missing_key_func should have failed"; \
+         rm -f $@; \
+         exit 1; \
+       fi
 
 if HAVE_ZLIB
 
@@ -1290,18 +1309,18 @@ relro_script_test_DEPENDENCIES = gcctestdir/ld relro_script_test.so
 relro_script_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
 relro_script_test_LDADD = relro_script_test.so
 relro_script_test.so: gcctestdir/ld relro_script_test.t relro_test_pic.o
-       $(CXXLINK) -Bgcctestdir/ -shared -Wl,-z,relro -$(srcdir)/relro_script_test.t relro_test_pic.o
+       $(CXXLINK) -Bgcctestdir/ -shared -Wl,-z,relro -Wl,-T,$(srcdir)/relro_script_test.t relro_test_pic.o
 
 check_PROGRAMS += script_test_1
 script_test_1_SOURCES = script_test_1.cc
 script_test_1_DEPENDENCIES = gcctestdir/ld script_test_1.t
-script_test_1_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -$(srcdir)/script_test_1.t
+script_test_1_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -Wl,-T,$(srcdir)/script_test_1.t
 script_test_1_LDADD =
 
 check_PROGRAMS += script_test_2
 script_test_2_SOURCES = script_test_2.cc script_test_2a.cc script_test_2b.cc
 script_test_2_DEPENDENCIES = gcctestdir/ld script_test_2.t
-script_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -$(srcdir)/script_test_2.t
+script_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -Wl,-T,$(srcdir)/script_test_2.t
 script_test_2_LDADD =
 
 check_PROGRAMS += justsyms
@@ -1352,35 +1371,35 @@ check_SCRIPTS += script_test_3.sh
 check_DATA += script_test_3.stdout
 MOSTLYCLEANFILES += script_test_3.stdout
 script_test_3: basic_test.o gcctestdir/ld script_test_3.t
-       $(CXXLINK) -Bgcctestdir/ basic_test.o -$(srcdir)/script_test_3.t
+       $(CXXLINK) -Bgcctestdir/ basic_test.o -Wl,-T,$(srcdir)/script_test_3.t
 script_test_3.stdout: script_test_3
        $(TEST_READELF) -SlW script_test_3 > script_test_3.stdout
 
 check_PROGRAMS += tls_phdrs_script_test
 tls_phdrs_script_test_SOURCES = $(tls_test_SOURCES)
 tls_phdrs_script_test_DEPENDENCIES = $(tls_test_DEPENDENCIES) $(srcdir)/script_test_3.t
-tls_phdrs_script_test_LDFLAGS = $(tls_test_LDFLAGS) -$(srcdir)/script_test_3.t
+tls_phdrs_script_test_LDFLAGS = $(tls_test_LDFLAGS) -Wl,-T,$(srcdir)/script_test_3.t
 tls_phdrs_script_test_LDADD = $(tls_test_LDADD)
 
 check_SCRIPTS += script_test_4.sh
 check_DATA += script_test_4.stdout
 MOSTLYCLEANFILES += script_test_4
 script_test_4: basic_test.o gcctestdir/ld $(srcdir)/script_test_4.t
-       $(CXXLINK) -Bgcctestdir/ basic_test.o -$(srcdir)/script_test_4.t
+       $(CXXLINK) -Bgcctestdir/ basic_test.o -Wl,-T,$(srcdir)/script_test_4.t
 script_test_4.stdout: script_test_4
        $(TEST_READELF) -SlW script_test_4 > script_test_4.stdout
 
 check_PROGRAMS += tls_script_test
 tls_script_test_SOURCES = $(tls_test_SOURCES)
 tls_script_test_DEPENDENCIES = $(tls_test_DEPENDENCIES) $(srcdir)/script_test_4.t
-tls_script_test_LDFLAGS = $(tls_test_LDFLAGS) -$(srcdir)/script_test_4.t
+tls_script_test_LDFLAGS = $(tls_test_LDFLAGS) -Wl,-T,$(srcdir)/script_test_4.t
 tls_script_test_LDADD = $(tls_test_LDADD)
 
 check_SCRIPTS += script_test_5.sh
 check_DATA += script_test_5.stdout
 MOSTLYCLEANFILES += script_test_5
 script_test_5: script_test_5.o gcctestdir/ld $(srcdir)/script_test_5.t
-       $(CXXLINK) -Bgcctestdir/ script_test_5.o -$(srcdir)/script_test_5.t
+       $(CXXLINK) -Bgcctestdir/ script_test_5.o -Wl,-T,$(srcdir)/script_test_5.t
 script_test_5.stdout: script_test_5
        $(TEST_READELF) -SW script_test_5 > script_test_5.stdout
 
@@ -1388,7 +1407,7 @@ check_SCRIPTS += script_test_6.sh
 check_DATA += script_test_6.stdout
 MOSTLYCLEANFILES += script_test_6
 script_test_6: basic_test.o gcctestdir/ld $(srcdir)/script_test_6.t
-       $(CXXLINK) -Bgcctestdir/ basic_test.o -$(srcdir)/script_test_6.t \
+       $(CXXLINK) -Bgcctestdir/ basic_test.o -Wl,-T,$(srcdir)/script_test_6.t \
        -Wl,-Ttext=0x10001000 -Wl,-Tdata=0x10200000 -Wl,-Tbss=0x10400000
 script_test_6.stdout: script_test_6
        $(TEST_READELF) -SlW script_test_6 > script_test_6.stdout
@@ -1397,7 +1416,7 @@ check_SCRIPTS += script_test_7.sh
 check_DATA += script_test_7.stdout
 MOSTLYCLEANFILES += script_test_7
 script_test_7: basic_test.o gcctestdir/ld $(srcdir)/script_test_7.t
-       $(CXXLINK) -Bgcctestdir/ basic_test.o -$(srcdir)/script_test_7.t
+       $(CXXLINK) -Bgcctestdir/ basic_test.o -Wl,-T,$(srcdir)/script_test_7.t
 script_test_7.stdout: script_test_7
        $(TEST_READELF) -SlW script_test_7 > script_test_7.stdout
 
@@ -1405,7 +1424,7 @@ check_SCRIPTS += script_test_8.sh
 check_DATA += script_test_8.stdout
 MOSTLYCLEANFILES += script_test_8
 script_test_8: basic_test.o gcctestdir/ld $(srcdir)/script_test_7.t
-       $(CXXLINK) -Bgcctestdir/ basic_test.o -$(srcdir)/script_test_7.t \
+       $(CXXLINK) -Bgcctestdir/ basic_test.o -Wl,-T,$(srcdir)/script_test_7.t \
        -Wl,-Ttext=0x20001000 -Wl,-Tdata=0x20200000 -Wl,-Tbss=0x20400000
 script_test_8.stdout: script_test_8
        $(TEST_READELF) -SlW script_test_8 > script_test_8.stdout
@@ -1416,7 +1435,7 @@ MOSTLYCLEANFILES += script_test_9
 script_test_9.o: script_test_9.cc
        $(CXXCOMPILE) -O0 -c -o $@ $<
 script_test_9: gcctestdir/ld $(srcdir)/script_test_9.t script_test_9.o
-       $(CXXLINK) -Bgcctestdir/ script_test_9.o -$(srcdir)/script_test_9.t
+       $(CXXLINK) -Bgcctestdir/ script_test_9.o -Wl,-T,$(srcdir)/script_test_9.t
 script_test_9.stdout: script_test_9
        $(TEST_READELF) -lW script_test_9 > script_test_9.stdout
 
@@ -1605,6 +1624,22 @@ empty.syms:
        @echo "" >$@
        @echo "Symbol table" >>$@
 
+if TLS
+
+check_PROGRAMS += plugin_test_tls
+check_SCRIPTS += plugin_test_tls.sh
+check_DATA += plugin_test_tls.err
+MOSTLYCLEANFILES += plugin_test_tls.err
+plugin_test_tls: two_file_test_tls.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2_tls.syms gcctestdir/ld plugin_test.so
+       $(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_tls.o two_file_test_1.syms two_file_test_1b.syms two_file_test_2_tls.syms 2>plugin_test_tls.err
+plugin_test_tls.err: plugin_test_tls
+       @touch plugin_test_tls.err
+
+two_file_test_2_tls.syms: two_file_test_2_tls.o
+       $(TEST_READELF) -sW $< >$@ 2>/dev/null
+
+endif TLS
+
 MOSTLYCLEANFILES += unused.c
 unused.syms: unused.o
        $(TEST_READELF) -sW $< >$@ 2>/dev/null
@@ -1724,7 +1759,7 @@ retain_symbols_file_test.so: basic_pic_test.o gcctestdir/ld
        echo '_ZN4t16bC1Ev' >> retain_symbols_file_test.in
        echo '_ZNK4t20a3getEv' >> retain_symbols_file_test.in
        echo '_Z3t18v' >> retain_symbols_file_test.in
-       echo '__tcf_0' >> retain_symbols_file_test.in   
+       echo '__tcf_0' >> retain_symbols_file_test.in
        $(CXXLINK) -Bgcctestdir/ -shared -Wl,-retain-symbols-file,retain_symbols_file_test.in basic_pic_test.o
 retain_symbols_file_test.stdout: retain_symbols_file_test.so
        $(TEST_NM) -C retain_symbols_file_test.so > $@
@@ -1754,7 +1789,7 @@ alt/searched_file_test_lib.a: searched_file_test_lib.o
        test -d alt || mkdir -p alt
        $(TEST_AR) rc $@ $^
 
-# Test that no .gnu.version sections are created when 
+# Test that no .gnu.version sections are created when
 # symbol versioning is not used.
 check_SCRIPTS += no_version_test.sh
 check_DATA += no_version_test.stdout
@@ -1997,7 +2032,7 @@ ifuncmain7pie: ifuncmain7pie.o gcctestdir/ld
 check_PROGRAMS += ifuncvar
 ifuncvar1_pic.o: ifuncvar1.c
        $(COMPILE) -c -fPIC -o $@ $<
-ifuncvar2_pic.o: ifuncvar2.c   
+ifuncvar2_pic.o: ifuncvar2.c
        $(COMPILE) -c -fPIC -o $@ $<
 ifuncvar.so: ifuncvar1_pic.o ifuncvar2_pic.o gcctestdir/ld
        $(LINK) -Bgcctestdir/ -shared ifuncvar1_pic.o ifuncvar2_pic.o
@@ -2063,7 +2098,7 @@ MOSTLYCLEANFILES += memory_test.stdout memory_test memory_test.o
 memory_test.o: memory_test.s
        $(COMPILE) -o $@ -c $<
 memory_test: memory_test.o gcctestdir/ld $(srcdir)/memory_test.t
-       $(LINK) -Bgcctestdir/ -nostartfiles -nostdlib -z max-page-size=0x1000 -z common-page-size=0x1000 -$(srcdir)/memory_test.t -o $@ memory_test.o
+       $(LINK) -Bgcctestdir/ -nostartfiles -nostdlib -z max-page-size=0x1000 -z common-page-size=0x1000 -Wl,-T,$(srcdir)/memory_test.t -o $@ memory_test.o
 memory_test.stdout: memory_test
        $(TEST_READELF) -lWS  $< > $@
 
@@ -2221,6 +2256,19 @@ incremental_comdat_test_1: incr_comdat_test_1.o incr_comdat_test_2_v1.o incr_com
 
 endif DEFAULT_TARGET_X86_64
 
+if DEFAULT_TARGET_X86_64
+check_PROGRAMS += exception_x86_64_bnd_test
+exception_x86_64_bnd_test_SOURCES = exception_test_main.cc
+exception_x86_64_bnd_test_DEPENDENCIES = exception_x86_64_bnd_1.o \
+                                        exception_x86_64_bnd_2.o
+exception_x86_64_bnd_test_LDFLAGS = $(exception_test_LDFLAGS)
+exception_x86_64_bnd_test_LDADD = $(exception_x86_64_bnd_test_DEPENDENCIES)
+exception_x86_64_bnd_1.o: exception_test_1.cc
+       $(CXXCOMPILE) -c -fpic -Bgcctestdir/ -Wa,-madd-bnd-prefix -o $@ $<
+exception_x86_64_bnd_2.o: exception_test_2.cc
+       $(CXXCOMPILE) -c -Bgcctestdir/ -Wa,-madd-bnd-prefix -o $@ $<
+endif DEFAULT_TARGET_X86_64
+
 endif GCC
 endif NATIVE_LINKER