mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
1074bc6d41
When an .eh_frame section has deferred layout because of plugins, gold was neglecting to mark the section as deferred. When we later processed the corresponding relocation section, we were then ignoring it, causing the internal error later on in the link. gold/ PR gold/23397 * object.cc (Sized_relobj_file::do_layout): Mark section as deferred. * testsuite/Makefile.am (plugin_test_1): Add --emit-relocs option to existing test case. * testsuite/Makefile.in: Regenerate.
4307 lines
174 KiB
Makefile
4307 lines
174 KiB
Makefile
# Process this file with automake to generate Makefile.in
|
|
|
|
# As far as I can tell automake testing support assumes that the build
|
|
# system and the host system are the same. So these tests will not
|
|
# work when building with a cross-compiler.
|
|
|
|
# Ignore warning about AM_PROG_CC_C_O due to large_CFLAGS
|
|
AUTOMAKE_OPTIONS = foreign -Wno-portability
|
|
|
|
# This is where we get zlib from. zlib is in ../../zlib unless we were
|
|
# configured with --with-system-zlib, in which case ../../zlib either
|
|
# doesn't exist or not configured.
|
|
ZLIB = -L../../zlib -lz
|
|
|
|
# The two_file_test tests -fmerge-constants, so we simply always turn
|
|
# 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 \
|
|
-I$(srcdir)/../../elfcpp -I.. \
|
|
-DLOCALEDIR="\"$(datadir)/locale\"" \
|
|
@INCINTL@
|
|
|
|
# Some versions of GCC now automatically enable linker plugins,
|
|
# but we want to run our tests without GCC's plugins.
|
|
if HAVE_NO_USE_LINKER_PLUGIN
|
|
OPT_NO_PLUGINS = -fno-use-linker-plugin
|
|
endif
|
|
|
|
# COMPILE1, LINK1, CXXCOMPILE1, CXXLINK1 are renamed from COMPILE, LINK,
|
|
# CXXCOMPILE and CXXLINK generated by automake 1.11.1. FIXME: they should
|
|
# be updated if they are different from automake used by gold.
|
|
COMPILE1 = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
|
LINK1 = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(OPT_NO_PLUGINS) \
|
|
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
|
CXXCOMPILE1 = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
|
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
|
CXXLINK1 = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(OPT_NO_PLUGINS) \
|
|
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
|
|
|
# Strip out -Wp,-D_FORTIFY_SOURCE=, which is irrelevant for the gold
|
|
# testsuite and incompatible with -O0 used in gold tests, from
|
|
# COMPILE, LINK, CXXCOMPILE and CXXLINK.
|
|
COMPILE = `echo $(COMPILE1) | sed -e 's/-Wp,-D_FORTIFY_SOURCE=[0-9[0-9]]*//'`
|
|
LINK = `echo $(LINK1) | sed -e 's/-Wp,-D_FORTIFY_SOURCE=[0-9][0-9]*//'`
|
|
CXXCOMPILE = `echo $(CXXCOMPILE1) | sed -e 's/-Wp,-D_FORTIFY_SOURCE=[0-9][0-9]*//'`
|
|
CXXLINK = `echo $(CXXLINK1) | sed -e 's/-Wp,-D_FORTIFY_SOURCE=[0-9][0-9]*//'`
|
|
|
|
# Strip out -static-libgcc and -static-libstdc++ options, for tests
|
|
# that must have these libraries linked dynamically. The -shared-libgcc
|
|
# option does not work correctly, and there is no -shared-libstdc++ option.
|
|
# (See GCC PR 55781 and PR 55782.)
|
|
CXXLINK_S = `echo $(CXXLINK1) | sed -e 's/-static-lib\\(gcc\\|stdc++\\)//g'`
|
|
|
|
TEST_READELF = $(top_builddir)/../binutils/readelf
|
|
TEST_OBJDUMP = $(top_builddir)/../binutils/objdump
|
|
TEST_OBJCOPY = $(top_builddir)/../binutils/objcopy
|
|
TEST_CXXFILT = $(top_builddir)/../binutils/cxxfilt
|
|
TEST_STRIP = $(top_builddir)/../binutils/strip-new
|
|
TEST_AR = $(top_builddir)/../binutils/ar
|
|
TEST_NM = $(top_builddir)/../binutils/nm-new
|
|
TEST_AS = $(top_builddir)/../gas/as-new
|
|
|
|
if PLUGINS
|
|
LIBDL = -ldl
|
|
endif
|
|
|
|
if THREADS
|
|
THREADFLAGS = @PTHREAD_CFLAGS@
|
|
THREADLIBS = @PTHREAD_LIBS@
|
|
endif
|
|
|
|
if OMP_SUPPORT
|
|
TLS_TEST_C_CFLAGS = -fopenmp
|
|
endif
|
|
|
|
# 'make clean' is good about deleting some intermediate files (such as
|
|
# .o's), but not all of them (such as .so's and .err files). We
|
|
# improve on that here. automake-1.9 info docs say "mostlyclean" is
|
|
# the right choice for files 'make' builds that people rebuild.
|
|
MOSTLYCLEANFILES = *.so *.syms *.stdout *.stderr
|
|
|
|
# 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;
|
|
# the TESTS variable is automatically populated from these.
|
|
check_SCRIPTS =
|
|
check_DATA =
|
|
check_PROGRAMS =
|
|
BUILT_SOURCES =
|
|
|
|
TESTS = $(check_SCRIPTS) $(check_PROGRAMS)
|
|
|
|
# ---------------------------------------------------------------------
|
|
# These tests test the internals of gold (unittests).
|
|
|
|
# Infrastucture needed for the unittests
|
|
check_LIBRARIES = libgoldtest.a
|
|
libgoldtest_a_SOURCES = test.cc testmain.cc testfile.cc
|
|
|
|
DEPENDENCIES = \
|
|
libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL_DEP)
|
|
|
|
# The unittests themselves
|
|
if NATIVE_OR_CROSS_LINKER
|
|
if GCC
|
|
|
|
# Infrastucture needed for the unittests: a directory where the linker
|
|
# is named 'ld'. This is because the -B flag appends 'ld' to its arg.
|
|
gcctestdir/ld: ../ld-new
|
|
test -d gcctestdir || mkdir -p gcctestdir
|
|
rm -f gcctestdir/ld
|
|
(cd gcctestdir && $(LN_S) ../../ld-new ld)
|
|
|
|
# Some tests require the latest features of an in-tree assembler.
|
|
gcctestdir/as: $(TEST_AS)
|
|
test -d gcctestdir || mkdir -p gcctestdir
|
|
rm -f gcctestdir/as
|
|
(cd gcctestdir && $(LN_S) $(abs_top_builddir)/../gas/as-new as)
|
|
|
|
endif GCC
|
|
|
|
check_PROGRAMS += object_unittest
|
|
object_unittest_SOURCES = object_unittest.cc
|
|
object_unittest_LDFLAGS = $(THREADFLAGS)
|
|
object_unittest_LDADD = libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL) \
|
|
$(THREADLIBS) $(LIBDL) $(ZLIB)
|
|
|
|
check_PROGRAMS += binary_unittest
|
|
binary_unittest_SOURCES = binary_unittest.cc
|
|
binary_unittest_LDFLAGS = $(THREADFLAGS)
|
|
binary_unittest_LDADD = libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL) \
|
|
$(THREADLIBS) $(LIBDL) $(ZLIB)
|
|
|
|
check_PROGRAMS += leb128_unittest
|
|
leb128_unittest_SOURCES = leb128_unittest.cc
|
|
leb128_unittest_LDFLAGS = $(THREADFLAGS)
|
|
leb128_unittest_LDADD = libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL) \
|
|
$(THREADLIBS) $(LIBDL) $(ZLIB)
|
|
|
|
check_PROGRAMS += overflow_unittest
|
|
overflow_unittest_SOURCES = overflow_unittest.cc
|
|
overflow_unittest_LDFLAGS = $(THREADFLAGS)
|
|
overflow_unittest_LDADD = libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL) \
|
|
$(THREADLIBS) $(LIBDL) $(ZLIB)
|
|
overflow_unittest.o: overflow_unittest.cc
|
|
$(CXXCOMPILE) -O3 -c -o $@ $<
|
|
|
|
endif NATIVE_OR_CROSS_LINKER
|
|
|
|
# ---------------------------------------------------------------------
|
|
# These tests test the output of gold (end-to-end tests). In
|
|
# particular, they make sure that gold can link "difficult" object
|
|
# files, and the resulting object files run correctly. These can only
|
|
# run if we've built ld-new for the native architecture (that is,
|
|
# we're not cross-compiling it), since we run ld-new as part of these
|
|
# tests. We use the gcc-specific flag '-B' to use our linker instead
|
|
# of the default linker, which is why we only run our tests under gcc.
|
|
|
|
if NATIVE_LINKER
|
|
if GCC
|
|
|
|
# Test empty command line error conditions.
|
|
check_SCRIPTS += empty_command_line_test.sh
|
|
empty_command_line_test.sh: gcctestdir/ld
|
|
|
|
# Each of these .o's is a useful, small complete program. They're
|
|
# particularly useful for making sure ld-new's flags do what they're
|
|
# supposed to (hence their names), but are used for many tests that
|
|
# don't actually involve analyzing input data.
|
|
flagstest_debug.o: constructor_test.cc
|
|
$(CXXCOMPILE) -O0 -g -c -o $@ $<
|
|
flagstest_ndebug.o: constructor_test.cc
|
|
$(CXXCOMPILE) -O0 -c -o $@ $<
|
|
|
|
check_SCRIPTS += incremental_test.sh
|
|
check_DATA += incremental_test.stdout
|
|
MOSTLYCLEANFILES += incremental_test incremental_test.cmdline
|
|
incremental_test_1.o: incremental_test_1.c
|
|
$(COMPILE) -O0 -c -ffunction-sections -g -o $@ $<
|
|
incremental_test_2.o: incremental_test_2.c
|
|
$(COMPILE) -O0 -c -ffunction-sections -g -o $@ $<
|
|
incremental_test: incremental_test_1.o incremental_test_2.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -Wl,--incremental-full -Wl,-z,norelro,-no-pie incremental_test_1.o incremental_test_2.o -Wl,-debug 2> incremental_test.cmdline
|
|
incremental_test.stdout: incremental_test ../incremental-dump
|
|
../incremental-dump incremental_test > $@
|
|
|
|
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
|
|
$(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $<
|
|
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
|
|
gc_comdat_test.stdout: gc_comdat_test
|
|
$(TEST_NM) -C gc_comdat_test > gc_comdat_test.stdout
|
|
|
|
check_SCRIPTS += gc_tls_test.sh
|
|
check_DATA += gc_tls_test.stdout
|
|
MOSTLYCLEANFILES += gc_tls_test
|
|
gc_tls_test.o: gc_tls_test.cc
|
|
$(CXXCOMPILE) -O0 -c -g -o $@ $<
|
|
gc_tls_test:gc_tls_test.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--gc-sections gc_tls_test.o
|
|
gc_tls_test.stdout: gc_tls_test
|
|
$(TEST_NM) -C gc_tls_test > gc_tls_test.stdout
|
|
|
|
check_SCRIPTS += gc_orphan_section_test.sh
|
|
check_DATA += gc_orphan_section_test.stdout
|
|
MOSTLYCLEANFILES += gc_orphan_section_test
|
|
gc_orphan_section_test.o: gc_orphan_section_test.cc
|
|
$(CXXCOMPILE) -O0 -c -g -o $@ $<
|
|
gc_orphan_section_test:gc_orphan_section_test.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--gc-sections gc_orphan_section_test.o
|
|
gc_orphan_section_test.stdout: gc_orphan_section_test
|
|
$(TEST_NM) gc_orphan_section_test > gc_orphan_section_test.stdout
|
|
|
|
check_SCRIPTS += pr14265.sh
|
|
check_DATA += pr14265.stdout
|
|
MOSTLYCLEANFILES += pr14265
|
|
pr14265.o: pr14265.c
|
|
$(COMPILE) -O0 -c -o $@ $<
|
|
pr14265: pr14265.o gcctestdir/ld $(srcdir)/pr14265.t
|
|
$(LINK) -Bgcctestdir/ -Wl,--gc-sections -Wl,-T,$(srcdir)/pr14265.t -o $@ $<
|
|
pr14265.stdout: pr14265
|
|
$(TEST_NM) --format=bsd --numeric-sort $< > $@
|
|
|
|
check_SCRIPTS += pr20717.sh
|
|
check_DATA += pr20717.stdout
|
|
MOSTLYCLEANFILES += pr20717
|
|
pr20717.o: pr20717.c
|
|
$(COMPILE) -O0 -ffunction-sections -c -o $@ $<
|
|
pr20717: pr20717.o gcctestdir/ld $(srcdir)/pr20717.t
|
|
$(LINK) -Bgcctestdir/ -Wl,--gc-sections -Wl,-T,$(srcdir)/pr20717.t -o $@ $<
|
|
pr20717.stdout: pr20717
|
|
$(TEST_NM) $< > $@
|
|
|
|
check_SCRIPTS += gc_dynamic_list_test.sh
|
|
check_DATA += gc_dynamic_list_test.stdout
|
|
MOSTLYCLEANFILES += gc_dynamic_list_test
|
|
gc_dynamic_list_test.o: gc_dynamic_list_test.c
|
|
$(COMPILE) -c -ffunction-sections -o $@ $<
|
|
gc_dynamic_list_test: gc_dynamic_list_test.o gcctestdir/ld $(srcdir)/gc_dynamic_list_test.t
|
|
$(LINK) -Bgcctestdir/ -Wl,--gc-sections -Wl,--dynamic-list,$(srcdir)/gc_dynamic_list_test.t gc_dynamic_list_test.o
|
|
gc_dynamic_list_test.stdout: gc_dynamic_list_test
|
|
$(TEST_NM) gc_dynamic_list_test > $@
|
|
|
|
check_SCRIPTS += icf_test.sh
|
|
check_DATA += icf_test.map
|
|
MOSTLYCLEANFILES += icf_test icf_test.map
|
|
icf_test.o: icf_test.cc
|
|
$(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $<
|
|
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
|
|
MOSTLYCLEANFILES += icf_keep_unique_test
|
|
icf_keep_unique_test.o: icf_keep_unique_test.cc
|
|
$(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $<
|
|
icf_keep_unique_test: icf_keep_unique_test.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--icf=all -Wl,--keep-unique,_Z11unique_funcv icf_keep_unique_test.o
|
|
icf_keep_unique_test.stdout: icf_keep_unique_test
|
|
$(TEST_NM) -C $< > $@
|
|
|
|
check_SCRIPTS += icf_safe_test.sh
|
|
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.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
|
|
$(TEST_READELF) -h $< > $@
|
|
|
|
check_SCRIPTS += icf_safe_pie_test.sh
|
|
check_DATA += icf_safe_pie_test_1.stdout icf_safe_pie_test_2.stdout icf_safe_pie_test.map
|
|
MOSTLYCLEANFILES += icf_safe_pie_test icf_safe_pie_test.map
|
|
icf_safe_pie_test.o: icf_safe_test.cc
|
|
$(CXXCOMPILE) -O0 -c -ffunction-sections -fPIE -g -o $@ $<
|
|
icf_safe_pie_test: icf_safe_pie_test.o gcctestdir/ld
|
|
$(CXXLINK) -o icf_safe_pie_test -Bgcctestdir/ -Wl,--icf=safe,-Map,icf_safe_pie_test.map icf_safe_pie_test.o -pie
|
|
icf_safe_pie_test.map: icf_safe_pie_test
|
|
@touch icf_safe_pie_test.map
|
|
icf_safe_pie_test_1.stdout: icf_safe_pie_test
|
|
$(TEST_NM) $< > $@
|
|
icf_safe_pie_test_2.stdout: icf_safe_pie_test
|
|
$(TEST_READELF) -h $< > $@
|
|
|
|
check_SCRIPTS += icf_safe_so_test.sh
|
|
check_DATA += icf_safe_so_test_1.stdout icf_safe_so_test_2.stdout icf_safe_so_test.map
|
|
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.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
|
|
$(TEST_READELF) -h $< > $@
|
|
|
|
check_SCRIPTS += final_layout.sh
|
|
check_DATA += final_layout.stdout
|
|
MOSTLYCLEANFILES += final_layout final_layout_sequence.txt final_layout_script.lds
|
|
final_layout.o: final_layout.cc
|
|
$(CXXCOMPILE) -O0 -c -ffunction-sections -fdata-sections -g -o $@ $<
|
|
final_layout_sequence.txt:
|
|
(echo "*_Z3barv*" && echo ".text._Z3bazv" && echo "*_Z3foov*" && echo "*global_varb*" && echo "*global_vara*" && echo "*global_varc*") > final_layout_sequence.txt
|
|
final_layout_script.lds:
|
|
(echo "SECTIONS { .text : { *(.text*) } .got : { *(.got .toc) } .sbss : { *(.sbss*) } .bss : { *(.bss*) } }") > final_layout_script.lds
|
|
final_layout: final_layout.o final_layout_sequence.txt final_layout_script.lds gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--section-ordering-file,final_layout_sequence.txt -Wl,-T,final_layout_script.lds final_layout.o
|
|
final_layout.stdout: final_layout
|
|
$(TEST_NM) -n --synthetic final_layout > final_layout.stdout
|
|
|
|
check_SCRIPTS += text_section_grouping.sh
|
|
check_DATA += text_section_grouping.stdout text_section_no_grouping.stdout
|
|
MOSTLYCLEANFILES += text_section_grouping text_section_no_grouping
|
|
text_section_grouping.o: text_section_grouping.cc
|
|
$(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $<
|
|
text_section_grouping: text_section_grouping.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ text_section_grouping.o
|
|
text_section_no_grouping: text_section_grouping.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--no-text-reorder text_section_grouping.o
|
|
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
|
|
|
|
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_SCRIPTS += text_unlikely_segment.sh
|
|
check_DATA += text_unlikely_segment_readelf.stdout
|
|
MOSTLYCLEANFILES += text_unlikely_segment
|
|
text_unlikely_segment.o: text_unlikely_segment.cc
|
|
$(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $<
|
|
text_unlikely_segment: text_unlikely_segment.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,-z,text-unlikely-segment text_unlikely_segment.o
|
|
text_unlikely_segment_readelf.stdout: text_unlikely_segment
|
|
$(TEST_READELF) -Wl $< >$@
|
|
|
|
check_SCRIPTS += keep_text_section_prefix.sh
|
|
check_DATA += keep_text_section_prefix_readelf.stdout keep_text_section_prefix_nm.stdout
|
|
MOSTLYCLEANFILES += keep_text_section_prefix
|
|
keep_text_section_prefix.o: keep_text_section_prefix.cc
|
|
$(CXXCOMPILE) -O0 -c -ffunction-sections -g -o $@ $<
|
|
keep_text_section_prefix: keep_text_section_prefix.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,-z,keep-text-section-prefix keep_text_section_prefix.o
|
|
keep_text_section_prefix_readelf.stdout: keep_text_section_prefix
|
|
$(TEST_READELF) -Wl $< >$@
|
|
keep_text_section_prefix_nm.stdout: keep_text_section_prefix
|
|
$(TEST_NM) -n $< >$@
|
|
|
|
check_PROGRAMS += icf_virtual_function_folding_test
|
|
MOSTLYCLEANFILES += icf_virtual_function_folding_test icf_virtual_function_folding_test.map
|
|
icf_virtual_function_folding_test.o: icf_virtual_function_folding_test.cc
|
|
$(CXXCOMPILE) -O0 -c -ffunction-sections -fPIE -g -o $@ $<
|
|
icf_virtual_function_folding_test: icf_virtual_function_folding_test.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--icf=all icf_virtual_function_folding_test.o -pie
|
|
|
|
check_SCRIPTS += icf_preemptible_functions_test.sh
|
|
check_DATA += icf_preemptible_functions_test.stdout
|
|
MOSTLYCLEANFILES += icf_preemptible_functions_test
|
|
icf_preemptible_functions_test.o: icf_preemptible_functions_test.cc
|
|
$(CXXCOMPILE) -O0 -c -ffunction-sections -fPIC -g -o $@ $<
|
|
icf_preemptible_functions_test: icf_preemptible_functions_test.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--icf=all icf_preemptible_functions_test.o -fPIC -shared
|
|
icf_preemptible_functions_test.stdout: icf_preemptible_functions_test
|
|
$(TEST_NM) icf_preemptible_functions_test > icf_preemptible_functions_test.stdout
|
|
|
|
check_SCRIPTS += icf_string_merge_test.sh
|
|
check_DATA += icf_string_merge_test.stdout
|
|
MOSTLYCLEANFILES += icf_string_merge_test
|
|
icf_string_merge_test.o: icf_string_merge_test.cc
|
|
$(CXXCOMPILE) -O0 -c -ffunction-sections -fPIC -g -o $@ $<
|
|
icf_string_merge_test: icf_string_merge_test.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--icf=all icf_string_merge_test.o
|
|
icf_string_merge_test.stdout: icf_string_merge_test
|
|
$(TEST_NM) icf_string_merge_test > icf_string_merge_test.stdout
|
|
|
|
check_SCRIPTS += icf_sht_rel_addend_test.sh
|
|
check_DATA += icf_sht_rel_addend_test.stdout
|
|
MOSTLYCLEANFILES += icf_sht_rel_addend_test
|
|
icf_sht_rel_addend_test_1.o: icf_sht_rel_addend_test_1.cc
|
|
$(CXXCOMPILE) -O0 -c -ffunction-sections -fPIC -g -o $@ $<
|
|
icf_sht_rel_addend_test_2.o: icf_sht_rel_addend_test_2.cc
|
|
$(CXXCOMPILE) -O0 -c -ffunction-sections -fPIC -g -o $@ $<
|
|
icf_sht_rel_addend_test: icf_sht_rel_addend_test_1.o icf_sht_rel_addend_test_2.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--icf=all 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.cc
|
|
$(CXXCOMPILE) -O2 -c -fPIC -g -o $@ $<
|
|
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
|
|
merge_string_literals.stdout: merge_string_literals
|
|
$(TEST_OBJDUMP) -s -j.rodata merge_string_literals > merge_string_literals.stdout
|
|
|
|
check_PROGRAMS += basic_test
|
|
check_PROGRAMS += basic_pic_test
|
|
basic_test.o: basic_test.cc
|
|
$(CXXCOMPILE) -O0 -c -o $@ $<
|
|
basic_test: basic_test.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ basic_test.o
|
|
|
|
check_PROGRAMS += eh_test
|
|
eh_test_a.o: eh_test_a.cc
|
|
$(CXXCOMPILE) -O0 -c -o $@ $<
|
|
eh_test_b.o: eh_test_b.cc
|
|
$(CXXCOMPILE) -O0 -c -o $@ $<
|
|
eh_test: eh_test_a.o eh_test_b.o gcctestdir/ld
|
|
$(CXXLINK_S) -Bgcctestdir/ eh_test_a.o eh_test_b.o
|
|
|
|
check_SCRIPTS += eh_test_2.sh
|
|
check_DATA += eh_test_2.sects
|
|
MOSTLYCLEANFILES += eh_test_2 eh_test_2.sects
|
|
eh_test_r.o: eh_test_a.o eh_test_b.o gcctestdir/ld
|
|
gcctestdir/ld -r -o $@ eh_test_a.o eh_test_b.o
|
|
eh_test_2: eh_test_r.o gcctestdir/ld
|
|
$(CXXLINK_S) -Bgcctestdir/ -Wl,--eh-frame-hdr eh_test_r.o
|
|
eh_test_2.sects: eh_test_2
|
|
$(TEST_READELF) -SW $< >$@ 2>/dev/null
|
|
|
|
if HAVE_STATIC
|
|
check_PROGRAMS += basic_static_test
|
|
basic_static_test: basic_test.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -static basic_test.o
|
|
endif
|
|
|
|
basic_pic_test.o: basic_test.cc
|
|
$(CXXCOMPILE) -O0 -c -fpic -o $@ $<
|
|
basic_pic_test: basic_pic_test.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ basic_pic_test.o
|
|
|
|
if HAVE_STATIC
|
|
check_PROGRAMS += basic_static_pic_test
|
|
basic_static_pic_test: basic_pic_test.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -static basic_pic_test.o
|
|
endif
|
|
|
|
check_PROGRAMS += basic_pie_test
|
|
basic_pie_test.o: basic_test.cc
|
|
$(CXXCOMPILE) -O0 -c -fpie -o $@ $<
|
|
basic_pie_test: basic_pie_test.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -pie basic_pie_test.o
|
|
|
|
check_PROGRAMS += constructor_test
|
|
constructor_test_SOURCES = constructor_test.cc
|
|
constructor_test_DEPENDENCIES = gcctestdir/ld
|
|
constructor_test_LDFLAGS = -Bgcctestdir/
|
|
constructor_test_LDADD =
|
|
|
|
if HAVE_STATIC
|
|
check_PROGRAMS += constructor_static_test
|
|
constructor_static_test_SOURCES = $(constructor_test_SOURCES)
|
|
constructor_static_test_DEPENDENCIES = $(constructor_test_DEPENDENCIES)
|
|
constructor_static_test_LDFLAGS = $(constructor_test_LDFLAGS) -static
|
|
constructor_static_test_LDADD = $(constructor_test_LDADD)
|
|
endif
|
|
|
|
check_PROGRAMS += two_file_test
|
|
check_PROGRAMS += two_file_pic_test
|
|
two_file_test_SOURCES = \
|
|
two_file_test_1.cc \
|
|
two_file_test_1b.cc \
|
|
two_file_test_2.cc \
|
|
two_file_test_main.cc \
|
|
two_file_test.h
|
|
two_file_test_DEPENDENCIES = gcctestdir/ld
|
|
two_file_test_LDFLAGS = -Bgcctestdir/
|
|
two_file_test_LDADD =
|
|
|
|
if HAVE_STATIC
|
|
check_PROGRAMS += two_file_static_test
|
|
two_file_static_test_SOURCES = $(two_file_test_SOURCES)
|
|
two_file_static_test_DEPENDENCIES = $(two_file_test_DEPENDENCIES)
|
|
two_file_static_test_LDFLAGS = $(two_file_test_LDFLAGS) -static
|
|
two_file_static_test_LDADD = $(two_file_test_LDADD)
|
|
endif
|
|
|
|
two_file_pic_test_SOURCES = two_file_test_main.cc
|
|
two_file_pic_test_DEPENDENCIES = \
|
|
gcctestdir/ld two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o
|
|
two_file_pic_test_LDFLAGS = -Bgcctestdir/
|
|
two_file_pic_test_LDADD = two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o
|
|
|
|
|
|
check_PROGRAMS += two_file_shared_1_test
|
|
check_PROGRAMS += two_file_shared_2_test
|
|
check_PROGRAMS += two_file_shared_1_pic_2_test
|
|
check_PROGRAMS += two_file_shared_2_pic_1_test
|
|
check_PROGRAMS += two_file_same_shared_test
|
|
check_PROGRAMS += two_file_separate_shared_12_test
|
|
check_PROGRAMS += two_file_separate_shared_21_test
|
|
two_file_test_1_pic.o: two_file_test_1.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
two_file_test_1b_pic.o: two_file_test_1b.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
two_file_test_2_pic.o: two_file_test_2.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
two_file_shared_1.so: two_file_test_1_pic.o two_file_test_1b_pic.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o
|
|
two_file_shared_2.so: two_file_test_2_pic.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared two_file_test_2_pic.o
|
|
two_file_shared.so: two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2_pic.o
|
|
|
|
two_file_shared_1_test_SOURCES = two_file_test_2.cc two_file_test_main.cc
|
|
two_file_shared_1_test_DEPENDENCIES = gcctestdir/ld two_file_shared_1.so
|
|
two_file_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
two_file_shared_1_test_LDADD = two_file_shared_1.so
|
|
|
|
two_file_shared_2_test_SOURCES = two_file_test_1.cc two_file_test_1b.cc two_file_test_main.cc
|
|
two_file_shared_2_test_DEPENDENCIES = gcctestdir/ld two_file_shared_2.so
|
|
two_file_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
two_file_shared_2_test_LDADD = two_file_shared_2.so
|
|
|
|
two_file_shared_1_pic_2_test_SOURCES = two_file_test_main.cc
|
|
two_file_shared_1_pic_2_test_DEPENDENCIES = \
|
|
gcctestdir/ld two_file_shared_2.so two_file_test_1_pic.o two_file_test_1b_pic.o
|
|
two_file_shared_1_pic_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
two_file_shared_1_pic_2_test_LDADD = two_file_test_1_pic.o two_file_test_1b_pic.o two_file_shared_2.so
|
|
|
|
two_file_shared_2_pic_1_test_SOURCES = two_file_test_main.cc
|
|
two_file_shared_2_pic_1_test_DEPENDENCIES = \
|
|
gcctestdir/ld two_file_shared_1.so two_file_test_2_pic.o
|
|
two_file_shared_2_pic_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
two_file_shared_2_pic_1_test_LDADD = two_file_test_2_pic.o two_file_shared_1.so
|
|
|
|
two_file_same_shared_test_SOURCES = two_file_test_main.cc
|
|
two_file_same_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared.so
|
|
two_file_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
two_file_same_shared_test_LDADD = two_file_shared.so
|
|
|
|
two_file_separate_shared_12_test_SOURCES = two_file_test_main.cc
|
|
two_file_separate_shared_12_test_DEPENDENCIES = \
|
|
gcctestdir/ld two_file_shared_1.so two_file_shared_2.so
|
|
two_file_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
two_file_separate_shared_12_test_LDADD = \
|
|
two_file_shared_1.so two_file_shared_2.so
|
|
|
|
two_file_separate_shared_21_test_SOURCES = two_file_test_main.cc
|
|
two_file_separate_shared_21_test_DEPENDENCIES = \
|
|
gcctestdir/ld two_file_shared_1.so two_file_shared_2.so
|
|
two_file_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
two_file_separate_shared_21_test_LDADD = \
|
|
two_file_shared_2.so two_file_shared_1.so
|
|
|
|
check_PROGRAMS += two_file_relocatable_test
|
|
two_file_relocatable_test_SOURCES = two_file_test_main.cc
|
|
two_file_relocatable_test_DEPENDENCIES = \
|
|
gcctestdir/ld two_file_relocatable.o
|
|
two_file_relocatable_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
two_file_relocatable_test_LDADD = two_file_relocatable.o
|
|
two_file_relocatable.o: gcctestdir/ld two_file_test_1.o two_file_test_1b.o two_file_test_2.o
|
|
gcctestdir/ld -r -o $@ two_file_test_1.o two_file_test_1b.o two_file_test_2.o
|
|
|
|
check_PROGRAMS += two_file_pie_test
|
|
two_file_test_1_pie.o: two_file_test_1.cc
|
|
$(CXXCOMPILE) -c -fpie -o $@ $<
|
|
two_file_test_1b_pie.o: two_file_test_1b.cc
|
|
$(CXXCOMPILE) -c -fpie -o $@ $<
|
|
two_file_test_2_pie.o: two_file_test_2.cc
|
|
$(CXXCOMPILE) -c -fpie -o $@ $<
|
|
two_file_test_main_pie.o: two_file_test_main.cc
|
|
$(CXXCOMPILE) -c -fpie -o $@ $<
|
|
two_file_pie_test: two_file_test_1_pie.o two_file_test_1b_pie.o \
|
|
two_file_test_2_pie.o two_file_test_main_pie.o gcctestdir/ld
|
|
$(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
|
|
|
|
check_PROGRAMS += pie_copyrelocs_test
|
|
pie_copyrelocs_test_SOURCES = pie_copyrelocs_test.cc
|
|
pie_copyrelocs_test_DEPENDENCIES = gcctestdir/ld pie_copyrelocs_shared_test.so
|
|
pie_copyrelocs_test_CXXFLAGS = -fno-exceptions -fno-asynchronous-unwind-tables
|
|
pie_copyrelocs_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -pie
|
|
pie_copyrelocs_test_LDADD = pie_copyrelocs_shared_test.so
|
|
pie_copyrelocs_shared_test.o: pie_copyrelocs_shared_test.cc
|
|
$(CXXCOMPILE) -O2 -fpic -c -o $@ $<
|
|
pie_copyrelocs_shared_test.so: pie_copyrelocs_shared_test.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared pie_copyrelocs_shared_test.o
|
|
|
|
check_PROGRAMS += weak_unresolved_symbols_test
|
|
weak_unresolved_symbols_test_SOURCES = weak_unresolved_symbols_test.cc
|
|
weak_unresolved_symbols_test_CXXFLAGS = -fPIE
|
|
weak_unresolved_symbols_test_LDFLAGS = -Bgcctestdir/ -pie -Wl,--weak-unresolved-symbols
|
|
|
|
check_SCRIPTS += two_file_shared.sh
|
|
check_DATA += two_file_shared.dbg
|
|
MOSTLYCLEANFILES += two_file_shared.dbg
|
|
two_file_shared.dbg: two_file_shared.so
|
|
$(TEST_READELF) -w $< >$@ 2>/dev/null
|
|
|
|
# The nonpic tests will fail on platforms which can not put non-PIC
|
|
# code into shared libraries, so we just don't run them in that case.
|
|
if FN_PTRS_IN_SO_WITHOUT_PIC
|
|
|
|
check_PROGRAMS += two_file_shared_1_nonpic_test
|
|
check_PROGRAMS += two_file_shared_2_nonpic_test
|
|
check_PROGRAMS += two_file_same_shared_nonpic_test
|
|
check_PROGRAMS += two_file_separate_shared_12_nonpic_test
|
|
check_PROGRAMS += two_file_separate_shared_21_nonpic_test
|
|
check_PROGRAMS += two_file_mixed_shared_test
|
|
check_PROGRAMS += two_file_mixed_2_shared_test
|
|
two_file_shared_1_nonpic.so: two_file_test_1.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b.o -Wl,-z,notext
|
|
two_file_shared_2_nonpic.so: two_file_test_2.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared two_file_test_2.o
|
|
two_file_shared_nonpic.so: two_file_test_1.o two_file_test_1b.o two_file_test_2.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b.o two_file_test_2.o -Wl,-z,notext
|
|
two_file_shared_mixed.so: two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o two_file_test_2.o -Wl,-z,notext
|
|
two_file_shared_mixed_1.so: two_file_test_1.o two_file_test_1b_pic.o two_file_shared_2.so gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared two_file_test_1.o two_file_test_1b_pic.o two_file_shared_2.so -Wl,-z,notext
|
|
|
|
two_file_shared_1_nonpic_test_SOURCES = \
|
|
two_file_test_2.cc two_file_test_main.cc
|
|
two_file_shared_1_nonpic_test_DEPENDENCIES = \
|
|
gcctestdir/ld two_file_shared_1_nonpic.so
|
|
two_file_shared_1_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
two_file_shared_1_nonpic_test_LDADD = two_file_shared_1_nonpic.so
|
|
|
|
two_file_shared_2_nonpic_test_SOURCES = \
|
|
two_file_test_1.cc two_file_test_1b.cc two_file_test_main.cc
|
|
two_file_shared_2_nonpic_test_DEPENDENCIES = \
|
|
gcctestdir/ld two_file_shared_2_nonpic.so
|
|
two_file_shared_2_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
two_file_shared_2_nonpic_test_LDADD = two_file_shared_2_nonpic.so
|
|
|
|
two_file_same_shared_nonpic_test_SOURCES = two_file_test_main.cc
|
|
two_file_same_shared_nonpic_test_DEPENDENCIES = \
|
|
gcctestdir/ld two_file_shared_nonpic.so
|
|
two_file_same_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
two_file_same_shared_nonpic_test_LDADD = two_file_shared_nonpic.so
|
|
|
|
two_file_separate_shared_12_nonpic_test_SOURCES = two_file_test_main.cc
|
|
two_file_separate_shared_12_nonpic_test_DEPENDENCIES = \
|
|
gcctestdir/ld two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so
|
|
two_file_separate_shared_12_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
two_file_separate_shared_12_nonpic_test_LDADD = \
|
|
two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so
|
|
|
|
two_file_separate_shared_21_nonpic_test_SOURCES = two_file_test_main.cc
|
|
two_file_separate_shared_21_nonpic_test_DEPENDENCIES = \
|
|
gcctestdir/ld two_file_shared_1_nonpic.so two_file_shared_2_nonpic.so
|
|
two_file_separate_shared_21_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
two_file_separate_shared_21_nonpic_test_LDADD = \
|
|
two_file_shared_2_nonpic.so two_file_shared_1_nonpic.so
|
|
|
|
two_file_mixed_shared_test_SOURCES = two_file_test_main.cc
|
|
two_file_mixed_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared_mixed.so
|
|
two_file_mixed_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
two_file_mixed_shared_test_LDADD = two_file_shared_mixed.so
|
|
|
|
two_file_mixed_2_shared_test_SOURCES = two_file_test_main.cc
|
|
two_file_mixed_2_shared_test_DEPENDENCIES = gcctestdir/ld two_file_shared_mixed_1.so two_file_shared_2.so
|
|
two_file_mixed_2_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
two_file_mixed_2_shared_test_LDADD = two_file_shared_mixed_1.so two_file_shared_2.so
|
|
|
|
check_PROGRAMS += two_file_mixed_pie_test
|
|
two_file_mixed_pie_test: two_file_test_1.o two_file_test_1b_pie.o \
|
|
two_file_test_main_pie.o two_file_shared_2.so gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,-R,. -pie two_file_test_1.o two_file_test_1b_pie.o two_file_test_main_pie.o two_file_shared_2.so
|
|
|
|
endif FN_PTRS_IN_SO_WITHOUT_PIC
|
|
|
|
check_PROGRAMS += two_file_strip_test
|
|
two_file_strip_test: two_file_test
|
|
$(TEST_STRIP) -o two_file_strip_test two_file_test
|
|
|
|
check_PROGRAMS += two_file_same_shared_strip_test
|
|
two_file_same_shared_strip_test_SOURCES = two_file_test_main.cc
|
|
two_file_same_shared_strip_test_DEPENDENCIES = \
|
|
gcctestdir/ld two_file_shared_strip.so
|
|
two_file_same_shared_strip_test_LDFLAGS = -Bgcctestdir/ -Wl,-R.
|
|
two_file_same_shared_strip_test_LDADD = two_file_shared_strip.so
|
|
two_file_shared_strip.so: two_file_shared.so
|
|
$(TEST_STRIP) -S -o two_file_shared_strip.so two_file_shared.so
|
|
|
|
check_PROGRAMS += common_test_1
|
|
common_test_1_SOURCES = common_test_1.c
|
|
common_test_1_DEPENDENCIES = gcctestdir/ld
|
|
common_test_1_LDFLAGS = -Bgcctestdir/
|
|
common_test_1_LDADD =
|
|
|
|
check_PROGRAMS += common_test_2
|
|
common_test_2_SOURCES = common_test_1.c
|
|
common_test_2_DEPENDENCIES = common_test_2.so common_test_3.so gcctestdir/ld
|
|
common_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
common_test_2_LDADD = common_test_2.so common_test_3.so
|
|
common_test_2_pic.o: common_test_2.c
|
|
$(COMPILE) -c -fpic -o $@ $<
|
|
common_test_2.so: common_test_2_pic.o common_test_3.so gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -shared common_test_2_pic.o common_test_3.so
|
|
common_test_3_pic.o: common_test_3.c
|
|
$(COMPILE) -c -fpic -o $@ $<
|
|
common_test_3.so: common_test_3_pic.o ver_test_2.script gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -shared common_test_3_pic.o -Wl,--version-script,$(srcdir)/ver_test_2.script
|
|
|
|
check_PROGRAMS += exception_test
|
|
check_PROGRAMS += exception_shared_1_test
|
|
check_PROGRAMS += exception_shared_2_test
|
|
check_PROGRAMS += exception_same_shared_test
|
|
check_PROGRAMS += exception_separate_shared_12_test
|
|
check_PROGRAMS += exception_separate_shared_21_test
|
|
exception_test_1_pic.o: exception_test_1.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
exception_test_2_pic.o: exception_test_2.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
exception_shared_1.so: exception_test_1_pic.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared exception_test_1_pic.o
|
|
exception_shared_2.so: exception_test_2_pic.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared exception_test_2_pic.o
|
|
exception_shared.so: exception_test_1_pic.o exception_test_2_pic.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared exception_test_1_pic.o exception_test_2_pic.o
|
|
|
|
exception_test_SOURCES = \
|
|
exception_test_main.cc \
|
|
exception_test_1.cc \
|
|
exception_test_2.cc \
|
|
exception_test.h
|
|
exception_test_DEPENDENCIES = gcctestdir/ld
|
|
exception_test_LDFLAGS = -Bgcctestdir/
|
|
exception_test_LDADD =
|
|
|
|
if HAVE_STATIC
|
|
check_PROGRAMS += exception_static_test
|
|
exception_static_test_SOURCES = $(exception_test_SOURCES)
|
|
exception_static_test_DEPENDENCIES = $(exception_test_DEPENDENCIES)
|
|
exception_static_test_LDFLAGS = $(exception_test_LDFLAGS) -static
|
|
exception_static_test_LDADD = $(exception_test_LDADD)
|
|
endif
|
|
|
|
exception_shared_1_test_SOURCES = exception_test_2.cc exception_test_main.cc
|
|
exception_shared_1_test_DEPENDENCIES = gcctestdir/ld exception_shared_1.so
|
|
exception_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
exception_shared_1_test_LDADD = exception_shared_1.so
|
|
|
|
exception_shared_2_test_SOURCES = exception_test_1.cc exception_test_main.cc
|
|
exception_shared_2_test_DEPENDENCIES = gcctestdir/ld exception_shared_2.so
|
|
exception_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
exception_shared_2_test_LDADD = exception_shared_2.so
|
|
|
|
exception_same_shared_test_SOURCES = exception_test_main.cc
|
|
exception_same_shared_test_DEPENDENCIES = gcctestdir/ld exception_shared.so
|
|
exception_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
exception_same_shared_test_LDADD = exception_shared.so
|
|
|
|
exception_separate_shared_12_test_SOURCES = exception_test_main.cc
|
|
exception_separate_shared_12_test_DEPENDENCIES = \
|
|
gcctestdir/ld exception_shared_1.so exception_shared_2.so
|
|
exception_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. \
|
|
-Wl,--no-as-needed
|
|
exception_separate_shared_12_test_LDADD = \
|
|
exception_shared_1.so exception_shared_2.so
|
|
|
|
exception_separate_shared_21_test_SOURCES = exception_test_main.cc
|
|
exception_separate_shared_21_test_DEPENDENCIES = \
|
|
gcctestdir/ld exception_shared_1.so exception_shared_2.so
|
|
exception_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. \
|
|
-Wl,--no-as-needed
|
|
exception_separate_shared_21_test_LDADD = \
|
|
exception_shared_2.so exception_shared_1.so
|
|
|
|
|
|
check_PROGRAMS += weak_test
|
|
weak_test_SOURCES = weak_test.cc
|
|
weak_test_DEPENDENCIES = gcctestdir/ld
|
|
weak_test_LDFLAGS = -Bgcctestdir/
|
|
weak_test_LDADD =
|
|
|
|
check_PROGRAMS += weak_undef_test
|
|
MOSTLYCLEANFILES += alt/weak_undef_lib.so
|
|
weak_undef_test_SOURCES = weak_undef_test.cc
|
|
weak_undef_test_DEPENDENCIES = gcctestdir/ld weak_undef_lib.so alt/weak_undef_lib.so
|
|
weak_undef_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,alt
|
|
weak_undef_test_LDADD = -L . weak_undef_lib.so
|
|
weak_undef_file1.o: weak_undef_file1.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
weak_undef_file2.o: weak_undef_file2.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
weak_undef_lib.so: weak_undef_file1.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared weak_undef_file1.o
|
|
alt/weak_undef_lib.so: weak_undef_file2.o gcctestdir/ld
|
|
test -d alt || mkdir -p alt
|
|
$(CXXLINK) -Bgcctestdir/ -shared weak_undef_file2.o
|
|
|
|
check_PROGRAMS += weak_undef_test_2
|
|
weak_undef_test_2_SOURCES = weak_undef_test_2.cc
|
|
weak_undef_test_2_DEPENDENCIES = gcctestdir/ld libweak_undef_2.a
|
|
weak_undef_test_2_LDFLAGS = -Bgcctestdir/ -u weak_undef_2
|
|
weak_undef_test_2_LDADD = -L . -lweak_undef_2
|
|
MOSTLYCLEANFILES += libweak_undef_2.a
|
|
libweak_undef_2.a: weak_undef_file3.o weak_undef_file4.o
|
|
$(TEST_AR) rc $@ $^
|
|
weak_undef_file3.o: weak_undef_file3.cc
|
|
$(CXXCOMPILE) -c -o $@ $<
|
|
weak_undef_file4.o: weak_undef_file4.cc
|
|
$(CXXCOMPILE) -c -o $@ $<
|
|
|
|
if FN_PTRS_IN_SO_WITHOUT_PIC
|
|
check_PROGRAMS += weak_undef_nonpic_test
|
|
MOSTLYCLEANFILES += alt/weak_undef_lib_nonpic.so
|
|
weak_undef_nonpic_test_SOURCES = weak_undef_test.cc
|
|
weak_undef_nonpic_test_DEPENDENCIES = gcctestdir/ld weak_undef_lib_nonpic.so alt/weak_undef_lib_nonpic.so
|
|
weak_undef_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,alt
|
|
weak_undef_nonpic_test_LDADD = -L . weak_undef_lib_nonpic.so
|
|
weak_undef_file1_nonpic.o: weak_undef_file1.cc
|
|
$(CXXCOMPILE) -c -o $@ $<
|
|
weak_undef_file2_nonpic.o: weak_undef_file2.cc
|
|
$(CXXCOMPILE) -c -o $@ $<
|
|
weak_undef_lib_nonpic.so: weak_undef_file1_nonpic.o
|
|
$(CXXLINK) -Bgcctestdir/ -shared weak_undef_file1_nonpic.o -Wl,-z,notext
|
|
alt/weak_undef_lib_nonpic.so: weak_undef_file2_nonpic.o
|
|
test -d alt || mkdir -p alt
|
|
$(CXXLINK) -Bgcctestdir/ -shared weak_undef_file2_nonpic.o -Wl,-z,notext
|
|
endif FN_PTRS_IN_SO_WITHOUT_PIC
|
|
|
|
|
|
check_PROGRAMS += weak_alias_test
|
|
weak_alias_test_SOURCES = weak_alias_test_main.cc
|
|
weak_alias_test_DEPENDENCIES = \
|
|
gcctestdir/ld weak_alias_test_1.so weak_alias_test_2.so \
|
|
weak_alias_test_3.o weak_alias_test_4.so weak_alias_test_5.so
|
|
weak_alias_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
weak_alias_test_LDADD = \
|
|
weak_alias_test_1.so weak_alias_test_2.so weak_alias_test_3.o \
|
|
weak_alias_test_4.so weak_alias_test_5.so
|
|
weak_alias_test_1_pic.o: weak_alias_test_1.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
weak_alias_test_1.so: weak_alias_test_1_pic.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_1_pic.o
|
|
weak_alias_test_2_pic.o: weak_alias_test_2.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
weak_alias_test_2.so: weak_alias_test_2_pic.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_2_pic.o
|
|
weak_alias_test_3.o: weak_alias_test_3.cc
|
|
$(CXXCOMPILE) -c -o $@ $<
|
|
weak_alias_test_4_pic.o: weak_alias_test_4.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
weak_alias_test_4.so: weak_alias_test_4_pic.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_4_pic.o
|
|
weak_alias_test_5_pic.o: weak_alias_test_5.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
weak_alias_test_5.so: weak_alias_test_5_pic.o $(srcdir)/weak_alias_test.script gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared weak_alias_test_5_pic.o \
|
|
-Wl,--version-script,$(srcdir)/weak_alias_test.script
|
|
|
|
check_SCRIPTS += weak_plt.sh
|
|
check_PROGRAMS += weak_plt
|
|
check_DATA += weak_plt_shared.so
|
|
weak_plt_main_pic.o: weak_plt_main.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
weak_plt: weak_plt_main_pic.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ weak_plt_main_pic.o
|
|
weak_plt_shared_pic.o: weak_plt_shared.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
weak_plt_shared.so: weak_plt_shared_pic.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared weak_plt_shared_pic.o
|
|
|
|
check_PROGRAMS += copy_test
|
|
copy_test_SOURCES = copy_test.cc
|
|
copy_test_DEPENDENCIES = gcctestdir/ld copy_test_1.so copy_test_2.so
|
|
copy_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
copy_test_LDADD = copy_test_1.so copy_test_2.so
|
|
copy_test_1_pic.o: copy_test_1.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
copy_test_1.so: gcctestdir/ld copy_test_1_pic.o
|
|
$(CXXLINK) -Bgcctestdir/ -shared copy_test_1_pic.o
|
|
copy_test_2_pic.o: copy_test_2.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
copy_test_2.so: gcctestdir/ld copy_test_2_pic.o
|
|
$(CXXLINK) -Bgcctestdir/ -shared copy_test_2_pic.o
|
|
|
|
check_PROGRAMS += copy_test_relro
|
|
copy_test_relro_SOURCES = copy_test_relro.cc
|
|
copy_test_relro_DEPENDENCIES = gcctestdir/ld copy_test_relro_1.so
|
|
copy_test_relro_LDFLAGS = -Bgcctestdir/ -Wl,-R,. -Wl,-z,relro
|
|
copy_test_relro_LDADD = copy_test_relro_1.so
|
|
copy_test_relro_1_pic.o: copy_test_relro_1.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
copy_test_relro_1.so: gcctestdir/ld copy_test_relro_1_pic.o
|
|
$(CXXLINK) -Bgcctestdir/ -shared -Wl,-z,relro copy_test_relro_1_pic.o
|
|
|
|
if !DEFAULT_TARGET_POWERPC
|
|
check_SCRIPTS += copy_test_protected.sh
|
|
check_DATA += copy_test_protected.err
|
|
MOSTLYCLEANFILES += copy_test_protected.err
|
|
copy_test_protected.err: copy_test_protected.o copy_test_2.so gcctestdir/ld
|
|
@echo $(CXXLINK) -Bgcctestdir/ -o copy_test_protected copy_test_protected.o copy_test_2.so -Wl,-R,. "2>$@"
|
|
@if $(CXXLINK) -Bgcctestdir/ -o copy_test_protected copy_test_protected.o copy_test_2.so -Wl,-R,. 2>$@; \
|
|
then \
|
|
echo 1>&2 "Link of copy_test_protected should have failed"; \
|
|
rm -f $@; \
|
|
exit 1; \
|
|
fi
|
|
endif
|
|
|
|
if TLS
|
|
|
|
check_PROGRAMS += tls_test
|
|
check_PROGRAMS += tls_pic_test
|
|
check_PROGRAMS += tls_pie_test
|
|
check_PROGRAMS += tls_pie_pic_test
|
|
check_PROGRAMS += tls_shared_test
|
|
check_PROGRAMS += tls_shared_ie_test
|
|
check_PROGRAMS += tls_shared_gd_to_ie_test
|
|
tls_test_pic.o: tls_test.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
tls_test_file2_pic.o: tls_test_file2.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
tls_test_c_pic.o: tls_test_c.c
|
|
$(COMPILE) -c -fpic $(TLS_TEST_C_CFLAGS) -o $@ $<
|
|
tls_test_shared.so: tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o -Wl,-z,defs
|
|
tls_test_shared2.so: tls_test_file2_pic.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared tls_test_file2_pic.o
|
|
|
|
tls_test_pic_ie.o: tls_test.cc
|
|
$(CXXCOMPILE) -c -fpic -ftls-model=initial-exec -o $@ $<
|
|
tls_test_file2_pic_ie.o: tls_test_file2.cc
|
|
$(CXXCOMPILE) -c -fpic -ftls-model=initial-exec -o $@ $<
|
|
tls_test_c_pic_ie.o: tls_test_c.c
|
|
$(COMPILE) -c -fpic -ftls-model=initial-exec $(TLS_TEST_C_CFLAGS) -o $@ $<
|
|
tls_test_ie_shared.so: tls_test_pic_ie.o tls_test_file2_pic_ie.o tls_test_c_pic_ie.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared tls_test_pic_ie.o tls_test_file2_pic_ie.o tls_test_c_pic_ie.o
|
|
|
|
tls_test_SOURCES = tls_test.cc tls_test_file2.cc tls_test_main.cc tls_test.h
|
|
tls_test_DEPENDENCIES = gcctestdir/ld tls_test_c.o
|
|
tls_test_LDFLAGS = -Bgcctestdir/ $(THREADFLAGS)
|
|
tls_test_LDADD = tls_test_c.o $(THREADLIBS)
|
|
tls_test_c.o: tls_test_c.c
|
|
$(COMPILE) -c $(TLS_TEST_C_CFLAGS) -o $@ $<
|
|
|
|
tls_pic_test_SOURCES = tls_test_main.cc
|
|
tls_pic_test_DEPENDENCIES = gcctestdir/ld tls_test_pic.o tls_test_file2_pic.o \
|
|
tls_test_c_pic.o
|
|
tls_pic_test_LDFLAGS = -Bgcctestdir/ $(THREADFLAGS)
|
|
tls_pic_test_LDADD = tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o \
|
|
$(THREADLIBS)
|
|
|
|
tls_test_main_pie.o: tls_test_main.cc tls_test.h
|
|
$(CXXCOMPILE) -c -fpie -o $@ $<
|
|
tls_test_pie.o: tls_test.cc tls_test.h
|
|
$(CXXCOMPILE) -c -fpie -o $@ $<
|
|
tls_test_file2_pie.o: tls_test_file2.cc tls_test.h
|
|
$(CXXCOMPILE) -c -fpie -o $@ $<
|
|
tls_test_c_pie.o: tls_test_c.c
|
|
$(COMPILE) -c -fpic $(TLS_TEST_C_CFLAGS) -o $@ $<
|
|
tls_pie_test: tls_test_main_pie.o tls_test_pie.o tls_test_file2_pie.o \
|
|
tls_test_c_pie.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ $(THREADFLAGS) -pie tls_test_main_pie.o tls_test_pie.o tls_test_file2_pie.o tls_test_c_pie.o $(THREADLIBS)
|
|
|
|
check_SCRIPTS += tls_pie_test.sh
|
|
check_DATA += tls_pie_test.stdout
|
|
tls_pie_test.stdout: tls_pie_test
|
|
$(TEST_READELF) -rW $< > $@ 2>/dev/null
|
|
|
|
tls_pie_pic_test: tls_test_main_pie.o tls_test_pic.o tls_test_file2_pic.o \
|
|
tls_test_c_pic.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ $(THREADFLAGS) -pie tls_test_main_pie.o tls_test_pic.o tls_test_file2_pic.o tls_test_c_pic.o $(THREADLIBS)
|
|
|
|
tls_shared_test_SOURCES = tls_test_main.cc
|
|
tls_shared_test_DEPENDENCIES = gcctestdir/ld tls_test_shared.so
|
|
tls_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. $(THREADFLAGS)
|
|
tls_shared_test_LDADD = tls_test_shared.so $(THREADLIBS)
|
|
|
|
tls_shared_ie_test_SOURCES = tls_test_main.cc
|
|
tls_shared_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_ie_shared.so
|
|
tls_shared_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. $(THREADFLAGS)
|
|
tls_shared_ie_test_LDADD = tls_test_ie_shared.so $(THREADLIBS)
|
|
|
|
tls_shared_gd_to_ie_test_SOURCES = tls_test_main.cc
|
|
tls_shared_gd_to_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_pic.o \
|
|
tls_test_c_pic.o tls_test_shared2.so
|
|
tls_shared_gd_to_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. $(THREADFLAGS)
|
|
tls_shared_gd_to_ie_test_LDADD = tls_test_pic.o tls_test_c_pic.o \
|
|
tls_test_shared2.so $(THREADLIBS)
|
|
|
|
if TLS_GNU2_DIALECT
|
|
|
|
check_PROGRAMS += tls_shared_gnu2_gd_to_ie_test
|
|
|
|
tls_test_gnu2.o: tls_test.cc
|
|
$(CXXCOMPILE) -c -fpic -mtls-dialect=gnu2 -o $@ $<
|
|
tls_test_file2_gnu2.o: tls_test_file2.cc
|
|
$(CXXCOMPILE) -c -fpic -mtls-dialect=gnu2 -o $@ $<
|
|
tls_test_c_gnu2.o: tls_test_c.c
|
|
$(COMPILE) -c -fpic -mtls-dialect=gnu2 $(TLS_TEST_C_CFLAGS) -o $@ $<
|
|
tls_test_gnu2_shared2.so: tls_test_file2_gnu2.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared tls_test_file2_gnu2.o
|
|
|
|
tls_shared_gnu2_gd_to_ie_test_SOURCES = tls_test_main.cc
|
|
tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES = gcctestdir/ld tls_test_gnu2.o \
|
|
tls_test_c_gnu2.o tls_test_gnu2_shared2.so
|
|
tls_shared_gnu2_gd_to_ie_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. $(THREADFLAGS)
|
|
tls_shared_gnu2_gd_to_ie_test_LDADD = tls_test_gnu2.o tls_test_c_gnu2.o \
|
|
tls_test_gnu2_shared2.so $(THREADLIBS)
|
|
|
|
if TLS_DESCRIPTORS
|
|
|
|
check_PROGRAMS += tls_shared_gnu2_test
|
|
|
|
tls_test_gnu2_shared.so: tls_test_gnu2.o tls_test_file2_gnu2.o tls_test_c_gnu2.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared tls_test_gnu2.o tls_test_file2_gnu2.o tls_test_c_gnu2.o
|
|
|
|
tls_shared_gnu2_test_SOURCES = tls_test_main.cc
|
|
tls_shared_gnu2_test_DEPENDENCIES = gcctestdir/ld tls_test_gnu2_shared.so
|
|
tls_shared_gnu2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. $(THREADFLAGS)
|
|
tls_shared_gnu2_test_LDADD = tls_test_gnu2_shared.so $(THREADLIBS)
|
|
|
|
endif TLS_DESCRIPTORS
|
|
|
|
endif TLS_GNU2_DIALECT
|
|
|
|
if HAVE_STATIC
|
|
if STATIC_TLS
|
|
check_PROGRAMS += tls_static_test
|
|
check_PROGRAMS += tls_static_pic_test
|
|
|
|
tls_static_test_SOURCES = $(tls_test_SOURCES)
|
|
tls_static_test_DEPENDENCIES = $(tls_test_DEPENDENCIES)
|
|
tls_static_test_LDFLAGS = $(tls_test_LDFLAGS) -static
|
|
tls_static_test_LDADD = $(tls_test_LDADD)
|
|
|
|
tls_static_pic_test_SOURCES = $(tls_pic_test_SOURCES)
|
|
tls_static_pic_test_DEPENDENCIES = $(tls_pic_test_DEPENDENCIES)
|
|
tls_static_pic_test_LDFLAGS = $(tls_pic_test_LDFLAGS) -static
|
|
tls_static_pic_test_LDADD = $(tls_pic_test_LDADD)
|
|
endif
|
|
endif
|
|
|
|
if FN_PTRS_IN_SO_WITHOUT_PIC
|
|
check_PROGRAMS += tls_shared_nonpic_test
|
|
tls_test_shared_nonpic.so: tls_test.o tls_test_file2.o tls_test_c.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared tls_test.o tls_test_file2.o tls_test_c.o -Wl,-z,notext
|
|
|
|
tls_shared_nonpic_test_SOURCES = tls_test_main.cc
|
|
tls_shared_nonpic_test_DEPENDENCIES = gcctestdir/ld tls_test_shared_nonpic.so
|
|
tls_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,. $(THREADFLAGS)
|
|
tls_shared_nonpic_test_LDADD = tls_test_shared_nonpic.so $(THREADLIBS)
|
|
endif FN_PTRS_IN_SO_WITHOUT_PIC
|
|
|
|
endif TLS
|
|
|
|
if DEFAULT_TARGET_X86_64
|
|
|
|
check_SCRIPTS += x86_64_mov_to_lea.sh
|
|
check_DATA += x86_64_mov_to_lea1.stdout x86_64_mov_to_lea2.stdout \
|
|
x86_64_mov_to_lea3.stdout x86_64_mov_to_lea4.stdout \
|
|
x86_64_mov_to_lea5.stdout x86_64_mov_to_lea6.stdout \
|
|
x86_64_mov_to_lea7.stdout x86_64_mov_to_lea8.stdout \
|
|
x86_64_mov_to_lea9.stdout x86_64_mov_to_lea10.stdout \
|
|
x86_64_mov_to_lea11.stdout x86_64_mov_to_lea12.stdout \
|
|
x86_64_mov_to_lea13.stdout x86_64_mov_to_lea14.stdout
|
|
MOSTLYCLEANFILES += x86_64_mov_to_lea1 x86_64_mov_to_lea2 \
|
|
x86_64_mov_to_lea3 x86_64_mov_to_lea4 x86_64_mov_to_lea5 \
|
|
x86_64_mov_to_lea6 x86_64_mov_to_lea7 x86_64_mov_to_lea8 \
|
|
x86_64_mov_to_lea9 x86_64_mov_to_lea10 x86_64_mov_to_lea11 \
|
|
x86_64_mov_to_lea12 x86_64_mov_to_lea13 x86_64_mov_to_lea14
|
|
|
|
x86_64_mov_to_lea1.o: x86_64_mov_to_lea1.s
|
|
$(TEST_AS) --64 -o $@ $<
|
|
x86_64_mov_to_lea2.o: x86_64_mov_to_lea1.s
|
|
$(TEST_AS) --x32 -o $@ $<
|
|
x86_64_mov_to_lea3.o: x86_64_mov_to_lea2.s
|
|
$(TEST_AS) --x32 -o $@ $<
|
|
x86_64_mov_to_lea4.o: x86_64_mov_to_lea2.s
|
|
$(TEST_AS) --64 -o $@ $<
|
|
x86_64_mov_to_lea5.o: x86_64_mov_to_lea3.s
|
|
$(TEST_AS) --x32 -mrelax-relocations=yes -o $@ $<
|
|
x86_64_mov_to_lea6.o: x86_64_mov_to_lea3.s
|
|
$(TEST_AS) --64 -mrelax-relocations=yes -o $@ $<
|
|
x86_64_mov_to_lea7.o: x86_64_mov_to_lea4.s
|
|
$(TEST_AS) --x32 -o $@ $<
|
|
x86_64_mov_to_lea8.o: x86_64_mov_to_lea4.s
|
|
$(TEST_AS) --64 -o $@ $<
|
|
x86_64_mov_to_lea1: x86_64_mov_to_lea1.o ../ld-new
|
|
../ld-new -Bsymbolic -shared -melf_x86_64 -o $@ $<
|
|
x86_64_mov_to_lea2: x86_64_mov_to_lea1.o ../ld-new
|
|
../ld-new -pie -melf_x86_64 -o $@ $<
|
|
x86_64_mov_to_lea3: x86_64_mov_to_lea1.o ../ld-new
|
|
../ld-new -melf_x86_64 -o $@ $<
|
|
x86_64_mov_to_lea4: x86_64_mov_to_lea2.o ../ld-new
|
|
../ld-new -Bsymbolic -shared -melf32_x86_64 -o $@ $<
|
|
x86_64_mov_to_lea5: x86_64_mov_to_lea2.o ../ld-new
|
|
../ld-new -pie -melf32_x86_64 -o $@ $<
|
|
x86_64_mov_to_lea6: x86_64_mov_to_lea2.o ../ld-new
|
|
../ld-new -melf32_x86_64 -o $@ $<
|
|
x86_64_mov_to_lea7: x86_64_mov_to_lea3.o ../ld-new
|
|
../ld-new -melf32_x86_64 -pie -o $@ $<
|
|
x86_64_mov_to_lea8: x86_64_mov_to_lea4.o ../ld-new
|
|
../ld-new -melf_x86_64 -pie -o $@ $<
|
|
x86_64_mov_to_lea9: x86_64_mov_to_lea5.o ../ld-new
|
|
../ld-new -melf32_x86_64 -o $@ $<
|
|
x86_64_mov_to_lea10: x86_64_mov_to_lea6.o ../ld-new
|
|
../ld-new -melf_x86_64 -o $@ $<
|
|
x86_64_mov_to_lea11: x86_64_mov_to_lea2.o ../ld-new
|
|
../ld-new -melf32_x86_64 -shared -o $@ $<
|
|
x86_64_mov_to_lea12: x86_64_mov_to_lea1.o ../ld-new
|
|
../ld-new -melf_x86_64 -shared -o $@ $<
|
|
x86_64_mov_to_lea13: x86_64_mov_to_lea7.o ../ld-new
|
|
../ld-new -melf32_x86_64 -shared -o $@ $<
|
|
x86_64_mov_to_lea14: x86_64_mov_to_lea8.o ../ld-new
|
|
../ld-new -melf_x86_64 -shared -o $@ $<
|
|
x86_64_mov_to_lea1.stdout: x86_64_mov_to_lea1
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
x86_64_mov_to_lea2.stdout: x86_64_mov_to_lea2
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
x86_64_mov_to_lea3.stdout: x86_64_mov_to_lea3
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
x86_64_mov_to_lea4.stdout: x86_64_mov_to_lea4
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
x86_64_mov_to_lea5.stdout: x86_64_mov_to_lea5
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
x86_64_mov_to_lea6.stdout: x86_64_mov_to_lea6
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
x86_64_mov_to_lea7.stdout: x86_64_mov_to_lea7
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
x86_64_mov_to_lea8.stdout: x86_64_mov_to_lea8
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
x86_64_mov_to_lea9.stdout: x86_64_mov_to_lea9
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
x86_64_mov_to_lea10.stdout: x86_64_mov_to_lea10
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
x86_64_mov_to_lea11.stdout: x86_64_mov_to_lea11
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
x86_64_mov_to_lea12.stdout: x86_64_mov_to_lea12
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
x86_64_mov_to_lea13.stdout: x86_64_mov_to_lea13
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
x86_64_mov_to_lea14.stdout: x86_64_mov_to_lea14
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
|
|
check_SCRIPTS += x86_64_indirect_call_to_direct.sh
|
|
check_DATA += x86_64_indirect_call_to_direct1.stdout \
|
|
x86_64_indirect_jump_to_direct1.stdout
|
|
MOSTLYCLEANFILES += x86_64_indirect_call_to_direct1 \
|
|
x86_64_indirect_jump_to_direct1
|
|
|
|
x86_64_indirect_call_to_direct1.o: x86_64_indirect_call_to_direct1.s
|
|
$(TEST_AS) --64 -mrelax-relocations=yes -o $@ $<
|
|
x86_64_indirect_call_to_direct1: x86_64_indirect_call_to_direct1.o gcctestdir/ld
|
|
gcctestdir/ld -o $@ $<
|
|
x86_64_indirect_call_to_direct1.stdout: x86_64_indirect_call_to_direct1
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
x86_64_indirect_jump_to_direct1.o: x86_64_indirect_jump_to_direct1.s
|
|
$(TEST_AS) --64 -mrelax-relocations=yes -o $@ $<
|
|
x86_64_indirect_jump_to_direct1: x86_64_indirect_jump_to_direct1.o gcctestdir/ld
|
|
gcctestdir/ld -o $@ $<
|
|
x86_64_indirect_jump_to_direct1.stdout: x86_64_indirect_jump_to_direct1
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
|
|
check_SCRIPTS += x86_64_overflow_pc32.sh
|
|
check_DATA += x86_64_overflow_pc32.err
|
|
MOSTLYCLEANFILES += x86_64_overflow_pc32.err
|
|
x86_64_overflow_pc32.o: x86_64_overflow_pc32.s
|
|
$(TEST_AS) -o $@ $<
|
|
x86_64_overflow_pc32.err: x86_64_overflow_pc32.o gcctestdir/ld
|
|
@echo gcctestdir/ld -e bar -Tdata=0x81000000 -o x86_64_overflow_pc32 x86_64_overflow_pc32.o "2>$@"
|
|
@if gcctestdir/ld -e bar -Tdata=0x81000000 -o x86_64_overflow_pc32 x86_64_overflow_pc32.o 2>$@; \
|
|
then \
|
|
echo 1>&2 "Link of x86_64_overflow_pc32 should have failed"; \
|
|
rm -f $@; \
|
|
exit 1; \
|
|
fi
|
|
|
|
check_PROGRAMS += pr17704a_test
|
|
pr17704a_test.o: pr17704a_test.s
|
|
$(TEST_AS) --64 -o $@ $<
|
|
pr17704a_test: pr17704a_test.o gcctestdir/ld
|
|
gcctestdir/ld --icf=all -o $@ $<
|
|
|
|
check_SCRIPTS += x32_overflow_pc32.sh
|
|
check_DATA += x32_overflow_pc32.err
|
|
MOSTLYCLEANFILES += x32_overflow_pc32.err
|
|
x32_overflow_pc32.o: x86_64_overflow_pc32.s
|
|
$(TEST_AS) --x32 -o $@ $<
|
|
x32_overflow_pc32.err: x32_overflow_pc32.o gcctestdir/ld
|
|
@echo gcctestdir/ld -e bar -Tdata=0x81000000 -o x32_overflow_pc32 x32_overflow_pc32.o "2>$@"
|
|
@if gcctestdir/ld -e bar -Tdata=0x81000000 -o x32_overflow_pc32 x32_overflow_pc32.o 2>$@; \
|
|
then \
|
|
echo 1>&2 "Link of x32_overflow_pc32 should have failed"; \
|
|
rm -f $@; \
|
|
exit 1; \
|
|
fi
|
|
|
|
check_SCRIPTS += pr23016_1.sh
|
|
check_DATA += pr23016_1.stdout pr23016_1r.stdout
|
|
pr23016_1.stdout: pr23016_1.o
|
|
$(TEST_READELF) -rSW $< >$@ 2>/dev/null
|
|
pr23016_1.o: pr23016_1a.o pr23016_1b.o gcctestdir/ld
|
|
gcctestdir/ld -r -o $@ pr23016_1a.o pr23016_1b.o
|
|
pr23016_1r.stdout: pr23016_1r.o
|
|
$(TEST_READELF) -rSW $< >$@ 2>/dev/null
|
|
pr23016_1r.o: pr23016_1a.o pr23016_1b.o gcctestdir/ld
|
|
gcctestdir/ld -r -o $@ pr23016_1b.o pr23016_1a.o
|
|
pr23016_1a.o: pr23016_1a.s
|
|
$(TEST_AS) -o $@ $<
|
|
pr23016_1b.o: pr23016_1b.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
check_SCRIPTS += pr23016_2.sh
|
|
check_DATA += pr23016_2.stdout
|
|
pr23016_2.stdout: pr23016_2.o
|
|
$(TEST_READELF) -rW $< >$@ 2>/dev/null
|
|
pr23016_2.o: pr23016_2a.o pr23016_2b.o gcctestdir/ld
|
|
gcctestdir/ld -r -o $@ pr23016_2a.o pr23016_2b.o
|
|
pr23016_2a.o: pr23016_2a.s
|
|
$(TEST_AS) -o $@ $<
|
|
pr23016_2b.o: pr23016_2b.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
endif DEFAULT_TARGET_X86_64
|
|
|
|
if DEFAULT_TARGET_X86_64_OR_X32
|
|
|
|
check_PROGRAMS += pr20216a_test
|
|
pr20216a_test_SOURCES = pr20216_main.c pr20216_def.c
|
|
pr20216a_test_DEPENDENCIES = pr20216_gd.o pr20216_ld.o gcctestdir/ld gcctestdir/as
|
|
pr20216a_test_CFLAGS = -Bgcctestdir/ -fPIE
|
|
pr20216a_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
pr20216a_test_LDADD = pr20216_gd.o pr20216_ld.o
|
|
|
|
check_PROGRAMS += pr20216b_test
|
|
pr20216b_test_SOURCES = pr20216_main.c pr20216_def.c
|
|
pr20216b_test_DEPENDENCIES = pr20216_gd.o pr20216_ld.o gcctestdir/ld gcctestdir/as
|
|
pr20216b_test_CFLAGS = -Bgcctestdir/ -fPIE
|
|
pr20216b_test_LDFLAGS = -pie -Bgcctestdir/ -Wl,-R,.
|
|
pr20216b_test_LDADD = pr20216_gd.o pr20216_ld.o
|
|
|
|
check_PROGRAMS += pr20216c_test
|
|
pr20216c_test_SOURCES = pr20216_main.c pr20216_def.c
|
|
pr20216c_test_DEPENDENCIES = pr20216_gd.o pr20216_ld.o gcctestdir/ld gcctestdir/as
|
|
pr20216c_test_CFLAGS = -Bgcctestdir/ -fPIE
|
|
pr20216c_test_LDFLAGS = -static -Bgcctestdir/ -Wl,-R,.
|
|
pr20216c_test_LDADD = pr20216_gd.o pr20216_ld.o
|
|
|
|
check_PROGRAMS += pr20216d_test
|
|
pr20216d_test_SOURCES = pr20216_main.c pr20216_def.c
|
|
pr20216d_test_DEPENDENCIES = pr20216a.so gcctestdir/ld gcctestdir/as
|
|
pr20216d_test_CFLAGS = -Bgcctestdir/ -fPIE
|
|
pr20216d_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
pr20216d_test_LDADD = pr20216a.so
|
|
|
|
check_PROGRAMS += pr20216e_test
|
|
pr20216e_test_SOURCES = pr20216_main.c
|
|
pr20216e_test_DEPENDENCIES = pr20216_gd.o pr20216_ld.o pr20216b.so gcctestdir/ld gcctestdir/as
|
|
pr20216e_test_CFLAGS = -Bgcctestdir/ -fPIE
|
|
pr20216e_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
pr20216e_test_LDADD = pr20216_gd.o pr20216_ld.o pr20216b.so
|
|
|
|
MOSTLYCLEANFILES += pr20216a.so pr20216b.so
|
|
|
|
pr20216a.so: pr20216_gd.o pr20216_ld.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -shared pr20216_gd.o pr20216_ld.o
|
|
|
|
pr20216b.so: pr20216_def.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -shared pr20216_def.o
|
|
|
|
pr20216_gd.o: pr20216_gd.S gcctestdir/as
|
|
$(COMPILE) -Bgcctestdir/ -c -o $@ $<
|
|
|
|
pr20216_ld.o: pr20216_ld.S gcctestdir/as
|
|
$(COMPILE) -Bgcctestdir/ -c -o $@ $<
|
|
|
|
endif DEFAULT_TARGET_X86_64_OR_X32
|
|
|
|
if DEFAULT_TARGET_I386
|
|
|
|
check_SCRIPTS += i386_mov_to_lea.sh
|
|
check_DATA += i386_mov_to_lea1.stdout i386_mov_to_lea2.stdout \
|
|
i386_mov_to_lea3.stdout i386_mov_to_lea4.stdout \
|
|
i386_mov_to_lea5.stdout i386_mov_to_lea6.stdout \
|
|
i386_mov_to_lea7.stdout i386_mov_to_lea8.stdout
|
|
MOSTLYCLEANFILES += i386_mov_to_lea1 i386_mov_to_lea2 i386_mov_to_lea3 \
|
|
i386_mov_to_lea4 i386_mov_to_lea5 i386_mov_to_lea6 \
|
|
i386_mov_to_lea7 i386_mov_to_lea8
|
|
|
|
i386_mov_to_lea1.o: i386_mov_to_lea1.s
|
|
$(TEST_AS) --32 -o $@ $<
|
|
i386_mov_to_lea2.o: i386_mov_to_lea2.s
|
|
$(TEST_AS) --32 -o $@ $<
|
|
i386_mov_to_lea3.o: i386_mov_to_lea3.s
|
|
$(TEST_AS) --32 -o $@ $<
|
|
i386_mov_to_lea4.o: i386_mov_to_lea4.s
|
|
$(TEST_AS) --32 -o $@ $<
|
|
i386_mov_to_lea5.o: i386_mov_to_lea5.s
|
|
$(TEST_AS) --32 -o $@ $<
|
|
i386_mov_to_lea1: i386_mov_to_lea1.o ../ld-new
|
|
../ld-new -Bsymbolic -shared -melf_i386 -o $@ $<
|
|
i386_mov_to_lea2: i386_mov_to_lea1.o ../ld-new
|
|
../ld-new -pie -melf_i386 -o $@ $<
|
|
i386_mov_to_lea3: i386_mov_to_lea1.o ../ld-new
|
|
../ld-new -melf_i386 -o $@ $<
|
|
i386_mov_to_lea4: i386_mov_to_lea1.o ../ld-new
|
|
../ld-new -melf_i386 -shared -o $@ $<
|
|
i386_mov_to_lea5: i386_mov_to_lea2.o ../ld-new
|
|
../ld-new -melf_i386 -shared -o $@ $<
|
|
i386_mov_to_lea6: i386_mov_to_lea3.o ../ld-new
|
|
../ld-new -melf_i386 -shared -o $@ $<
|
|
i386_mov_to_lea7: i386_mov_to_lea4.o ../ld-new
|
|
../ld-new -melf_i386 -shared -o $@ $<
|
|
i386_mov_to_lea8: i386_mov_to_lea5.o ../ld-new
|
|
../ld-new -melf_i386 -shared -o $@ $<
|
|
i386_mov_to_lea1.stdout: i386_mov_to_lea1
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
i386_mov_to_lea2.stdout: i386_mov_to_lea2
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
i386_mov_to_lea3.stdout: i386_mov_to_lea3
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
i386_mov_to_lea4.stdout: i386_mov_to_lea4
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
i386_mov_to_lea5.stdout: i386_mov_to_lea5
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
i386_mov_to_lea6.stdout: i386_mov_to_lea6
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
i386_mov_to_lea7.stdout: i386_mov_to_lea7
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
i386_mov_to_lea8.stdout: i386_mov_to_lea8
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
|
|
check_PROGRAMS += pr20308a_test
|
|
pr20308a_test_SOURCES = pr20308_main.c pr20308_def.c
|
|
pr20308a_test_DEPENDENCIES = pr20308_gd.o pr20308_ld.o gcctestdir/ld gcctestdir/as
|
|
pr20308a_test_CFLAGS = -Bgcctestdir/ -fPIE
|
|
pr20308a_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
pr20308a_test_LDADD = pr20308_gd.o pr20308_ld.o
|
|
|
|
check_PROGRAMS += pr20308b_test
|
|
pr20308b_test_SOURCES = pr20308_main.c pr20308_def.c
|
|
pr20308b_test_DEPENDENCIES = pr20308_gd.o pr20308_ld.o gcctestdir/ld gcctestdir/as
|
|
pr20308b_test_CFLAGS = -Bgcctestdir/ -fPIE
|
|
pr20308b_test_LDFLAGS = -pie -Bgcctestdir/ -Wl,-R,.
|
|
pr20308b_test_LDADD = pr20308_gd.o pr20308_ld.o
|
|
|
|
check_PROGRAMS += pr20308c_test
|
|
pr20308c_test_SOURCES = pr20308_main.c pr20308_def.c
|
|
pr20308c_test_DEPENDENCIES = pr20308_gd.o pr20308_ld.o gcctestdir/ld gcctestdir/as
|
|
pr20308c_test_CFLAGS = -Bgcctestdir/ -fPIE
|
|
pr20308c_test_LDFLAGS = -static -Bgcctestdir/ -Wl,-R,.
|
|
pr20308c_test_LDADD = pr20308_gd.o pr20308_ld.o
|
|
|
|
check_PROGRAMS += pr20308d_test
|
|
pr20308d_test_SOURCES = pr20308_main.c pr20308_def.c
|
|
pr20308d_test_DEPENDENCIES = pr20308a.so gcctestdir/ld gcctestdir/as
|
|
pr20308d_test_CFLAGS = -Bgcctestdir/ -fPIE
|
|
pr20308d_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
pr20308d_test_LDADD = pr20308a.so
|
|
|
|
check_PROGRAMS += pr20308e_test
|
|
pr20308e_test_SOURCES = pr20308_main.c
|
|
pr20308e_test_DEPENDENCIES = pr20308_gd.o pr20308_ld.o pr20308b.so gcctestdir/ld gcctestdir/as
|
|
pr20308e_test_CFLAGS = -Bgcctestdir/ -fPIE
|
|
pr20308e_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
pr20308e_test_LDADD = pr20308_gd.o pr20308_ld.o pr20308b.so
|
|
|
|
MOSTLYCLEANFILES += pr20308a.so pr20308b.so
|
|
|
|
pr20308a.so: pr20308_gd.o pr20308_ld.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -shared pr20308_gd.o pr20308_ld.o
|
|
|
|
pr20308b.so: pr20308_def.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -shared pr20308_def.o
|
|
|
|
pr20308_gd.o: pr20308_gd.S gcctestdir/as
|
|
$(COMPILE) -Bgcctestdir/ -c -o $@ $<
|
|
|
|
pr20308_ld.o: pr20308_ld.S gcctestdir/as
|
|
$(COMPILE) -Bgcctestdir/ -c -o $@ $<
|
|
|
|
endif DEFAULT_TARGET_I386
|
|
|
|
check_PROGRAMS += many_sections_test
|
|
many_sections_test_SOURCES = many_sections_test.cc
|
|
many_sections_test_DEPENDENCIES = gcctestdir/ld
|
|
many_sections_test_LDFLAGS = -Bgcctestdir/ -rdynamic
|
|
many_sections_test_LDADD =
|
|
|
|
BUILT_SOURCES += many_sections_define.h
|
|
MOSTLYCLEANFILES += many_sections_define.h
|
|
many_sections_define.h:
|
|
(for i in `seq 1 70000`; do \
|
|
echo "int var_$$i __attribute__((section(\"section_$$i\"))) = $$i;"; \
|
|
done) > $@.tmp
|
|
mv -f $@.tmp $@
|
|
|
|
BUILT_SOURCES += many_sections_check.h
|
|
MOSTLYCLEANFILES += many_sections_check.h
|
|
many_sections_check.h:
|
|
(for i in `seq 1 1000 70000`; do \
|
|
echo "assert(var_$$i == $$i);"; \
|
|
done) > $@.tmp
|
|
mv -f $@.tmp $@
|
|
|
|
check_PROGRAMS += many_sections_r_test
|
|
many_sections_r_test.o: many_sections_test.o gcctestdir/ld
|
|
gcctestdir/ld -r -o $@ many_sections_test.o
|
|
many_sections_r_test: many_sections_r_test.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ many_sections_r_test.o $(LIBS)
|
|
|
|
check_SCRIPTS += file_in_many_sections_test.sh
|
|
check_DATA += file_in_many_sections.stdout
|
|
MOSTLYCLEANFILES += file_in_many_sections
|
|
file_in_many_sections.o: file_in_many_sections.c many_sections_define.h
|
|
$(COMPILE) -c -fdata-sections -o $@ $(srcdir)/file_in_many_sections.c
|
|
file_in_many_sections: file_in_many_sections.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ file_in_many_sections.o -Wl,--gc-sections
|
|
file_in_many_sections.stdout: file_in_many_sections
|
|
$(TEST_READELF) -s $< > $@
|
|
|
|
check_PROGRAMS += initpri1
|
|
initpri1_SOURCES = initpri1.c
|
|
initpri1_DEPENDENCIES = gcctestdir/ld
|
|
initpri1_LDFLAGS = -Bgcctestdir/
|
|
initpri1_LDADD =
|
|
|
|
check_PROGRAMS += initpri2
|
|
initpri2_SOURCES = initpri2.c
|
|
initpri2_DEPENDENCIES = gcctestdir/ld
|
|
initpri2_LDFLAGS = -Bgcctestdir/ -Wl,--ctors-in-init-array
|
|
initpri2_LDADD =
|
|
|
|
check_PROGRAMS += initpri3a
|
|
initpri3a_SOURCES = initpri3.c
|
|
initpri3a_DEPENDENCIES = gcctestdir/ld
|
|
initpri3a_LDFLAGS = -Bgcctestdir/
|
|
initpri3a_LDADD =
|
|
|
|
# This test fails on targets not using .ctors and .dtors sections (e.g. ARM
|
|
# EABI). Given that gcc is moving towards using .init_array in all cases,
|
|
# this test is commented out. A better fix would be checking whether gcc
|
|
# uses .ctors or .init_array sections in configure.
|
|
|
|
# check_PROGRAMS += initpri3b
|
|
# initpri3b_SOURCES = initpri3.c
|
|
# initpri3b_DEPENDENCIES = gcctestdir/ld
|
|
# initpri3b_LDFLAGS = -Bgcctestdir/ -Wl,--no-ctors-in-init-array
|
|
# initpri3b_LDADD =
|
|
|
|
# Test --detect-odr-violations
|
|
check_SCRIPTS += debug_msg.sh
|
|
|
|
# Create the data files that debug_msg.sh analyzes.
|
|
check_DATA += debug_msg.err
|
|
MOSTLYCLEANFILES += debug_msg.err
|
|
debug_msg.o: debug_msg.cc
|
|
$(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/debug_msg.cc
|
|
odr_violation1.o: odr_violation1.cc
|
|
$(CXXCOMPILE) -O0 -g -c -w -o $@ $(srcdir)/odr_violation1.cc
|
|
# Compile with different optimization flags to check that rearranged
|
|
# instructions don't cause a false positive.
|
|
odr_violation2.o: odr_violation2.cc
|
|
$(CXXCOMPILE) -O2 -g -c -w -o $@ $(srcdir)/odr_violation2.cc
|
|
debug_msg.err: debug_msg.o odr_violation1.o odr_violation2.o gcctestdir/ld
|
|
@echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg debug_msg.o odr_violation1.o odr_violation2.o "2>$@"
|
|
@if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg debug_msg.o odr_violation1.o odr_violation2.o 2>$@; \
|
|
then \
|
|
echo 1>&2 "Link of debug_msg should have failed"; \
|
|
rm -f $@; \
|
|
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
|
|
|
|
# Check that --detect-odr-violations works with compressed debug sections.
|
|
check_DATA += debug_msg_cdebug.err
|
|
MOSTLYCLEANFILES += debug_msg_cdebug.err
|
|
debug_msg_cdebug.o: debug_msg.cc gcctestdir/as
|
|
$(CXXCOMPILE) -Bgcctestdir/ -O0 -g -Wa,--compress-debug-sections -c -w -o $@ $(srcdir)/debug_msg.cc
|
|
odr_violation1_cdebug.o: odr_violation1.cc gcctestdir/as
|
|
$(CXXCOMPILE) -Bgcctestdir/ -O0 -g -Wa,--compress-debug-sections -c -w -o $@ $(srcdir)/odr_violation1.cc
|
|
odr_violation2_cdebug.o: odr_violation2.cc gcctestdir/as
|
|
$(CXXCOMPILE) -Bgcctestdir/ -O2 -g -Wa,--compress-debug-sections -c -w -o $@ $(srcdir)/odr_violation2.cc
|
|
debug_msg_cdebug.err: debug_msg_cdebug.o odr_violation1_cdebug.o odr_violation2_cdebug.o gcctestdir/ld
|
|
@echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_cdebug debug_msg_cdebug.o odr_violation1_cdebug.o odr_violation2_cdebug.o "2>$@"
|
|
@if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_cdebug debug_msg_cdebug.o odr_violation1_cdebug.o odr_violation2_cdebug.o 2>$@; \
|
|
then \
|
|
echo 1>&2 "Link of debug_msg_cdebug should have failed"; \
|
|
rm -f $@; \
|
|
exit 1; \
|
|
fi
|
|
check_DATA += debug_msg_cdebug_gabi.err
|
|
MOSTLYCLEANFILES += debug_msg_cdebug_gabi.err
|
|
debug_msg_cdebug_gabi.o: debug_msg.cc gcctestdir/as
|
|
$(CXXCOMPILE) -Bgcctestdir/ -O0 -g -Wa,--compress-debug-sections=zlib-gabi -c -w -o $@ $(srcdir)/debug_msg.cc
|
|
odr_violation1_cdebug_gabi.o: odr_violation1.cc gcctestdir/as
|
|
$(CXXCOMPILE) -Bgcctestdir/ -O0 -g -Wa,--compress-debug-sections=zlib-gabi -c -w -o $@ $(srcdir)/odr_violation1.cc
|
|
odr_violation2_cdebug_gabi.o: odr_violation2.cc gcctestdir/as
|
|
$(CXXCOMPILE) -Bgcctestdir/ -O2 -g -Wa,--compress-debug-sections=zlib-gabi -c -w -o $@ $(srcdir)/odr_violation2.cc
|
|
debug_msg_cdebug_gabi.err: debug_msg_cdebug_gabi.o odr_violation1_cdebug_gabi.o odr_violation2_cdebug_gabi.o gcctestdir/ld
|
|
@echo $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_cdebug debug_msg_cdebug_gabi.o odr_violation1_cdebug_gabi.o odr_violation2_cdebug_gabi.o "2>$@"
|
|
@if $(CXXLINK) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_cdebug_gabi debug_msg_cdebug_gabi.o odr_violation1_cdebug_gabi.o odr_violation2_cdebug_gabi.o 2>$@; \
|
|
then \
|
|
echo 1>&2 "Link of debug_msg_cdebug_gabi should have failed"; \
|
|
rm -f $@; \
|
|
exit 1; \
|
|
fi
|
|
|
|
# See if we can also detect problems when we're linking .so's, not .o's.
|
|
check_DATA += debug_msg_so.err
|
|
MOSTLYCLEANFILES += debug_msg_so.err
|
|
debug_msg.so: debug_msg.cc gcctestdir/ld
|
|
$(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/debug_msg.cc
|
|
odr_violation1.so: odr_violation1.cc gcctestdir/ld
|
|
$(CXXCOMPILE) -Bgcctestdir/ -O0 -g -shared -fPIC -w -o $@ $(srcdir)/odr_violation1.cc
|
|
odr_violation2.so: odr_violation2.cc gcctestdir/ld
|
|
$(CXXCOMPILE) -Bgcctestdir/ -O2 -g -shared -fPIC -w -o $@ $(srcdir)/odr_violation2.cc
|
|
debug_msg_so.err: debug_msg.so odr_violation1.so odr_violation2.so gcctestdir/ld
|
|
@echo $(CXXLINK_S) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_so debug_msg.so odr_violation1.so odr_violation2.so "2>$@"
|
|
@if $(CXXLINK_S) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_so debug_msg.so odr_violation1.so odr_violation2.so 2>$@; \
|
|
then \
|
|
echo 1>&2 "Link of debug_msg_so should have failed"; \
|
|
rm -f $@; \
|
|
exit 1; \
|
|
fi
|
|
|
|
# We also want to make sure we do something reasonable when there's no
|
|
# debug info available. For the best test, we use .so's.
|
|
check_DATA += debug_msg_ndebug.err
|
|
MOSTLYCLEANFILES += debug_msg_ndebug.err
|
|
debug_msg_ndebug.so: debug_msg.cc gcctestdir/ld
|
|
$(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/debug_msg.cc
|
|
odr_violation1_ndebug.so: odr_violation1.cc gcctestdir/ld
|
|
$(CXXCOMPILE) -Bgcctestdir/ -O0 -g0 -shared -fPIC -w -o $@ $(srcdir)/odr_violation1.cc
|
|
odr_violation2_ndebug.so: odr_violation2.cc gcctestdir/ld
|
|
$(CXXCOMPILE) -Bgcctestdir/ -O2 -g0 -shared -fPIC -w -o $@ $(srcdir)/odr_violation2.cc
|
|
debug_msg_ndebug.err: debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so gcctestdir/ld
|
|
@echo $(CXXLINK_S) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_ndebug debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so -shared-libgcc -Bdynamic -lstdc++ "2>$@"
|
|
@if $(CXXLINK_S) -Bgcctestdir/ -Wl,--detect-odr-violations -o debug_msg_ndebug debug_msg_ndebug.so odr_violation1_ndebug.so odr_violation2_ndebug.so -shared-libgcc -Bdynamic -lstdc++ 2>$@; \
|
|
then \
|
|
echo 1>&2 "Link of debug_msg_ndebug should have failed"; \
|
|
rm -f $@; \
|
|
exit 1; \
|
|
fi
|
|
|
|
|
|
# Similar to --detect-odr-violations: check for undefined symbols in .so's
|
|
check_SCRIPTS += undef_symbol.sh
|
|
check_DATA += undef_symbol.err
|
|
MOSTLYCLEANFILES += undef_symbol.err
|
|
undef_symbol.o: undef_symbol.cc
|
|
$(CXXCOMPILE) -O0 -g -c -fPIC $<
|
|
undef_symbol.so: undef_symbol.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared undef_symbol.o
|
|
undef_symbol.err: undef_symbol_main.o undef_symbol.so gcctestdir/ld
|
|
@echo $(CXXLINK) -Bgcctestdir/ -o undef_symbol_test undef_symbol_main.o undef_symbol.so "2>$@"
|
|
@if $(CXXLINK) -Bgcctestdir/ -o undef_symbol_test undef_symbol_main.o undef_symbol.so 2>$@; \
|
|
then \
|
|
echo 1>&2 "Link of undef_symbol_test should have failed"; \
|
|
rm -f $@; \
|
|
exit 1; \
|
|
fi
|
|
|
|
|
|
# Test -o when emitting to a special file (such as something in /dev).
|
|
check_PROGRAMS += flagstest_o_specialfile
|
|
flagstest_o_specialfile: flagstest_debug.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -o /dev/stdout $< 2>&1 | cat > $@
|
|
chmod a+x $@
|
|
test -s $@
|
|
|
|
# Test --compress-debug-sections.
|
|
check_PROGRAMS += flagstest_compress_debug_sections_none
|
|
check_DATA += flagstest_compress_debug_sections_none.stdout
|
|
flagstest_compress_debug_sections_none: flagstest_debug.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -o $@ $< -Wl,--compress-debug-sections=none
|
|
test -s $@
|
|
|
|
# Dump DWARF debug sections.
|
|
flagstest_compress_debug_sections_none.stdout: flagstest_compress_debug_sections_none
|
|
$(TEST_READELF) -w $< > $@.tmp
|
|
mv -f $@.tmp $@
|
|
|
|
check_PROGRAMS += flagstest_compress_debug_sections
|
|
check_DATA += flagstest_compress_debug_sections.stdout \
|
|
flagstest_compress_debug_sections.cmp \
|
|
flagstest_compress_debug_sections.check
|
|
MOSTLYCLEANFILES += flagstest_compress_debug_sections.check \
|
|
flagstest_compress_debug_sections.cmp
|
|
flagstest_compress_debug_sections: flagstest_debug.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -o $@ $< -Wl,--compress-debug-sections=zlib
|
|
test -s $@
|
|
|
|
# Test --compress-debug-sections with --build-id=tree.
|
|
check_PROGRAMS += flagstest_compress_debug_sections_and_build_id_tree
|
|
flagstest_compress_debug_sections_and_build_id_tree: flagstest_debug.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -o $@ $< -Wl,--compress-debug-sections=zlib \
|
|
-Wl,--build-id=tree \
|
|
-Wl,--build-id-chunk-size-for-treehash=4096 \
|
|
-Wl,--build-id-min-file-size-for-treehash=0
|
|
test -s $@
|
|
|
|
# Dump compressed DWARF debug sections.
|
|
flagstest_compress_debug_sections.stdout: flagstest_compress_debug_sections
|
|
$(TEST_READELF) -w $< | sed -e "s/.zdebug_/.debug_/" > $@.tmp
|
|
mv -f $@.tmp $@
|
|
|
|
# Check there are compressed DWARF .debug_* sections.
|
|
flagstest_compress_debug_sections.check: flagstest_compress_debug_sections
|
|
$(TEST_READELF) -SW $< | egrep ".debug_.* C *" > $@.tmp
|
|
mv -f $@.tmp $@
|
|
|
|
# Compare DWARF debug info.
|
|
flagstest_compress_debug_sections.cmp: flagstest_compress_debug_sections.stdout \
|
|
flagstest_compress_debug_sections_none.stdout
|
|
cmp flagstest_compress_debug_sections.stdout \
|
|
flagstest_compress_debug_sections_none.stdout > $@.tmp
|
|
mv -f $@.tmp $@
|
|
|
|
check_PROGRAMS += flagstest_compress_debug_sections_gnu
|
|
check_DATA += flagstest_compress_debug_sections_gnu.stdout \
|
|
flagstest_compress_debug_sections_gnu.cmp \
|
|
flagstest_compress_debug_sections_gnu.check
|
|
MOSTLYCLEANFILES += flagstest_compress_debug_sections_gnu.check \
|
|
flagstest_compress_debug_sections_gnu.cmp
|
|
flagstest_compress_debug_sections_gnu: flagstest_debug.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -o $@ $< -Wl,--compress-debug-sections=zlib-gnu
|
|
test -s $@
|
|
|
|
# Dump compressed DWARF debug sections.
|
|
flagstest_compress_debug_sections_gnu.stdout: flagstest_compress_debug_sections_gnu
|
|
$(TEST_READELF) -w $< | sed -e "s/.zdebug_/.debug_/" > $@.tmp
|
|
mv -f $@.tmp $@
|
|
|
|
# Check there are compressed DWARF .zdebug_* sections.
|
|
flagstest_compress_debug_sections_gnu.check: flagstest_compress_debug_sections_gnu
|
|
$(TEST_READELF) -SW $< | grep ".zdebug_" > $@.tmp
|
|
mv -f $@.tmp $@
|
|
|
|
# Compare DWARF debug info.
|
|
flagstest_compress_debug_sections_gnu.cmp: flagstest_compress_debug_sections_gnu.stdout \
|
|
flagstest_compress_debug_sections_none.stdout
|
|
cmp flagstest_compress_debug_sections_gnu.stdout \
|
|
flagstest_compress_debug_sections_none.stdout > $@.tmp
|
|
mv -f $@.tmp $@
|
|
|
|
check_PROGRAMS += flagstest_compress_debug_sections_gabi
|
|
check_DATA += flagstest_compress_debug_sections_gabi.stdout \
|
|
flagstest_compress_debug_sections_gabi.cmp \
|
|
flagstest_compress_debug_sections_gabi.check
|
|
MOSTLYCLEANFILES += flagstest_compress_debug_sections_gabi.cmp \
|
|
flagstest_compress_debug_sections_gabi.check
|
|
flagstest_compress_debug_sections_gabi: flagstest_debug.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -o $@ $< -Wl,--compress-debug-sections=zlib-gabi
|
|
test -s $@
|
|
|
|
# Dump compressed DWARF debug sections.
|
|
flagstest_compress_debug_sections_gabi.stdout: flagstest_compress_debug_sections_gabi
|
|
$(TEST_READELF) -w $< > $@.tmp
|
|
mv -f $@.tmp $@
|
|
|
|
# Check there are compressed DWARF .debug_* sections.
|
|
flagstest_compress_debug_sections_gabi.check: flagstest_compress_debug_sections_gabi
|
|
$(TEST_READELF) -tW $< | grep "COMPRESSED" > $@.tmp
|
|
mv -f $@.tmp $@
|
|
|
|
# Compare DWARF debug info.
|
|
flagstest_compress_debug_sections_gabi.cmp: flagstest_compress_debug_sections_gabi.stdout \
|
|
flagstest_compress_debug_sections_none.stdout
|
|
cmp flagstest_compress_debug_sections_gabi.stdout \
|
|
flagstest_compress_debug_sections_none.stdout > $@.tmp
|
|
mv -f $@.tmp $@
|
|
|
|
# The specialfile output has a tricky case when we also compress debug
|
|
# sections, because it requires output-file resizing.
|
|
check_PROGRAMS += flagstest_o_specialfile_and_compress_debug_sections
|
|
flagstest_o_specialfile_and_compress_debug_sections: flagstest_debug.o \
|
|
gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -o /dev/stdout $< -Wl,--compress-debug-sections=zlib 2>&1 | cat > $@
|
|
chmod a+x $@
|
|
test -s $@
|
|
|
|
check_SCRIPTS += pr18689.sh
|
|
check_DATA += pr18689.stdout
|
|
MOSTLYCLEANFILES += pr18689a.o pr18689b.o
|
|
|
|
pr18689.stdout: pr18689b.o
|
|
$(TEST_READELF) -SW $< > $@
|
|
|
|
pr18689a.o: pr18689.o ../ld-new
|
|
../ld-new -r -o $@ $<
|
|
|
|
pr18689b.o: pr18689a.o ../ld-new
|
|
../ld-new -r -o $@ $<
|
|
|
|
pr18689.o: pr18689.c gcctestdir/as
|
|
$(COMPILE) -Bgcctestdir/ -ggdb3 -g -Wa,--compress-debug-sections=zlib-gabi -c -w -o $@ $(srcdir)/pr18689.c
|
|
|
|
# Test -TText and -Tdata.
|
|
check_PROGRAMS += flagstest_o_ttext_1
|
|
flagstest_o_ttext_1: flagstest_debug.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -o $@ $< -Wl,-Ttext,0x400000 -Wl,-Tdata,0x800000
|
|
|
|
# This version won't be runnable, because there is no way to put the
|
|
# PT_PHDR segment at file offset 0. We just make sure that we can
|
|
# build it without error.
|
|
check_DATA += flagstest_o_ttext_2
|
|
MOSTLYCLEANFILES += flagstest_o_ttext_2
|
|
flagstest_o_ttext_2: flagstest_debug.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -o $@ $< -Wl,-Ttext,0x400010 -Wl,-Tdata,0x800010
|
|
|
|
# Test symbol versioning.
|
|
check_PROGRAMS += ver_test
|
|
ver_test_SOURCES = ver_test_main.cc
|
|
ver_test_DEPENDENCIES = gcctestdir/ld ver_test_1.so ver_test_2.so ver_test_4.so
|
|
ver_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
ver_test_LDADD = ver_test_1.so ver_test_2.so ver_test_4.so
|
|
ver_test_1.so: ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared ver_test_1.o ver_test_2.so ver_test_3.o ver_test_4.so
|
|
ver_test_2.so: ver_test_2.o $(srcdir)/ver_test_2.script ver_test_4.so gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_2.script -Wl,-R,. ver_test_2.o ver_test_4.so
|
|
ver_test_4.so: ver_test_4.o $(srcdir)/ver_test_4.script gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_4.script ver_test_4.o
|
|
ver_test_1.o: ver_test_1.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
ver_test_2.o: ver_test_2.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
ver_test_3.o: ver_test_3.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
ver_test_4.o: ver_test_4.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
|
|
check_SCRIPTS += ver_test_1.sh
|
|
check_DATA += ver_test_1.syms
|
|
ver_test_1.syms: ver_test_1.so
|
|
$(TEST_READELF) -s $< >$@ 2>/dev/null
|
|
|
|
check_PROGRAMS += ver_test_2
|
|
ver_test_2_SOURCES = ver_test_main_2.cc
|
|
ver_test_2_DEPENDENCIES = gcctestdir/ld ver_test_4.so ver_test_2.so
|
|
ver_test_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
ver_test_2_LDADD = ver_test_4.so ver_test_2.so
|
|
|
|
check_SCRIPTS += ver_test_2.sh
|
|
check_DATA += ver_test_2.syms
|
|
ver_test_2.syms: ver_test_2
|
|
$(TEST_READELF) -s $< >$@ 2>/dev/null
|
|
|
|
check_SCRIPTS += ver_test_4.sh
|
|
check_DATA += ver_test_4.syms
|
|
ver_test_4.syms: ver_test_4.so
|
|
$(TEST_READELF) -s $< >$@ 2>/dev/null
|
|
|
|
ver_test_5.so: ver_test_5.o $(srcdir)/ver_test_5.script ver_test_4.so gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_5.script ver_test_5.o ver_test_4.so
|
|
ver_test_5.o: ver_test_5.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
check_SCRIPTS += ver_test_5.sh
|
|
check_DATA += ver_test_5.syms
|
|
ver_test_5.syms: ver_test_5.so
|
|
$(TEST_READELF) -s $< >$@ 2>/dev/null
|
|
|
|
check_PROGRAMS += ver_test_6
|
|
ver_test_6_SOURCES = ver_test_6.c
|
|
ver_test_6_DEPENDENCIES = gcctestdir/ld ver_test_2.so
|
|
ver_test_6_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
ver_test_6_LDADD = ver_test_2.so
|
|
|
|
ver_test_7.so: ver_test_4.o $(srcdir)/ver_test_4.script ver_test_7.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_4.script ver_test_4.o ver_test_7.o
|
|
ver_test_7.o: ver_test_7.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
check_SCRIPTS += ver_test_7.sh
|
|
check_DATA += ver_test_7.syms
|
|
ver_test_7.syms: ver_test_7.so
|
|
$(TEST_READELF) -s $< >$@ 2>/dev/null
|
|
|
|
check_PROGRAMS += ver_test_8
|
|
ver_test_8_SOURCES = two_file_test_main.cc
|
|
ver_test_8_DEPENDENCIES = gcctestdir/ld ver_test_8_1.so ver_test_8_2.so
|
|
ver_test_8_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
ver_test_8_LDADD = ver_test_8_1.so ver_test_8_2.so
|
|
ver_test_8_1.so: two_file_test_1_pic.o two_file_test_1b_pic.o ver_test_8_2.so gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared two_file_test_1_pic.o two_file_test_1b_pic.o ver_test_8_2.so
|
|
ver_test_8_2.so: two_file_test_2_pic.o $(srcdir)/ver_test_8.script gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_8.script two_file_test_2_pic.o
|
|
|
|
check_SCRIPTS += ver_test_8.sh
|
|
check_DATA += ver_test_8_2.so.syms
|
|
ver_test_8_2.so.syms: ver_test_8_2.so
|
|
$(TEST_READELF) -s $< >$@ 2>/dev/null
|
|
|
|
check_PROGRAMS += ver_test_9
|
|
ver_test_9_SOURCES = ver_test_main.cc
|
|
ver_test_9_DEPENDENCIES = gcctestdir/ld ver_test_9.so
|
|
ver_test_9_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
ver_test_9_LDADD = ver_test_9.so
|
|
ver_test_9.so: ver_test_9.o ver_test_4.so ver_test_5.so gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared -Wl,-R,. ver_test_9.o ver_test_5.so ver_test_4.so
|
|
ver_test_9.o: ver_test_9.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
|
|
check_SCRIPTS += ver_test_10.sh
|
|
check_DATA += ver_test_10.syms
|
|
ver_test_10.syms: ver_test_10.so
|
|
$(TEST_READELF) -s $< >$@ 2>/dev/null
|
|
ver_test_10.so: gcctestdir/ld ver_test_2.o ver_test_10.script
|
|
$(CXXLINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_10.script ver_test_2.o
|
|
|
|
check_PROGRAMS += ver_test_11
|
|
MOSTLYCLEANFILES += ver_test_11.a
|
|
ver_test_11_SOURCES = ver_test_main_2.cc
|
|
ver_test_11_DEPENDENCIES = gcctestdir/ld ver_test_11.a
|
|
ver_test_11_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
ver_test_11_LDADD = ver_test_11.a
|
|
ver_test_11.a: ver_test_1.o ver_test_2.o ver_test_4.o
|
|
$(TEST_AR) rc $@ $^
|
|
|
|
check_PROGRAMS += ver_test_12
|
|
ver_test_12_SOURCES = ver_test_main_2.cc
|
|
ver_test_12_DEPENDENCIES = gcctestdir/ld ver_test_12.o
|
|
ver_test_12_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
ver_test_12_LDADD = ver_test_12.o
|
|
ver_test_12.o: gcctestdir/ld ver_test_1.o ver_test_2.o ver_test_4.o
|
|
gcctestdir/ld -r -o $@ ver_test_1.o ver_test_2.o ver_test_4.o
|
|
|
|
check_SCRIPTS += ver_test_13.sh
|
|
check_DATA += ver_test_13.syms
|
|
ver_test_13.syms: ver_test_13.so
|
|
$(TEST_READELF) -s $< >$@ 2>/dev/null
|
|
ver_test_13.so: gcctestdir/ld ver_test_13.o ver_test_13.script
|
|
$(LINK) -Bgcctestdir/ -shared -Wl,--version-script,$(srcdir)/ver_test_13.script ver_test_13.o
|
|
ver_test_13.o: ver_test_13.c
|
|
$(COMPILE) -c -fpic -o $@ $<
|
|
|
|
check_SCRIPTS += ver_test_14.sh
|
|
check_DATA += ver_test_14.syms
|
|
ver_test_14.syms: ver_test_14
|
|
$(TEST_OBJDUMP) -T $< | $(TEST_CXXFILT) >$@
|
|
ver_test_14: gcctestdir/ld ver_test_main.o ver_test_1.so ver_test_2.so ver_test_4.so ver_test_14.script
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--version-script,$(srcdir)/ver_test_14.script -Wl,-E -Wl,-R,. ver_test_main.o ver_test_1.so ver_test_2.so ver_test_4.so
|
|
|
|
check_SCRIPTS += ver_test_pr23409.sh
|
|
check_DATA += ver_test_pr23409.syms
|
|
ver_test_pr23409.syms: ver_test_pr23409_1.so
|
|
$(TEST_READELF) --dyn-syms -W $< >$@
|
|
ver_test_pr23409_1.so: gcctestdir/ld ver_test_1.o $(srcdir)/ver_test_pr23409_1.script ver_test_pr23409_2.so
|
|
gcctestdir/ld -shared -o $@ ver_test_1.o ver_test_pr23409_2.so --version-script $(srcdir)/ver_test_pr23409_1.script
|
|
ver_test_pr23409_2.so: gcctestdir/ld ver_test_1.o $(srcdir)/ver_test_pr23409_2.script
|
|
gcctestdir/ld -shared -o $@ ver_test_1.o --version-script $(srcdir)/ver_test_pr23409_2.script
|
|
|
|
check_SCRIPTS += weak_as_needed.sh
|
|
check_DATA += weak_as_needed.stdout
|
|
weak_as_needed.stdout: weak_as_needed_a.so
|
|
$(TEST_READELF) -dW --dyn-syms $< >$@
|
|
weak_as_needed_a.so: gcctestdir/ld weak_as_needed_a.o weak_as_needed_b.so weak_as_needed_c.so
|
|
gcctestdir/ld -shared -rpath . -o $@ weak_as_needed_a.o --as-needed weak_as_needed_b.so weak_as_needed_c.so
|
|
weak_as_needed_b.so: gcctestdir/ld weak_as_needed_b.o weak_as_needed_b.script
|
|
gcctestdir/ld -shared -rpath . -o $@ --version-script $(srcdir)/weak_as_needed_b.script weak_as_needed_b.o
|
|
weak_as_needed_c.so: gcctestdir/ld weak_as_needed_c.o weak_as_needed_c.script
|
|
gcctestdir/ld -shared -rpath . -o $@ --version-script $(srcdir)/weak_as_needed_c.script weak_as_needed_c.o
|
|
weak_as_needed_a.o: weak_as_needed_a.c
|
|
$(COMPILE) -c -fpic -o $@ $<
|
|
weak_as_needed_b.o: weak_as_needed_b.c
|
|
$(COMPILE) -c -fpic -o $@ $<
|
|
weak_as_needed_c.o: weak_as_needed_c.c
|
|
$(COMPILE) -c -fpic -o $@ $<
|
|
|
|
check_PROGRAMS += protected_1
|
|
protected_1_SOURCES = \
|
|
protected_main_1.cc protected_main_2.cc protected_main_3.cc
|
|
protected_1_DEPENDENCIES = gcctestdir/ld protected_1.so
|
|
protected_1_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
protected_1_LDADD = protected_1.so
|
|
|
|
protected_1.so: gcctestdir/ld protected_1_pic.o protected_2_pic.o protected_3_pic.o
|
|
$(CXXLINK) -Bgcctestdir/ -shared protected_1_pic.o protected_2_pic.o protected_3_pic.o
|
|
protected_1_pic.o: protected_1.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
protected_2_pic.o: protected_2.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
protected_3_pic.o: protected_3.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
|
|
check_PROGRAMS += protected_2
|
|
protected_2_SOURCES = protected_main_1.cc protected_3.cc
|
|
protected_2_DEPENDENCIES = gcctestdir/ld protected_1.so
|
|
protected_2_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
protected_2_LDADD = protected_1.so
|
|
|
|
check_DATA += protected_3.err
|
|
MOSTLYCLEANFILES += protected_3.err
|
|
protected_4_pic.o: protected_4.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
protected_3.err: protected_4_pic.o gcctestdir/ld
|
|
@echo $(CXXLINK) -Bgcctestdir/ -shared -o protected_4.so protected_4_pic.o "2>$@"
|
|
@if $(CXXLINK) -Bgcctestdir/ -shared -o protected_4.so protected_4_pic.o 2>$@; then \
|
|
echo 1>&2 "Link of protected_4.so should have failed"; \
|
|
rm -f $@; \
|
|
exit 1; \
|
|
fi
|
|
|
|
check_PROGRAMS += relro_test
|
|
check_SCRIPTS += relro_test.sh
|
|
check_DATA += relro_test.stdout
|
|
relro_test_SOURCES = relro_test_main.cc
|
|
relro_test_DEPENDENCIES = gcctestdir/ld relro_test.so
|
|
relro_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
relro_test_LDADD = relro_test.so
|
|
relro_test.so: gcctestdir/ld relro_test_pic.o
|
|
$(CXXLINK) -Bgcctestdir/ -shared -Wl,-z,relro relro_test_pic.o
|
|
relro_test_pic.o: relro_test.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
relro_test.stdout: relro_test.so
|
|
$(TEST_READELF) -SlW relro_test.so > relro_test.stdout
|
|
|
|
check_PROGRAMS += relro_now_test
|
|
relro_now_test_SOURCES = relro_test_main.cc
|
|
relro_now_test_DEPENDENCIES = gcctestdir/ld relro_now_test.so
|
|
relro_now_test_LDFLAGS = -Bgcctestdir -Wl,-R,. -Wl,-z,relro -Wl,-z,now
|
|
relro_now_test_LDADD = relro_now_test.so
|
|
relro_now_test.so: gcctestdir/ld relro_test_pic.o
|
|
$(CXXLINK) -Bgcctestdir/ -shared -Wl,-z,relro -Wl,-z,now relro_test_pic.o
|
|
|
|
check_PROGRAMS += relro_strip_test
|
|
relro_strip_test_SOURCES = relro_test_main.cc
|
|
relro_strip_test_DEPENDENCIES = gcctestdir/ld relro_strip_test.so
|
|
relro_strip_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
relro_strip_test_LDADD = relro_strip_test.so
|
|
relro_strip_test.so: relro_test.so
|
|
$(TEST_STRIP) -o $@ $<
|
|
|
|
check_PROGRAMS += relro_script_test
|
|
relro_script_test_SOURCES = relro_test_main.cc
|
|
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 -Wl,-T,$(srcdir)/relro_script_test.t relro_test_pic.o
|
|
|
|
check_PROGRAMS += script_test_1
|
|
script_test_1_SOURCES = script_test_1a.cc script_test_1b.cc
|
|
script_test_1_DEPENDENCIES = gcctestdir/ld 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,. -Wl,-T,$(srcdir)/script_test_2.t
|
|
script_test_2_LDADD =
|
|
|
|
check_PROGRAMS += justsyms
|
|
justsyms_SOURCES = justsyms_1.cc
|
|
justsyms_DEPENDENCIES = gcctestdir/ld justsyms_2r.o
|
|
justsyms_LDFLAGS = -Bgcctestdir/ -Wl,-R,justsyms_2r.o
|
|
justsyms_LDADD =
|
|
justsyms_2.o: justsyms_2.cc
|
|
$(CXXCOMPILE) -c -o $@ $<
|
|
justsyms_2r.o: justsyms_2.o gcctestdir/ld $(srcdir)/justsyms.t
|
|
gcctestdir/ld -o $@ -r -T $(srcdir)/justsyms.t justsyms_2.o
|
|
|
|
check_PROGRAMS += justsyms_exec
|
|
justsyms_exec_SOURCES = justsyms_exec.c
|
|
justsyms_exec_DEPENDENCIES = gcctestdir/ld justsyms_lib
|
|
justsyms_exec_LDFLAGS = -Bgcctestdir/ -Wl,-R,justsyms_lib
|
|
justsyms_exec_LDADD =
|
|
MOSTLYCLEANFILES += justsyms_lib
|
|
justsyms_lib.o: justsyms_lib.c
|
|
$(COMPILE) -c -o $@ $<
|
|
justsyms_lib: justsyms_lib.o gcctestdir/ld
|
|
gcctestdir/ld -o $@ -Ttext=0x1000200 -Tdata=0x2000000 -e exported_func justsyms_lib.o
|
|
|
|
check_PROGRAMS += binary_test
|
|
MOSTLYCLEANFILES += binary.txt
|
|
binary_test_SOURCES = binary_test.cc
|
|
binary_test_DEPENDENCIES = gcctestdir/ld binary.txt
|
|
binary_test_LDFLAGS = -Bgcctestdir/ -Wl,--format,binary,binary.txt,--format,elf
|
|
binary_test_LDADD =
|
|
# Copy the file to the build directory to avoid worrying about the
|
|
# full pathname in the generated symbols.
|
|
binary.txt: $(srcdir)/binary.in
|
|
rm -f $@
|
|
$(LN_S) $< $@
|
|
|
|
check_SCRIPTS += ver_matching_test.sh
|
|
check_DATA += ver_matching_test.stdout
|
|
MOSTLYCLEANFILES += ver_matching_test.stdout
|
|
ver_matching_def.so: ver_matching_def_pic.o $(srcdir)/version_script.map gcctestdir/ld
|
|
$(CXXLINK) -O0 -Bgcctestdir/ -shared ver_matching_def_pic.o -Wl,--version-script=$(srcdir)/version_script.map
|
|
ver_matching_def_pic.o: ver_matching_def.cc
|
|
$(CXXCOMPILE) -O0 -c -fpic -o $@ $<
|
|
ver_matching_test.stdout: ver_matching_def.so
|
|
$(TEST_OBJDUMP) -T ver_matching_def.so | $(TEST_CXXFILT) > ver_matching_test.stdout
|
|
|
|
check_PROGRAMS += script_test_3
|
|
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 -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) -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 -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) -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 -Wl,-T,$(srcdir)/script_test_5.t
|
|
script_test_5.stdout: script_test_5
|
|
$(TEST_READELF) -SW script_test_5 > script_test_5.stdout
|
|
|
|
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 -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
|
|
|
|
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 -Wl,-T,$(srcdir)/script_test_7.t
|
|
script_test_7.stdout: script_test_7
|
|
$(TEST_READELF) -SlW script_test_7 > script_test_7.stdout
|
|
|
|
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 -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
|
|
|
|
check_SCRIPTS += script_test_9.sh
|
|
check_DATA += script_test_9.stdout
|
|
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 -Wl,-T,$(srcdir)/script_test_9.t
|
|
script_test_9.stdout: script_test_9
|
|
$(TEST_READELF) -lW script_test_9 > script_test_9.stdout
|
|
|
|
# Test scripts with a relocatable link.
|
|
# The -g option is necessary to trigger a bug where a section
|
|
# declared in a script file is assigned a non-zero starting address.
|
|
check_PROGRAMS += script_test_11
|
|
script_test_11: gcctestdir/ld script_test_11_r.o
|
|
$(LINK) -Bgcctestdir/ script_test_11_r.o
|
|
script_test_11_r.o: gcctestdir/ld $(srcdir)/script_test_11.t script_test_11a.o script_test_11b.o
|
|
gcctestdir/ld -r -o $@ -T $(srcdir)/script_test_11.t script_test_11a.o script_test_11b.o
|
|
script_test_11a.o: script_test_11a.c
|
|
$(COMPILE) -c -g -o $@ $<
|
|
script_test_11b.o: script_test_11b.c
|
|
$(COMPILE) -c -g -o $@ $<
|
|
|
|
# Test difference between "*(a b)" and "*(a) *(b)" in input section spec.
|
|
check_PROGRAMS += script_test_12
|
|
script_test_12: gcctestdir/ld $(srcdir)/script_test_12.t script_test_12a.o script_test_12b.o
|
|
$(LINK) -Bgcctestdir/ -Wl,-T,$(srcdir)/script_test_12.t script_test_12a.o script_test_12b.o
|
|
|
|
check_PROGRAMS += script_test_12i
|
|
script_test_12i: gcctestdir/ld $(srcdir)/script_test_12i.t script_test_12a.o script_test_12b.o
|
|
$(LINK) -Bgcctestdir/ -Wl,-T,$(srcdir)/script_test_12i.t script_test_12a.o script_test_12b.o
|
|
script_test_12a.o: script_test_12a.c
|
|
$(COMPILE) -O0 -c -o $@ $<
|
|
script_test_12b.o: script_test_12b.c
|
|
$(COMPILE) -O0 -c -o $@ $<
|
|
|
|
# Test for ordering internally created sections with a linker script.
|
|
check_SCRIPTS += script_test_13.sh
|
|
check_DATA += script_test_13.stdout
|
|
MOSTLYCLEANFILES += script_test_13
|
|
script_test_13.o: script_test_13.c
|
|
$(COMPILE) -O0 -c -fPIC -o $@ $<
|
|
script_test_13: $(srcdir)/script_test_13.t script_test_13.o gcctestdir/ld
|
|
gcctestdir/ld -shared -o $@ script_test_13.o -T $(srcdir)/script_test_13.t
|
|
script_test_13.stdout: script_test_13
|
|
$(TEST_READELF) -SW script_test_13 > $@
|
|
|
|
# Test for SORT_BY_INIT_PRIORITY.
|
|
check_SCRIPTS += script_test_14.sh
|
|
check_DATA += script_test_14.stdout
|
|
MOSTLYCLEANFILES += script_test_14
|
|
script_test_14.o: script_test_14.s
|
|
$(TEST_AS) -o $@ $<
|
|
script_test_14: $(srcdir)/script_test_14.t script_test_14.o gcctestdir/ld
|
|
gcctestdir/ld -o $@ script_test_14.o -T $(srcdir)/script_test_14.t
|
|
script_test_14.stdout: script_test_14
|
|
$(TEST_OBJDUMP) -s script_test_14 > $@
|
|
|
|
# Test BSS section placement at end of segment.
|
|
check_SCRIPTS += script_test_15a.sh
|
|
check_DATA += script_test_15a.stdout
|
|
MOSTLYCLEANFILES += script_test_15a
|
|
script_test_15a: $(srcdir)/script_test_15a.t script_test_15.o gcctestdir/ld
|
|
gcctestdir/ld -o $@ script_test_15.o -T $(srcdir)/script_test_15a.t
|
|
script_test_15a.stdout: script_test_15a
|
|
$(TEST_READELF) -lSW script_test_15a > $@
|
|
|
|
# Test BSS section placement in middle of segment.
|
|
check_SCRIPTS += script_test_15b.sh
|
|
check_DATA += script_test_15b.stdout
|
|
MOSTLYCLEANFILES += script_test_15b
|
|
script_test_15b: $(srcdir)/script_test_15b.t script_test_15.o gcctestdir/ld
|
|
gcctestdir/ld -o $@ script_test_15.o -T $(srcdir)/script_test_15b.t
|
|
script_test_15b.stdout: script_test_15b
|
|
$(TEST_READELF) -lSW script_test_15b > $@
|
|
|
|
# Test orphan BSS section placement.
|
|
check_SCRIPTS += script_test_15c.sh
|
|
check_DATA += script_test_15c.stdout
|
|
MOSTLYCLEANFILES += script_test_15c
|
|
script_test_15c: $(srcdir)/script_test_15c.t script_test_15.o gcctestdir/ld
|
|
gcctestdir/ld -o $@ script_test_15.o -T $(srcdir)/script_test_15c.t
|
|
script_test_15c.stdout: script_test_15c
|
|
$(TEST_READELF) -lSW script_test_15c > $@
|
|
|
|
# Test --dynamic-list, --dynamic-list-data, --dynamic-list-cpp-new,
|
|
# and --dynamic-list-cpp-typeinfo
|
|
|
|
check_SCRIPTS += dynamic_list.sh
|
|
check_DATA += dynamic_list.stdout
|
|
MOSTLYCLEANFILES += dynamic_list dynamic_list.stdout
|
|
dynamic_list: basic_test.o gcctestdir/ld $(srcdir)/dynamic_list.t
|
|
$(CXXLINK) -Bgcctestdir/ basic_test.o \
|
|
-Wl,--dynamic-list $(srcdir)/dynamic_list.t \
|
|
-Wl,--dynamic-list-data \
|
|
-Wl,--dynamic-list-cpp-new \
|
|
-Wl,--dynamic-list-cpp-typeinfo
|
|
dynamic_list.stdout: dynamic_list
|
|
$(TEST_READELF) -W --dyn-syms dynamic_list > dynamic_list.stdout
|
|
|
|
check_PROGRAMS += dynamic_list_2
|
|
dynamic_list_2_SOURCES = dynamic_list_2.cc
|
|
dynamic_list_2_DEPENDENCIES = gcctestdir/ld dynamic_list_lib1.so dynamic_list_lib2.so
|
|
dynamic_list_2_LDFLAGS = -Bgcctestdir/ -L. -Wl,-R,. -Wl,--no-as-needed
|
|
dynamic_list_2_LDADD = dynamic_list_lib1.so dynamic_list_lib2.so
|
|
|
|
dynamic_list_lib1.so: gcctestdir/ld dynamic_list_lib1.o
|
|
$(CXXLINK) -Bgcctestdir/ -shared dynamic_list_lib1.o
|
|
dynamic_list_lib1.o: dynamic_list_lib1.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
|
|
dynamic_list_lib2.so: gcctestdir/ld dynamic_list_lib2.o $(srcdir)/dynamic_list_2.t
|
|
$(CXXLINK) -Bgcctestdir/ -shared -Wl,-Bsymbolic-functions -Wl,--dynamic-list,$(srcdir)/dynamic_list_2.t dynamic_list_lib2.o
|
|
dynamic_list_lib2.o: dynamic_list_lib2.cc
|
|
$(CXXCOMPILE) -c -fpic -o $@ $<
|
|
|
|
check_PROGRAMS += thin_archive_test_1
|
|
MOSTLYCLEANFILES += libthin1.a libthin3.a libthinall.a \
|
|
alt/thin_archive_test_2.o alt/thin_archive_test_4.o \
|
|
alt/libthin2.a alt/libthin4.a
|
|
thin_archive_test_1_SOURCES = thin_archive_main.cc
|
|
thin_archive_test_1_DEPENDENCIES = gcctestdir/ld libthin1.a alt/libthin2.a
|
|
thin_archive_test_1_LDFLAGS = -Bgcctestdir/ -Lalt
|
|
thin_archive_test_1_LDADD = libthin1.a -lthin2
|
|
|
|
check_PROGRAMS += thin_archive_test_2
|
|
thin_archive_test_2_SOURCES = thin_archive_main.cc
|
|
thin_archive_test_2_DEPENDENCIES = gcctestdir/ld libthinall.a
|
|
thin_archive_test_2_LDFLAGS = -Bgcctestdir/ -L.
|
|
thin_archive_test_2_LDADD = -lthinall
|
|
|
|
libthin1.a: thin_archive_test_1.o alt/thin_archive_test_2.o
|
|
rm -f $@
|
|
$(TEST_AR) crT $@ $^
|
|
alt/libthin2.a: thin_archive_test_3.o alt/thin_archive_test_4.o
|
|
rm -f $@
|
|
$(TEST_AR) crT $@ $^
|
|
libthin3.a: thin_archive_test_1.o alt/thin_archive_test_4.o
|
|
rm -f $@
|
|
$(TEST_AR) crT $@ $^
|
|
alt/libthin4.a: alt/thin_archive_test_2.o thin_archive_test_3.o
|
|
rm -f $@
|
|
$(TEST_AR) crT $@ $^
|
|
libthinall.a: libthin3.a alt/libthin4.a
|
|
rm -f $@
|
|
$(TEST_AR) crT $@ $^
|
|
alt/thin_archive_test_2.o: thin_archive_test_2.cc
|
|
test -d alt || mkdir -p alt
|
|
$(CXXCOMPILE) -c -o $@ $<
|
|
alt/thin_archive_test_4.o: thin_archive_test_4.cc
|
|
test -d alt || mkdir -p alt
|
|
$(CXXCOMPILE) -c -o $@ $<
|
|
|
|
if PLUGINS
|
|
|
|
check_PROGRAMS += plugin_test_1
|
|
check_SCRIPTS += plugin_test_1.sh
|
|
check_DATA += plugin_test_1.err
|
|
MOSTLYCLEANFILES += plugin_test_1.err
|
|
plugin_test_1: two_file_test_main.o two_file_test_1.o.syms two_file_test_1b.o.syms two_file_test_2.o.syms empty.o.syms gcctestdir/ld plugin_test.so
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--emit-relocs,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_main.o two_file_test_1.o.syms two_file_test_1b.o.syms two_file_test_2.o.syms empty.o.syms 2>plugin_test_1.err
|
|
plugin_test_1.err: plugin_test_1
|
|
@touch plugin_test_1.err
|
|
|
|
check_PROGRAMS += plugin_test_2
|
|
check_SCRIPTS += plugin_test_2.sh
|
|
check_DATA += plugin_test_2.err
|
|
MOSTLYCLEANFILES += plugin_test_2.err
|
|
plugin_test_2: two_file_test_main.o two_file_test_1.o.syms two_file_test_1b.o.syms two_file_shared_2.so gcctestdir/ld plugin_test.so
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,-R,.,--plugin,"./plugin_test.so" two_file_test_main.o two_file_test_1.o.syms two_file_test_1b.o.syms two_file_shared_2.so 2>plugin_test_2.err
|
|
plugin_test_2.err: plugin_test_2
|
|
@touch plugin_test_2.err
|
|
|
|
check_PROGRAMS += plugin_test_3
|
|
check_SCRIPTS += plugin_test_3.sh
|
|
check_DATA += plugin_test_3.err
|
|
MOSTLYCLEANFILES += plugin_test_3.err
|
|
plugin_test_3: two_file_test_main.o two_file_test_1.o.syms two_file_test_1b.o.syms two_file_test_2.o.syms empty.o.syms gcctestdir/ld plugin_test.so
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--export-dynamic -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_main.o two_file_test_1.o.syms two_file_test_1b.o.syms two_file_test_2.o.syms empty.o.syms 2>plugin_test_3.err
|
|
plugin_test_3.err: plugin_test_3
|
|
@touch plugin_test_3.err
|
|
|
|
check_PROGRAMS += plugin_test_4
|
|
check_SCRIPTS += plugin_test_4.sh
|
|
check_DATA += plugin_test_4.err
|
|
MOSTLYCLEANFILES += plugin_test_4.a plugin_test_4.err
|
|
plugin_test_4: two_file_test_main.o plugin_test_4.a gcctestdir/ld plugin_test.so
|
|
$(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
|
|
plugin_test_4.err: plugin_test_4
|
|
@touch plugin_test_4.err
|
|
|
|
plugin_test_4.a: two_file_test_1.o.syms two_file_test_1b.o.syms two_file_test_2.o.syms
|
|
$(TEST_AR) cr $@ $^
|
|
|
|
check_PROGRAMS += plugin_test_5
|
|
plugin_test_5: two_file_test_main.o two_file_test_1.o.syms two_file_test_1b.o.syms two_file_test_2.o.syms unused.o.syms gcctestdir/ld plugin_test.so
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv",--gc-sections two_file_test_main.o two_file_test_1.o.syms two_file_test_1b.o.syms two_file_test_2.o.syms unused.o.syms
|
|
|
|
check_PROGRAMS += plugin_test_6
|
|
check_SCRIPTS += plugin_test_6.sh
|
|
check_DATA += plugin_test_6.err
|
|
MOSTLYCLEANFILES += plugin_test_6.err
|
|
plugin_test_6: plugin_common_test_1.o.syms plugin_common_test_2.o.syms gcctestdir/ld plugin_test.so
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so" plugin_common_test_1.o.syms plugin_common_test_2.o.syms 2>plugin_test_6.err
|
|
plugin_test_6.err: plugin_test_6
|
|
@touch plugin_test_6.err
|
|
|
|
check_PROGRAMS += plugin_test_7
|
|
check_SCRIPTS += plugin_test_7.sh
|
|
check_DATA += plugin_test_7.err plugin_test_7.o.syms
|
|
MOSTLYCLEANFILES += plugin_test_7.err
|
|
plugin_test_7: plugin_test_7_1.o plugin_test_7_1.o.syms plugin_test_7_2.o gcctestdir/ld plugin_test.so
|
|
$(LINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--gc-sections,--print-gc-sections plugin_test_7_1.o.syms plugin_test_7_2.o 2>plugin_test_7.err
|
|
plugin_test_7.o.syms: plugin_test_7
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
plugin_test_7_1.o: plugin_test_7_1.c
|
|
$(COMPILE) -DLTO -O0 -c -ffunction-sections -fdata-sections -o $@ $<
|
|
plugin_test_7_1_orig.o: plugin_test_7_1.c
|
|
$(COMPILE) -O0 -c -ffunction-sections -fdata-sections -o $@ $<
|
|
plugin_test_7_1.o.syms: plugin_test_7_1_orig.o
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
plugin_test_7_2.o: plugin_test_7_2.c
|
|
$(COMPILE) -O0 -c -ffunction-sections -fdata-sections -o $@ $<
|
|
plugin_test_7.err: plugin_test_7
|
|
|
|
# Test plugins with -r.
|
|
check_PROGRAMS += plugin_test_8
|
|
plugin_test_8.o: two_file_test_main.o two_file_test_1.o.syms two_file_test_1b.o.syms two_file_test_2.o ../ld-new plugin_test.so
|
|
../ld-new -r -o $@ --no-demangle --plugin "./plugin_test.so" two_file_test_main.o two_file_test_1.o.syms two_file_test_1b.o.syms two_file_test_2.o
|
|
plugin_test_8: plugin_test_8.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle plugin_test_8.o
|
|
|
|
# Test that symbols known in the IR file but not in the replacement file
|
|
# produce an unresolved symbol error.
|
|
check_DATA += plugin_test_9.err
|
|
MOSTLYCLEANFILES += plugin_test_9.err
|
|
plugin_test_9.err: two_file_test_main.o two_file_test_1c.o.syms two_file_test_2.o.syms gcctestdir/ld plugin_test.so
|
|
@echo $(CXXLINK) -Bgcctestdir/ -o plugin_test_9 -Wl,--no-demangle,--plugin,"./plugin_test.so" two_file_test_main.o two_file_test_1c.o.syms two_file_test_2.o.syms "2>$@"
|
|
@if $(CXXLINK) -Bgcctestdir/ -o plugin_test_9 -Wl,--no-demangle,--plugin,"./plugin_test.so" two_file_test_main.o two_file_test_1c.o.syms two_file_test_2.o.syms 2>$@; then \
|
|
echo 1>&2 "Link of plugin_test_9 should have failed"; \
|
|
rm -f $@; \
|
|
exit 1; \
|
|
fi
|
|
# Make a .syms file that claims to define the symbol _Z4t16av.
|
|
two_file_test_1c.o.syms: two_file_test_1.o.syms two_file_test_1c.o
|
|
cp two_file_test_1.o.syms $@.tmp
|
|
grep "_Z4t16av" two_file_test_1b.o.syms >> $@.tmp
|
|
mv -f $@.tmp $@
|
|
# Make a copy of two_file_test_1.o, which does not define the symbol _Z4t16av.
|
|
MOSTLYCLEANFILES += two_file_test_1c.o
|
|
two_file_test_1c.o: two_file_test_1.o
|
|
cp two_file_test_1.o $@
|
|
|
|
# As above, but check COMDAT case, where a non-IR file contains a duplicate
|
|
# of a COMDAT group in an IR file.
|
|
check_DATA += plugin_test_9b.err
|
|
MOSTLYCLEANFILES += plugin_test_9b.err
|
|
plugin_test_9b.err: plugin_test_9b_ir.o.syms plugin_test_9b_ir.o plugin_test_9b_elf.o gcctestdir/ld plugin_test.so
|
|
@echo $(CXXLINK) -Bgcctestdir/ -o plugin_test_9b -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_ZN1A5printEv" plugin_test_9b_ir.o plugin_test_9b_elf.o "2>$@"
|
|
@if $(CXXLINK) -Bgcctestdir/ -o plugin_test_9b -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_ZN1A5printEv" plugin_test_9b_ir.o plugin_test_9b_elf.o 2>$@; then \
|
|
echo 1>&2 "Link of plugin_test_9b should have failed"; \
|
|
rm -f $@; \
|
|
exit 1; \
|
|
fi
|
|
# Make a .syms file that claims to define a method in class A in a COMDAT group.
|
|
# The real plugin_test_9b_ir.o will be compiled without the -D, and will not
|
|
# define any methods in class A.
|
|
plugin_test_9b_ir.o.syms: plugin_test_9b_ir_witha.o
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
plugin_test_9b_ir_witha.o: plugin_test_9b_ir.cc
|
|
$(CXXCOMPILE) -c -DUSE_CLASS_A -o $@ $<
|
|
|
|
check_PROGRAMS += plugin_test_10
|
|
check_SCRIPTS += plugin_test_10.sh
|
|
check_DATA += plugin_test_10.sections
|
|
MOSTLYCLEANFILES += plugin_test_10.sections
|
|
plugin_test_10: plugin_common_test_1.o.syms plugin_common_test_2.o gcctestdir/ld plugin_test.so
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so" plugin_common_test_1.o.syms plugin_common_test_2.o
|
|
plugin_test_10.sections: plugin_test_10
|
|
$(TEST_READELF) -SW $< >$@ 2>/dev/null
|
|
|
|
check_PROGRAMS += plugin_test_11
|
|
check_SCRIPTS += plugin_test_11.sh
|
|
check_DATA += plugin_test_11.err
|
|
MOSTLYCLEANFILES += plugin_test_11.err plugin_test_thin.a
|
|
PLUGIN_TEST_11_SYMS = two_file_test_1.o.syms two_file_test_1b.o.syms two_file_test_2.o.syms
|
|
plugin_test_11: two_file_test_main.o plugin_test_thin.a gcctestdir/ld plugin_test.so $(PLUGIN_TEST_11_SYMS)
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z4f13iv" two_file_test_main.o plugin_test_thin.a 2>plugin_test_11.err
|
|
plugin_test_11.err: plugin_test_11
|
|
@touch plugin_test_11.err
|
|
plugin_test_thin.a: two_file_test_1.o two_file_test_1b.o two_file_test_2.o
|
|
rm -f $@
|
|
$(TEST_AR) crT $@ $^
|
|
|
|
check_PROGRAMS += plugin_test_12
|
|
check_SCRIPTS += plugin_test_12.sh
|
|
check_DATA += plugin_test_12.err
|
|
MOSTLYCLEANFILES += plugin_test_12.err
|
|
export_dynamic_plugin.o.syms: export_dynamic_plugin.o
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
export_dynamic_plugin.o: export_dynamic_plugin.cc
|
|
$(COMPILE) -c -o $@ $<
|
|
plugin_test_12: export_dynamic_plugin.o gcctestdir/ld plugin_test.so export_dynamic_plugin.o.syms
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so",--plugin-opt,"_Z3foov" -Wl,--export-dynamic-symbol,"_Z3foov" export_dynamic_plugin.o.syms 2>plugin_test_12.err
|
|
plugin_test_12.err: plugin_test_12
|
|
@touch plugin_test_12.err
|
|
|
|
check_PROGRAMS += plugin_test_wrap_symbols
|
|
check_SCRIPTS += plugin_test_wrap_symbols.sh
|
|
check_DATA += plugin_test_wrap_symbols.err
|
|
MOSTLYCLEANFILES += plugin_test_wrap_symbols.err
|
|
plugin_test_wrap_symbols_1.o: plugin_test_wrap_symbols_1.cc
|
|
$(COMPILE) -c -o $@ $<
|
|
plugin_test_wrap_symbols_2.o: plugin_test_wrap_symbols_2.cc
|
|
$(COMPILE) -c -o $@ $<
|
|
plugin_test_wrap_symbols: plugin_test_wrap_symbols_1.o plugin_test_wrap_symbols_2.o gcctestdir/ld plugin_test.so
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--plugin,"./plugin_test.so" -Wl,--wrap=hello,--wrap=jello plugin_test_wrap_symbols_1.o plugin_test_wrap_symbols_2.o 2>plugin_test_wrap_symbols.err
|
|
plugin_test_wrap_symbols.err: plugin_test_wrap_symbols
|
|
@touch plugin_test_wrap_symbols.err
|
|
|
|
check_PROGRAMS += plugin_test_start_lib
|
|
check_SCRIPTS += plugin_test_start_lib.sh
|
|
check_DATA += plugin_test_start_lib.err
|
|
MOSTLYCLEANFILES += plugin_test_start_lib.err
|
|
plugin_test_start_lib: unused.o plugin_start_lib_test.o plugin_start_lib_test_2.syms gcctestdir/ld plugin_test.so
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so" plugin_start_lib_test.o \
|
|
-Wl,--start-lib plugin_start_lib_test_2.syms -Wl,--end-lib 2>plugin_test_start_lib.err
|
|
plugin_test_start_lib.err: plugin_test_start_lib
|
|
@touch plugin_test_start_lib.err
|
|
|
|
check_PROGRAMS += plugin_test_defsym
|
|
check_SCRIPTS += plugin_test_defsym.sh
|
|
check_DATA += plugin_test_defsym.err
|
|
MOSTLYCLEANFILES += plugin_test_defsym.err
|
|
plugin_test_defsym.syms: plugin_test_defsym.o
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
plugin_test_defsym.o: plugin_test_defsym.c
|
|
$(COMPILE) -c -o $@ $<
|
|
plugin_test_defsym: plugin_test_defsym.o plugin_test_defsym.syms gcctestdir/ld plugin_test.so
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--no-demangle,--plugin,"./plugin_test.so" -Wl,--defsym,bar=foo plugin_test_defsym.syms 2>plugin_test_defsym.err
|
|
plugin_test_defsym.err: plugin_test_defsym
|
|
@touch plugin_test_defsym.err
|
|
|
|
plugin_start_lib_test_2.syms: plugin_start_lib_test_2.o
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
|
|
plugin_test.so: plugin_test.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -shared plugin_test.o
|
|
plugin_test.o: plugin_test.c
|
|
$(COMPILE) -O0 -c -fpic -o $@ $<
|
|
|
|
two_file_test_main.o.syms: two_file_test_main.o
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
two_file_test_1.o.syms: two_file_test_1.o
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
two_file_test_1b.o.syms: two_file_test_1b.o
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
two_file_test_2.o.syms: two_file_test_2.o
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
plugin_common_test_1.o.syms: plugin_common_test_1.o
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
plugin_common_test_2.o.syms: plugin_common_test_2.o
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
|
|
empty.o.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.o.syms two_file_test_1b.o.syms two_file_test_2_tls.o.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.o.syms two_file_test_1b.o.syms two_file_test_2_tls.o.syms 2>plugin_test_tls.err
|
|
plugin_test_tls.err: plugin_test_tls
|
|
@touch plugin_test_tls.err
|
|
|
|
two_file_test_2_tls.o.syms: two_file_test_2_tls.o
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
|
|
endif TLS
|
|
|
|
MOSTLYCLEANFILES += unused.c
|
|
unused.o.syms: unused.o
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
@echo " 1: 00000000 4 FUNC GLOBAL DEFAULT 1 UNUSED" >>$@
|
|
unused.o: unused.c
|
|
$(COMPILE) -c -o $@ $<
|
|
unused.c:
|
|
@cp /dev/null $@
|
|
|
|
check_SCRIPTS += plugin_final_layout.sh
|
|
check_DATA += plugin_final_layout.stdout plugin_final_layout_readelf.stdout
|
|
MOSTLYCLEANFILES += plugin_final_layout
|
|
plugin_final_layout.o: plugin_final_layout.cc
|
|
$(CXXCOMPILE) -O0 -c -ffunction-sections -fdata-sections -g -o $@ $<
|
|
plugin_final_layout: plugin_final_layout.o plugin_section_order.so gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--plugin,"./plugin_section_order.so" plugin_final_layout.o
|
|
plugin_final_layout.stdout: plugin_final_layout
|
|
$(TEST_NM) -n --synthetic plugin_final_layout > plugin_final_layout.stdout
|
|
plugin_final_layout_readelf.stdout: plugin_final_layout
|
|
$(TEST_READELF) -Wl plugin_final_layout > plugin_final_layout_readelf.stdout
|
|
|
|
plugin_section_order.so: plugin_section_order.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -shared plugin_section_order.o
|
|
plugin_section_order.o: plugin_section_order.c
|
|
$(COMPILE) -O0 -c -fpic -o $@ $<
|
|
|
|
# Uses the plugin_final_layout.sh script above to avoid duplication
|
|
check_DATA += plugin_layout_new_file.stdout plugin_layout_new_file_readelf.stdout
|
|
MOSTLYCLEANFILES += plugin_layout_new_file
|
|
plugin_final_layout.o.syms: plugin_final_layout.o
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
plugin_layout_new_file: plugin_final_layout.o.syms plugin_test.so plugin_new_section_layout.so gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--plugin,"./plugin_test.so" -Wl,--plugin,"./plugin_new_section_layout.so" plugin_final_layout.o.syms
|
|
plugin_layout_new_file.stdout: plugin_layout_new_file
|
|
$(TEST_NM) -n --synthetic plugin_layout_new_file > plugin_layout_new_file.stdout
|
|
plugin_layout_new_file_readelf.stdout: plugin_layout_new_file
|
|
$(TEST_READELF) -Wl plugin_layout_new_file > plugin_layout_new_file_readelf.stdout
|
|
|
|
plugin_new_section_layout.so: plugin_new_section_layout.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -shared plugin_new_section_layout.o
|
|
plugin_new_section_layout.o: plugin_new_section_layout.c
|
|
$(COMPILE) -O0 -c -fpic -o $@ $<
|
|
|
|
check_SCRIPTS += plugin_layout_with_alignment.sh
|
|
check_DATA += plugin_layout_with_alignment.stdout
|
|
MOSTLYCLEANFILES += plugin_layout_with_alignment
|
|
plugin_layout_with_alignment.o: plugin_layout_with_alignment.c
|
|
$(COMPILE) -O0 -c -ffunction-sections -fdata-sections -g -o $@ $<
|
|
plugin_layout_with_alignment: plugin_layout_with_alignment.o plugin_section_alignment.so gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -Wl,--plugin,"./plugin_section_alignment.so" plugin_layout_with_alignment.o
|
|
plugin_layout_with_alignment.stdout: plugin_layout_with_alignment
|
|
$(TEST_NM) -n --synthetic plugin_layout_with_alignment > plugin_layout_with_alignment.stdout
|
|
|
|
plugin_section_alignment.so: plugin_section_alignment.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -shared plugin_section_alignment.o
|
|
plugin_section_alignment.o: plugin_section_alignment.cc
|
|
$(CXXCOMPILE) -O0 -c -fpic -o $@ $<
|
|
|
|
check_SCRIPTS += plugin_pr22868.sh
|
|
check_DATA += plugin_pr22868.stdout
|
|
MOSTLYCLEANFILES += plugin_pr22868.stdout
|
|
plugin_pr22868.stdout: plugin_pr22868.so
|
|
$(TEST_READELF) -W --dyn-syms $< >$@ 2>/dev/null
|
|
plugin_pr22868.so: plugin_pr22868_a.o.syms plugin_pr22868_b.o.syms plugin_pr22868_b.o plugin_test.so gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -shared -Wl,--plugin,"./plugin_test.so" plugin_pr22868_a.o.syms plugin_pr22868_b.o.syms
|
|
plugin_pr22868_a.o.syms: plugin_pr22868_a.o
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
# Generate the .syms file from an alternate version of the original source
|
|
# file, with a "protected" visibility attribute. We'll link with a
|
|
# "replacement" object that does not have that attribute.
|
|
plugin_pr22868_b.o.syms: plugin_pr22868_b_ir.o
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
plugin_pr22868_a.o: plugin_pr22868_a.c
|
|
$(COMPILE) -c -fpic -o $@ $<
|
|
plugin_pr22868_b_ir.o: plugin_pr22868_b.c
|
|
$(COMPILE) -c -DIR -fpic -o $@ $<
|
|
plugin_pr22868_b.o: plugin_pr22868_b.c
|
|
$(COMPILE) -c -fpic -o $@ $<
|
|
|
|
check_SCRIPTS += ver_test_pr16504.sh
|
|
check_DATA += ver_test_pr16504.stdout
|
|
ver_test_pr16504.stdout: ver_test_pr16504.so
|
|
$(TEST_READELF) -W --dyn-syms $< >$@ 2>/dev/null
|
|
ver_test_pr16504.so: ver_test_pr16504_a.so ver_test_pr16504_b.o.syms ver_test_pr16504_b.script gcctestdir/ld
|
|
gcctestdir/ld -shared -o $@ --plugin ./plugin_test.so --version-script $(srcdir)/ver_test_pr16504_b.script ver_test_pr16504_b.o.syms ver_test_pr16504_a.so
|
|
ver_test_pr16504_a.so: ver_test_pr16504_a.o ver_test_pr16504_a.script gcctestdir/ld
|
|
gcctestdir/ld -shared -o $@ --version-script $(srcdir)/ver_test_pr16504_a.script ver_test_pr16504_a.o
|
|
ver_test_pr16504_a.o: ver_test_pr16504_a.c
|
|
$(COMPILE) -c -fpic -o $@ $<
|
|
# Filter out the UNDEFs from the symbols file to simulate GCC behavior,
|
|
# which does not pass the UNDEF from a .symver directive.
|
|
ver_test_pr16504_b.o.syms: ver_test_pr16504_b.o
|
|
$(TEST_READELF) -sW $< 2>/dev/null | grep -v "UND" >$@
|
|
ver_test_pr16504_b.o: ver_test_pr16504_b.c
|
|
$(COMPILE) -c -fpic -o $@ $<
|
|
|
|
endif PLUGINS
|
|
|
|
check_PROGRAMS += exclude_libs_test
|
|
check_SCRIPTS += exclude_libs_test.sh
|
|
check_DATA += exclude_libs_test.syms
|
|
MOSTLYCLEANFILES += exclude_libs_test.syms libexclude_libs_test_1.a \
|
|
libexclude_libs_test_2.a alt/libexclude_libs_test_3.a
|
|
exclude_libs_test_SOURCES = exclude_libs_test.c
|
|
exclude_libs_test_DEPENDENCIES = gcctestdir/ld libexclude_libs_test_1.a \
|
|
libexclude_libs_test_2.a alt/libexclude_libs_test_3.a
|
|
exclude_libs_test_LDFLAGS = -Bgcctestdir/ -L. -Lalt \
|
|
-Wl,--exclude-libs,dummy:libexclude_libs_test_1 \
|
|
-Wl,--exclude-libs,libexclude_libs_test_3
|
|
exclude_libs_test_LDADD = -lexclude_libs_test_1 -lexclude_libs_test_2 \
|
|
alt/libexclude_libs_test_3.a
|
|
exclude_libs_test.syms: exclude_libs_test
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
libexclude_libs_test_1.a: exclude_libs_test_1.o
|
|
$(TEST_AR) rc $@ $^
|
|
libexclude_libs_test_2.a: exclude_libs_test_2.o
|
|
$(TEST_AR) rc $@ $^
|
|
alt/libexclude_libs_test_3.a: exclude_libs_test_3.o
|
|
test -d alt || mkdir -p alt
|
|
$(TEST_AR) rc $@ $^
|
|
|
|
check_PROGRAMS += local_labels_test
|
|
local_labels_test.o: ver_test_6.c
|
|
$(COMPILE) -g -c -Wa,-L -o $@ $<
|
|
local_labels_test: local_labels_test.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ local_labels_test.o
|
|
|
|
check_PROGRAMS += discard_locals_test
|
|
check_SCRIPTS += discard_locals_test.sh
|
|
check_DATA += discard_locals_test.syms \
|
|
discard_locals_relocatable_test1.syms \
|
|
discard_locals_relocatable_test2.syms
|
|
MOSTLYCLEANFILES += discard_locals_test.syms \
|
|
discard_locals_relocatable_test1.syms \
|
|
discard_locals_relocatable_test2.syms \
|
|
discard_locals_relocatable_test1.out \
|
|
discard_locals_relocatable_test2.out
|
|
discard_locals_test_SOURCES = discard_locals_test.c
|
|
discard_locals_test_LDFLAGS = -Bgcctestdir/ -Wl,--discard-locals
|
|
discard_locals_test.syms: discard_locals_test
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
# '-Wa,-L' is required to preserve the local label used for testing.
|
|
discard_locals_test.o: discard_locals_test.c
|
|
$(COMPILE) -c -Wa,-L -o $@ $<
|
|
|
|
discard_locals_relocatable_test1.syms: discard_locals_relocatable_test1.out
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
discard_locals_relocatable_test.o: discard_locals_relocatable_test.c
|
|
$(COMPILE) -c -Wa,-L -fPIC -o $@ $<
|
|
discard_locals_relocatable_test1.out: discard_locals_relocatable_test.o ../ld-new
|
|
../ld-new --discard-locals -relocatable -o $@ $<
|
|
|
|
discard_locals_relocatable_test2.syms: discard_locals_relocatable_test2.out
|
|
$(TEST_READELF) -sW $< >$@ 2>/dev/null
|
|
discard_locals_relocatable_test2.out: discard_locals_relocatable_test.o ../ld-new
|
|
../ld-new --discard-all -relocatable -o $@ $<
|
|
|
|
if MCMODEL_MEDIUM
|
|
check_PROGRAMS += large
|
|
large_SOURCES = large.c
|
|
large_CFLAGS = -mcmodel=medium
|
|
large_DEPENDENCIES = gcctestdir/ld
|
|
large_LDFLAGS = -Bgcctestdir/
|
|
large_LDADD =
|
|
endif MCMODEL_MEDIUM
|
|
|
|
# Test that hidden and internal symbols in the main program cannot be
|
|
# referenced by a shared library.
|
|
check_SCRIPTS += hidden_test.sh
|
|
check_DATA += hidden_test.err
|
|
MOSTLYCLEANFILES += hidden_test hidden_test.err hidden_test.syms
|
|
libhidden.so: hidden_test_1.c gcctestdir/ld
|
|
$(COMPILE) -Bgcctestdir/ -g -shared -fPIC -w -o $@ $(srcdir)/hidden_test_1.c
|
|
hidden_test: hidden_test_main.o libhidden.so gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -Wl,-R,. hidden_test_main.o libhidden.so 2>hidden_test.err
|
|
hidden_test.syms: hidden_test
|
|
$(TEST_NM) -D hidden_test > $@
|
|
hidden_test.err: hidden_test
|
|
@touch hidden_test.err
|
|
|
|
# Test -retain-symbols-file.
|
|
check_SCRIPTS += retain_symbols_file_test.sh
|
|
check_DATA += retain_symbols_file_test.stdout
|
|
MOSTLYCLEANFILES += retain_symbols_file_test retain_symbols_file_test.in \
|
|
retain_symbols_file_test.stdout
|
|
retain_symbols_file_test.so: basic_pic_test.o gcctestdir/ld
|
|
echo 'main' > retain_symbols_file_test.in
|
|
echo 't1' >> 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
|
|
$(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 > $@
|
|
|
|
|
|
# Test that if the output file already exists and is empty,
|
|
# it will get execute permission.
|
|
check_PROGRAMS += permission_test
|
|
permission_test: basic_test.o gcctestdir/ld
|
|
umask 022; \
|
|
rm -f $@; \
|
|
touch $@; \
|
|
chmod 600 $@; \
|
|
$(CXXLINK) -Bgcctestdir/ basic_test.o
|
|
|
|
# Check -l:foo.a
|
|
check_PROGRAMS += searched_file_test
|
|
MOSTLYCLEANFILES += searched_file_test searched_file_test_lib.o \
|
|
alt/searched_file_test_lib.a
|
|
searched_file_test_SOURCES = searched_file_test.cc
|
|
searched_file_test_DEPENDENCIES = gcctestdir/ld alt/searched_file_test_lib.a
|
|
searched_file_test_LDFLAGS = -Bgcctestdir/ -Lalt
|
|
searched_file_test_LDADD = -l:searched_file_test_lib.a
|
|
searched_file_test_lib.o: searched_file_test_lib.cc
|
|
$(CXXCOMPILE) -c -o $@ $<
|
|
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
|
|
# symbol versioning is not used.
|
|
check_SCRIPTS += no_version_test.sh
|
|
check_DATA += no_version_test.stdout
|
|
MOSTLYCLEANFILES += libno_version_test.so no_version_test.stdout
|
|
# We invoke the linker directly since gcc may include additional objects that
|
|
# uses symbol versioning.
|
|
libno_version_test.so: no_version_test.o gcctestdir/ld
|
|
gcctestdir/ld -shared -o $@ no_version_test.o
|
|
no_version_test.o: no_version_test.c
|
|
$(COMPILE) -o $@ -c -fPIC $<
|
|
no_version_test.stdout: libno_version_test.so
|
|
$(TEST_OBJDUMP) -h $< > $@
|
|
|
|
# Test STT_GNU_IFUNC symbols.
|
|
if IFUNC
|
|
|
|
ifuncmod1.o: ifuncmod1.c
|
|
$(COMPILE) -c -fPIC -o $@ $<
|
|
ifuncmod1.so: ifuncmod1.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -shared ifuncmod1.o
|
|
|
|
ifuncdep1.o: ifuncmod1.c
|
|
$(COMPILE) -c -o $@ $<
|
|
|
|
ifuncmain1pic.o: ifuncmain1.c
|
|
$(COMPILE) -c -fPIC -o $@ $<
|
|
ifuncmain1pie.o: ifuncmain1.c
|
|
$(COMPILE) -c -fPIE -o $@ $<
|
|
|
|
if HAVE_STATIC
|
|
if IFUNC_STATIC
|
|
check_PROGRAMS += ifuncmain1static
|
|
ifuncmain1static_SOURCES = ifuncmain1.c
|
|
ifuncmain1static_DEPENDENCIES = gcctestdir/ld ifuncdep1.o
|
|
ifuncmain1static_LDFLAGS = -Bgcctestdir/ -static
|
|
ifuncmain1static_LDADD = ifuncdep1.o
|
|
|
|
check_PROGRAMS += ifuncmain1picstatic
|
|
ifuncmain1picstatic: ifuncmain1pic.o ifuncmod1.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -static ifuncmain1pic.o ifuncmod1.o
|
|
|
|
check_SCRIPTS += ifuncmod1.sh
|
|
check_DATA += ifuncmod1.so.stderr
|
|
ifuncmod1.so.stderr: ifuncmod1.so
|
|
$(TEST_READELF) -s $< > /dev/null 2> $@
|
|
endif
|
|
endif
|
|
|
|
check_PROGRAMS += ifuncmain1
|
|
ifuncmain1_SOURCES = ifuncmain1.c
|
|
ifuncmain1_DEPENDENCIES = gcctestdir/ld ifuncmod1.so
|
|
ifuncmain1_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
ifuncmain1_LDADD = ifuncmod1.so
|
|
|
|
check_PROGRAMS += ifuncmain1pic
|
|
ifuncmain1pic: ifuncmain1pic.o ifuncmod1.so gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ ifuncmain1pic.o ifuncmod1.so -Wl,-R,.
|
|
|
|
check_PROGRAMS += ifuncmain1vis
|
|
ifuncmain1vis_SOURCES = ifuncmain1vis.c
|
|
ifuncmain1vis_DEPENDENCIES = gcctestdir/ld ifuncmod1.so
|
|
ifuncmain1vis_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
ifuncmain1vis_LDADD = ifuncmod1.so
|
|
|
|
check_PROGRAMS += ifuncmain1vispic
|
|
ifuncmain1vispic.o: ifuncmain1vis.c
|
|
$(COMPILE) -c -fPIC -o $@ $<
|
|
ifuncmain1vispic: ifuncmain1vispic.o ifuncmod1.so gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ ifuncmain1pic.o ifuncmod1.so -Wl,-R,.
|
|
|
|
check_PROGRAMS += ifuncmain1staticpic
|
|
ifuncmain1staticpic: ifuncmain1pic.o ifuncmod1.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ ifuncmain1pic.o ifuncmod1.o
|
|
|
|
check_PROGRAMS += ifuncmain1pie
|
|
ifuncmain1pie: ifuncmain1pie.o ifuncmod1.so gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -pie ifuncmain1pie.o ifuncmod1.so -Wl,-R,.
|
|
|
|
check_PROGRAMS += ifuncmain1vispie
|
|
ifuncmain1vispie.o: ifuncmain1vis.c
|
|
$(COMPILE) -c -fPIE -o $@ $<
|
|
ifuncmain1vispie: ifuncmain1vispie.o ifuncmod1.so gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -pie ifuncmain1vispie.o ifuncmod1.so -Wl,-R,.
|
|
|
|
check_PROGRAMS += ifuncmain1staticpie
|
|
ifuncmain1staticpie: ifuncmain1pie.o ifuncmod1.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -pie ifuncmain1pie.o ifuncmod1.o
|
|
|
|
ifuncmain2pic.o: ifuncmain2.c
|
|
$(COMPILE) -c -fPIC -o $@ $<
|
|
|
|
ifuncdep2pic.o: ifuncdep2.c
|
|
$(COMPILE) -c -fPIC -o $@ $<
|
|
|
|
if HAVE_STATIC
|
|
if IFUNC_STATIC
|
|
check_PROGRAMS += ifuncmain2static
|
|
ifuncmain2static_SOURCES = ifuncmain2.c ifuncdep2.c
|
|
ifuncmain2static_DEPENDENCIES = gcctestdir/ld
|
|
ifuncmain2static_LDFLAGS = -Bgcctestdir/ -static
|
|
ifuncmain2static_LDADD =
|
|
|
|
check_PROGRAMS += ifuncmain2picstatic
|
|
ifuncmain2picstatic: ifuncmain2pic.o ifuncdep2pic.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -static ifuncmain2pic.o ifuncdep2pic.o
|
|
endif
|
|
endif
|
|
|
|
check_PROGRAMS += ifuncmain2
|
|
ifuncmain2_SOURCES = ifuncmain2.c ifuncdep2.c
|
|
ifuncmain2_DEPENDENCIES = gcctestdir/ld
|
|
ifuncmain2_LDFLAGS = -Bgcctestdir/
|
|
ifuncmain2_LDADD =
|
|
|
|
check_PROGRAMS += ifuncmain2pic
|
|
ifuncmain2pic: ifuncmain2pic.o ifuncdep2pic.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ ifuncmain2pic.o ifuncdep2pic.o
|
|
|
|
ifuncmod3.o: ifuncmod3.c
|
|
$(COMPILE) -c -fPIC -o $@ $<
|
|
ifuncmod3.so: ifuncmod3.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -shared ifuncmod3.o
|
|
|
|
check_PROGRAMS += ifuncmain3
|
|
ifuncmain3_SOURCES = ifuncmain3.c
|
|
ifuncmain3_DEPENDENCIES = gcctestdir/ld ifuncmod3.so
|
|
ifuncmain3_LDFLAGS = -Bgcctestdir/ -Wl,--export-dynamic -Wl,-R,.
|
|
ifuncmain3_LDADD = -ldl
|
|
|
|
ifuncmain4pic.o: ifuncmain4.c
|
|
$(COMPILE) -c -fPIC -o $@ $<
|
|
|
|
if HAVE_STATIC
|
|
if IFUNC_STATIC
|
|
check_PROGRAMS += ifuncmain4static
|
|
ifuncmain4static_SOURCES = ifuncmain4.c
|
|
ifuncmain4static_DEPENDENCIES = gcctestdir/ld
|
|
ifuncmain4static_LDFLAGS = -Bgcctestdir/ -static
|
|
ifuncmain4static_LDADD =
|
|
|
|
check_PROGRAMS += ifuncmain4picstatic
|
|
ifuncmain4picstatic: ifuncmain4pic.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -static ifuncmain4pic.o
|
|
endif
|
|
endif
|
|
|
|
check_PROGRAMS += ifuncmain4
|
|
ifuncmain4_SOURCES = ifuncmain4.c
|
|
ifuncmain4_DEPENDENCIES = gcctestdir/ld
|
|
ifuncmain4_LDFLAGS = -Bgcctestdir/
|
|
ifuncmain4_LDADD =
|
|
|
|
ifuncmain5pic.o: ifuncmain5.c
|
|
$(COMPILE) -c -fPIC -o $@ $<
|
|
|
|
ifuncmain5pie.o: ifuncmain5.c
|
|
$(COMPILE) -c -fPIE -o $@ $<
|
|
|
|
ifuncmod5.o: ifuncmod5.c
|
|
$(COMPILE) -c -fPIC -o $@ $<
|
|
ifuncmod5.so: ifuncmod5.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -shared ifuncmod5.o
|
|
|
|
ifuncdep5.o: ifuncmod5.c
|
|
$(COMPILE) -c -o $@ $<
|
|
|
|
if HAVE_STATIC
|
|
if IFUNC_STATIC
|
|
check_PROGRAMS += ifuncmain5static
|
|
ifuncmain5static_SOURCES = ifuncmain5.c
|
|
ifuncmain5static_DEPENDENCIES = gcctestdir/ld ifuncdep5.o
|
|
ifuncmain5static_LDFLAGS = -Bgcctestdir/ -static
|
|
ifuncmain5static_LDADD = ifuncdep5.o
|
|
|
|
check_PROGRAMS += ifuncmain5picstatic
|
|
ifuncmain5picstatic: ifuncmain5pic.o ifuncmod5.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -static ifuncmain5pic.o ifuncmod5.o
|
|
endif
|
|
endif
|
|
|
|
check_PROGRAMS += ifuncmain5
|
|
ifuncmain5_SOURCES = ifuncmain5.c
|
|
ifuncmain5_DEPENDENCIES = gcctestdir/ld ifuncmod5.so
|
|
ifuncmain5_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
ifuncmain5_LDADD = ifuncmod5.so
|
|
|
|
check_PROGRAMS += ifuncmain5pic
|
|
ifuncmain5pic: ifuncmain5pic.o ifuncmod5.so gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ ifuncmain5pic.o ifuncmod5.so -Wl,-R,.
|
|
|
|
check_PROGRAMS += ifuncmain5staticpic
|
|
ifuncmain5staticpic: ifuncmain5pic.o ifuncmod5.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ ifuncmain5pic.o ifuncmod5.o
|
|
|
|
check_PROGRAMS += ifuncmain5pie
|
|
ifuncmain5pie: ifuncmain5pie.o ifuncmod5.so gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -pie ifuncmain5pie.o ifuncmod5.so -Wl,-R,.
|
|
|
|
ifuncmain6pie.o: ifuncmain6pie.c
|
|
$(COMPILE) -c -fPIE -o $@ $<
|
|
|
|
ifuncmod6.o: ifuncmod6.c
|
|
$(COMPILE) -c -fPIC -o $@ $<
|
|
ifuncmod6.so: ifuncmod6.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -shared ifuncmod6.o
|
|
|
|
check_PROGRAMS += ifuncmain6pie
|
|
ifuncmain6pie: ifuncmain6pie.o ifuncmod6.so gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -pie ifuncmain6pie.o ifuncmod6.so -Wl,-R,.
|
|
|
|
ifuncmain7pic.o: ifuncmain7.c
|
|
$(COMPILE) -c -fPIC -o $@ $<
|
|
|
|
ifuncmain7pie.o: ifuncmain7.c
|
|
$(COMPILE) -c -fPIE -o $@ $<
|
|
|
|
if HAVE_STATIC
|
|
if IFUNC_STATIC
|
|
check_PROGRAMS += ifuncmain7static
|
|
ifuncmain7static_SOURCES = ifuncmain7.c
|
|
ifuncmain7static_DEPENDENCIES = gcctestdir/ld
|
|
ifuncmain7static_LDFLAGS = -Bgcctestdir/ -static
|
|
ifuncmain7static_LDADD =
|
|
|
|
check_PROGRAMS += ifuncmain7picstatic
|
|
ifuncmain7picstatic: ifuncmain7pic.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -static ifuncmain7pic.o
|
|
endif
|
|
endif
|
|
|
|
check_PROGRAMS += ifuncmain7
|
|
ifuncmain7_SOURCES = ifuncmain7.c
|
|
ifuncmain7_DEPENDENCIES = gcctestdir/ld
|
|
ifuncmain7_LDFLAGS = -Bgcctestdir/
|
|
ifuncmain7_LDADD =
|
|
|
|
check_PROGRAMS += ifuncmain7pic
|
|
ifuncmain7pic: ifuncmain7pic.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ ifuncmain7pic.o
|
|
|
|
check_PROGRAMS += ifuncmain7pie
|
|
ifuncmain7pie: ifuncmain7pie.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -pie ifuncmain7pie.o
|
|
|
|
check_PROGRAMS += ifuncvar
|
|
ifuncvar1_pic.o: ifuncvar1.c
|
|
$(COMPILE) -c -fPIC -o $@ $<
|
|
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
|
|
ifuncvar_SOURCES = ifuncvar3.c
|
|
ifuncvar_DEPENDENCIES = gcctestdir/ld ifuncvar.so
|
|
ifuncvar_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
|
ifuncvar_LDADD = ifuncvar.so
|
|
|
|
endif IFUNC
|
|
|
|
# Test that strong reference to a weak symbol in a DSO remains strong.
|
|
check_SCRIPTS += strong_ref_weak_def.sh
|
|
check_DATA += strong_ref_weak_def.stdout
|
|
MOSTLYCLEANFILES += strong_ref_weak_def_1.so strong_ref_weak_def_2.so \
|
|
strong_ref_weak_def.stdout
|
|
strong_ref_weak_def_2.o: strong_ref_weak_def_2.c
|
|
$(COMPILE) -o $@ -c -fPIC $<
|
|
strong_ref_weak_def_2.so: strong_ref_weak_def_2.o gcctestdir/ld
|
|
gcctestdir/ld -shared -o $@ strong_ref_weak_def_2.o
|
|
strong_ref_weak_def_1.o: strong_ref_weak_def_1.c
|
|
$(COMPILE) -o $@ -c -fPIC $<
|
|
strong_ref_weak_def_1.so: strong_ref_weak_def_1.o strong_ref_weak_def_2.so \
|
|
gcctestdir/ld
|
|
gcctestdir/ld -shared -o $@ strong_ref_weak_def_1.o \
|
|
strong_ref_weak_def_2.so
|
|
strong_ref_weak_def.stdout: strong_ref_weak_def_1.so
|
|
$(TEST_READELF) -sWD $< > $@
|
|
|
|
# Test that a strong weak reference remains strong if there is another
|
|
# weak reference in a DSO.
|
|
check_SCRIPTS += dyn_weak_ref.sh
|
|
check_DATA += dyn_weak_ref.stdout
|
|
MOSTLYCLEANFILES += dyn_weak_ref_1.so dyn_weak_ref_2.so \
|
|
dyn_weak_ref.stdout
|
|
dyn_weak_ref_2.o: dyn_weak_ref_2.c
|
|
$(COMPILE) -o $@ -c -fPIC $<
|
|
dyn_weak_ref_2.so: dyn_weak_ref_2.o gcctestdir/ld
|
|
gcctestdir/ld -shared -o $@ dyn_weak_ref_2.o
|
|
dyn_weak_ref_1.o: dyn_weak_ref_1.c
|
|
$(COMPILE) -o $@ -c -fPIC $<
|
|
# We intentionally put dyn_weak_ref_2.so in front of dyn_weak_ref_1.o
|
|
# so that the weak ref there goes to gold's symbol table first.
|
|
dyn_weak_ref_1.so: dyn_weak_ref_1.o dyn_weak_ref_2.so gcctestdir/ld
|
|
gcctestdir/ld -shared -o $@ dyn_weak_ref_2.so dyn_weak_ref_1.o
|
|
dyn_weak_ref.stdout: dyn_weak_ref_1.so
|
|
$(TEST_READELF) -sWD $< > $@
|
|
|
|
|
|
# Test that --start-lib and --end-lib function correctly.
|
|
check_PROGRAMS += start_lib_test
|
|
MOSTLYCLEANFILES += libstart_lib_test.a
|
|
start_lib_test: start_lib_test_main.o libstart_lib_test.a start_lib_test_2.o start_lib_test_3.o \
|
|
gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -o $@ start_lib_test_main.o -L. -lstart_lib_test \
|
|
-Wl,--start-lib start_lib_test_2.o start_lib_test_3.o -Wl,--end-lib
|
|
libstart_lib_test.a: start_lib_test_1.o
|
|
$(TEST_AR) rc $@ $^
|
|
|
|
# Test that MEMORY region support works.
|
|
check_SCRIPTS += memory_test.sh
|
|
check_DATA += memory_test.stdout
|
|
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 -Wl,-z,max-page-size=0x1000 -Wl,-z,common-page-size=0x1000 -Wl,-T,$(srcdir)/memory_test.t -o $@ memory_test.o
|
|
memory_test.stdout: memory_test
|
|
$(TEST_READELF) -lWS $< > $@
|
|
|
|
# Test INCLUDE directives in linker scripts.
|
|
# The binary isn't runnable, so we just check that we can build it without errors.
|
|
check_DATA += memory_test_2
|
|
MOSTLYCLEANFILES += memory_test_inc_1.t memory_test_inc_2.t memory_test_inc_3.t memory_test_2
|
|
memory_test_inc_1.t: $(srcdir)/memory_test_inc_1.t.src
|
|
cp $< $@
|
|
memory_test_inc_2.t: $(srcdir)/memory_test_inc_2.t.src
|
|
cp $< $@
|
|
memory_test_inc_3.t: $(srcdir)/memory_test_inc_3.t.src
|
|
cp $< $@
|
|
memory_test_2: memory_test.o gcctestdir/ld $(srcdir)/memory_test.t memory_test_inc_1.t memory_test_inc_2.t memory_test_inc_3.t
|
|
$(LINK) -Bgcctestdir/ -nostartfiles -nostdlib -Wl,-z,max-page-size=0x1000 -Wl,-z,common-page-size=0x1000 -Wl,-T,$(srcdir)/memory_test.t -o $@ memory_test.o
|
|
|
|
if HAVE_PUBNAMES
|
|
|
|
# Test that --gdb-index functions correctly without gcc-generated pubnames.
|
|
check_SCRIPTS += gdb_index_test_1.sh
|
|
check_DATA += gdb_index_test_1.stdout
|
|
MOSTLYCLEANFILES += gdb_index_test_1.stdout gdb_index_test_1
|
|
gdb_index_test.o: gdb_index_test.cc
|
|
$(CXXCOMPILE) -O0 -g -gno-pubnames -c -o $@ $<
|
|
gdb_index_test_1: gdb_index_test.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--gdb-index $<
|
|
gdb_index_test_1.stdout: gdb_index_test_1
|
|
$(TEST_READELF) --debug-dump=gdb_index $< > $@
|
|
|
|
# Test that --gdb-index functions correctly with compressed debug sections.
|
|
check_SCRIPTS += gdb_index_test_2.sh
|
|
check_DATA += gdb_index_test_2.stdout
|
|
MOSTLYCLEANFILES += gdb_index_test_2.stdout gdb_index_test_2 gdb_index_test_2_gabi
|
|
gdb_index_test_cdebug.o: gdb_index_test.cc
|
|
$(CXXCOMPILE) -Bgcctestdir/ -O0 -g -Wa,--compress-debug-sections -c -o $@ $<
|
|
gdb_index_test_2: gdb_index_test_cdebug.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--gdb-index $<
|
|
gdb_index_test_2.stdout: gdb_index_test_2
|
|
$(TEST_READELF) --debug-dump=gdb_index $< > $@
|
|
check_SCRIPTS += gdb_index_test_2_gabi.sh
|
|
check_DATA += gdb_index_test_2_gabi.stdout
|
|
MOSTLYCLEANFILES += gdb_index_test_2.stdout gdb_index_test_2
|
|
gdb_index_test_cdebug_gabi.o: gdb_index_test.cc
|
|
$(CXXCOMPILE) -Bgcctestdir/ -O0 -g -Wa,--compress-debug-sections=zlib-gabi -c -o $@ $<
|
|
gdb_index_test_2_gabi: gdb_index_test_cdebug_gabi.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--gdb-index $<
|
|
gdb_index_test_2_gabi.stdout: gdb_index_test_2_gabi
|
|
$(TEST_READELF) --debug-dump=gdb_index $< > $@
|
|
|
|
# Another simple C test (DW_AT_high_pc encoding) for --gdb-index.
|
|
check_SCRIPTS += gdb_index_test_3.sh
|
|
check_DATA += gdb_index_test_3.stdout
|
|
MOSTLYCLEANFILES += gdb_index_test_3.stdout gdb_index_test_3
|
|
gdb_index_test_3.o: gdb_index_test_3.c
|
|
$(COMPILE) -O0 -g -c -o $@ $<
|
|
gdb_index_test_3: gdb_index_test_3.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -Wl,--gdb-index,--fatal-warnings $<
|
|
gdb_index_test_3.stdout: gdb_index_test_3
|
|
$(TEST_READELF) --debug-dump=gdb_index $< > $@
|
|
|
|
# Test that --gdb-index functions correctly with gcc-generated pubnames.
|
|
check_SCRIPTS += gdb_index_test_4.sh
|
|
check_DATA += gdb_index_test_4.stdout
|
|
MOSTLYCLEANFILES += gdb_index_test_4.stdout gdb_index_test_4
|
|
gdb_index_test_pub.o: gdb_index_test.cc
|
|
$(CXXCOMPILE) -O0 -g -gpubnames -c -o $@ $<
|
|
gdb_index_test_4: gdb_index_test_pub.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,--gdb-index $<
|
|
gdb_index_test_4.stdout: gdb_index_test_4
|
|
$(TEST_READELF) --debug-dump=gdb_index $< > $@
|
|
|
|
endif HAVE_PUBNAMES
|
|
|
|
# Test that __ehdr_start is defined correctly.
|
|
check_PROGRAMS += ehdr_start_test_1
|
|
ehdr_start_test_1_SOURCES = ehdr_start_test.cc
|
|
ehdr_start_test_1_DEPENDENCIES = gcctestdir/ld
|
|
ehdr_start_test_1_CXXFLAGS =
|
|
ehdr_start_test_1_LDFLAGS = -Bgcctestdir/
|
|
ehdr_start_test_1_LDADD =
|
|
|
|
# Test that __ehdr_start is defined correctly with a weak reference.
|
|
check_PROGRAMS += ehdr_start_test_2
|
|
ehdr_start_test_2_SOURCES = ehdr_start_test.cc
|
|
ehdr_start_test_2_DEPENDENCIES = gcctestdir/ld
|
|
ehdr_start_test_2_CXXFLAGS = -DEHDR_START_WEAK
|
|
ehdr_start_test_2_LDFLAGS = -Bgcctestdir/
|
|
ehdr_start_test_2_LDADD =
|
|
|
|
# Test that __ehdr_start is defined correctly when used with a linker script.
|
|
check_PROGRAMS += ehdr_start_test_3
|
|
ehdr_start_test_3_SOURCES = ehdr_start_test.cc
|
|
ehdr_start_test_3_DEPENDENCIES = gcctestdir/ld $(srcdir)/ehdr_start_test.t
|
|
ehdr_start_test_3_CXXFLAGS = -DEHDR_START_WEAK
|
|
ehdr_start_test_3_LDFLAGS = -Bgcctestdir/ -Wl,-T,$(srcdir)/ehdr_start_test.t
|
|
ehdr_start_test_3_LDADD =
|
|
|
|
# Test that __ehdr_start is left undefined when the text segment is not
|
|
# appropriately aligned.
|
|
check_SCRIPTS += ehdr_start_test_4.sh
|
|
check_DATA += ehdr_start_test_4.syms
|
|
MOSTLYCLEANFILES += ehdr_start_test_4
|
|
ehdr_start_test_4.syms: ehdr_start_test_4
|
|
$(TEST_NM) ehdr_start_test_4 > $@
|
|
ehdr_start_test_4: ehdr_start_test_4.o gcctestdir/ld
|
|
$(CXXLINK) -Bgcctestdir/ -Wl,-Ttext=0x100100 $<
|
|
ehdr_start_test_4.o: ehdr_start_test.cc
|
|
$(CXXCOMPILE) -c -DEHDR_START_WEAK -o $@ $<
|
|
|
|
# Test that __ehdr_start is not overridden when supplied by the user.
|
|
check_PROGRAMS += ehdr_start_test_5
|
|
ehdr_start_test_5_SOURCES = ehdr_start_test.cc ehdr_start_def.cc
|
|
ehdr_start_test_5_DEPENDENCIES = gcctestdir/ld
|
|
ehdr_start_test_5_CXXFLAGS = -DEHDR_START_USER_DEF
|
|
ehdr_start_test_5_LDFLAGS = -Bgcctestdir/
|
|
ehdr_start_test_5_LDADD =
|
|
|
|
# Test that the --defsym option copies the symbol type and visibility.
|
|
check_SCRIPTS += defsym_test.sh
|
|
check_DATA += defsym_test.syms
|
|
MOSTLYCLEANFILES += defsym_test defsym_test.syms
|
|
defsym_test.syms: defsym_test
|
|
$(TEST_READELF) -sW $< > $@
|
|
defsym_test: defsym_test.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ -Wl,--defsym=bar=foo defsym_test.o
|
|
defsym_test.o: defsym_test.c
|
|
$(COMPILE) -c -o $@ $<
|
|
|
|
# Test that the -d option (force common allocation) works correctly.
|
|
check_PROGRAMS += pr20976
|
|
pr20976: pr20976-d.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ pr20976-d.o
|
|
pr20976-d.o: pr20976.o gcctestdir/ld
|
|
gcctestdir/ld -r -d -o $@ pr20976.o
|
|
|
|
# End-to-end incremental linking tests.
|
|
# Incremental linking is currently supported only on the x86_64 target.
|
|
|
|
if DEFAULT_TARGET_X86_64
|
|
|
|
two_file_test_1_v1_ndebug.o: two_file_test_1_v1.cc
|
|
$(CXXCOMPILE) -O0 -g0 -fno-exceptions -fno-asynchronous-unwind-tables -c -o $@ $<
|
|
two_file_test_1_ndebug.o: two_file_test_1.cc
|
|
$(CXXCOMPILE) -O0 -g0 -fno-exceptions -fno-asynchronous-unwind-tables -c -o $@ $<
|
|
two_file_test_1b_ndebug.o: two_file_test_1b.cc
|
|
$(CXXCOMPILE) -O0 -g0 -c -o $@ $<
|
|
two_file_test_2_ndebug.o: two_file_test_2.cc
|
|
$(CXXCOMPILE) -O0 -g0 -c -o $@ $<
|
|
two_file_test_main_ndebug.o: two_file_test_main.cc
|
|
$(CXXCOMPILE) -O0 -g0 -c -o $@ $<
|
|
|
|
check_PROGRAMS += incremental_test_2
|
|
MOSTLYCLEANFILES += two_file_test_tmp_2.o
|
|
incremental_test_2: two_file_test_1_v1_ndebug.o two_file_test_1_ndebug.o two_file_test_1b_ndebug.o \
|
|
two_file_test_2_ndebug.o two_file_test_main_ndebug.o gcctestdir/ld
|
|
cp -f two_file_test_1_v1_ndebug.o two_file_test_tmp_2.o
|
|
$(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_tmp_2.o two_file_test_1b_ndebug.o two_file_test_2_ndebug.o two_file_test_main_ndebug.o
|
|
@sleep 1
|
|
cp -f two_file_test_1_ndebug.o two_file_test_tmp_2.o
|
|
$(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_tmp_2.o two_file_test_1b_ndebug.o two_file_test_2_ndebug.o two_file_test_main_ndebug.o
|
|
|
|
check_PROGRAMS += incremental_test_3
|
|
MOSTLYCLEANFILES += two_file_test_tmp_3.o
|
|
incremental_test_3: two_file_test_1.o two_file_test_1b_v1.o two_file_test_1b.o \
|
|
two_file_test_2.o two_file_test_main.o gcctestdir/ld
|
|
cp -f two_file_test_1b_v1.o two_file_test_tmp_3.o
|
|
$(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_1.o two_file_test_tmp_3.o two_file_test_2.o two_file_test_main.o
|
|
@sleep 1
|
|
cp -f two_file_test_1b.o two_file_test_tmp_3.o
|
|
$(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_1.o two_file_test_tmp_3.o two_file_test_2.o two_file_test_main.o
|
|
|
|
check_PROGRAMS += incremental_test_4
|
|
MOSTLYCLEANFILES += incremental_test_4.base two_file_test_tmp_4.o
|
|
incremental_test_4: two_file_test_1.o two_file_test_1b.o two_file_test_2_v1.o \
|
|
two_file_test_2.o two_file_test_main.o gcctestdir/ld
|
|
cp -f two_file_test_2_v1.o two_file_test_tmp_4.o
|
|
$(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_1.o two_file_test_1b.o two_file_test_tmp_4.o two_file_test_main.o
|
|
mv -f incremental_test_4 incremental_test_4.base
|
|
@sleep 1
|
|
cp -f two_file_test_2.o two_file_test_tmp_4.o
|
|
$(CXXLINK) -Wl,--incremental-update,--incremental-base=incremental_test_4.base -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_1.o two_file_test_1b.o two_file_test_tmp_4.o two_file_test_main.o
|
|
|
|
check_PROGRAMS += incremental_test_5
|
|
MOSTLYCLEANFILES += two_file_test_5.a
|
|
incremental_test_5: two_file_test_1.o two_file_test_1b_v1.o two_file_test_1b.o \
|
|
two_file_test_2.o two_file_test_main.o gcctestdir/ld
|
|
cp -f two_file_test_1b_v1.o two_file_test_tmp_5.o
|
|
$(TEST_AR) rc two_file_test_5.a two_file_test_1.o two_file_test_tmp_5.o two_file_test_2.o
|
|
$(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_main.o two_file_test_5.a
|
|
@sleep 1
|
|
cp -f two_file_test_1b.o two_file_test_tmp_5.o
|
|
$(TEST_AR) rc two_file_test_5.a two_file_test_1.o two_file_test_tmp_5.o two_file_test_2.o
|
|
$(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_main.o two_file_test_5.a
|
|
|
|
# Test the --incremental-unchanged flag with an archive library.
|
|
# The second link should not update the library.
|
|
check_PROGRAMS += incremental_test_6
|
|
MOSTLYCLEANFILES += two_file_test_6.a
|
|
incremental_test_6: two_file_test_1.o two_file_test_1b_v1.o two_file_test_1b.o \
|
|
two_file_test_2.o two_file_test_main.o gcctestdir/ld
|
|
cp -f two_file_test_1b.o two_file_test_tmp_6.o
|
|
$(TEST_AR) rc two_file_test_6.a two_file_test_1.o two_file_test_tmp_6.o two_file_test_2.o
|
|
$(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_main.o two_file_test_6.a
|
|
@sleep 1
|
|
cp -f two_file_test_1b_v1.o two_file_test_tmp_6.o
|
|
$(TEST_AR) rc two_file_test_6.a two_file_test_1.o two_file_test_tmp_6.o two_file_test_2.o
|
|
$(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ two_file_test_main.o -Wl,--incremental-unchanged two_file_test_6.a -Wl,--incremental-unknown
|
|
|
|
check_PROGRAMS += incremental_copy_test
|
|
incremental_copy_test: copy_test_v1.o copy_test.o copy_test_1.so copy_test_2.so
|
|
cp -f copy_test_v1.o copy_test_tmp.o
|
|
$(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ -Wl,-R,. -Wl,--no-as-needed copy_test_tmp.o copy_test_1.so copy_test_2.so
|
|
@sleep 1
|
|
cp -f copy_test.o copy_test_tmp.o
|
|
$(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ -Wl,-R,. -Wl,--no-as-needed copy_test_tmp.o copy_test_1.so copy_test_2.so
|
|
|
|
check_PROGRAMS += incremental_common_test_1
|
|
incremental_common_test_1: common_test_1_v1.o common_test_1_v2.o gcctestdir/ld
|
|
cp -f common_test_1_v1.o common_test_1_tmp.o
|
|
$(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ common_test_1_tmp.o
|
|
@sleep 1
|
|
cp -f common_test_1_v2.o common_test_1_tmp.o
|
|
$(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ common_test_1_tmp.o
|
|
|
|
check_PROGRAMS += incremental_comdat_test_1
|
|
incremental_comdat_test_1: incr_comdat_test_1.o incr_comdat_test_2_v1.o incr_comdat_test_2_v2.o incr_comdat_test_2_v3.o gcctestdir/ld
|
|
cp -f incr_comdat_test_2_v1.o incr_comdat_test_1_tmp.o
|
|
$(CXXLINK) -Wl,--incremental-full,--incremental-patch=100 -Wl,-z,norelro,-no-pie -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o
|
|
@sleep 1
|
|
cp -f incr_comdat_test_2_v2.o incr_comdat_test_1_tmp.o
|
|
$(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o
|
|
@sleep 1
|
|
cp -f incr_comdat_test_2_v3.o incr_comdat_test_1_tmp.o
|
|
$(CXXLINK) -Wl,--incremental-update -Wl,-z,norelro,-no-pie -Bgcctestdir/ incr_comdat_test_1.o incr_comdat_test_1_tmp.o
|
|
|
|
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 = gcctestdir/ld exception_x86_64_bnd_1.o exception_x86_64_bnd_2.o
|
|
exception_x86_64_bnd_test_LDFLAGS = $(exception_test_LDFLAGS) -Wl,-z,bndplt
|
|
exception_x86_64_bnd_test_LDADD = exception_x86_64_bnd_1.o exception_x86_64_bnd_2.o
|
|
exception_x86_64_bnd_1.o: exception_test_1.cc gcctestdir/as
|
|
$(CXXCOMPILE) -c -fpic -Bgcctestdir/ -Wa,-madd-bnd-prefix -o $@ $<
|
|
exception_x86_64_bnd_2.o: exception_test_2.cc gcctestdir/as
|
|
$(CXXCOMPILE) -c -Bgcctestdir/ -Wa,-madd-bnd-prefix -o $@ $<
|
|
endif DEFAULT_TARGET_X86_64
|
|
|
|
if DEFAULT_TARGET_X86_64
|
|
check_SCRIPTS += gnu_property_test.sh
|
|
check_DATA += gnu_property_test.stdout
|
|
gnu_property_test.stdout: gnu_property_test
|
|
$(TEST_READELF) -n $< >$@
|
|
gnu_property_test: gcctestdir/ld gnu_property_a.o gnu_property_b.o gnu_property_c.o
|
|
gcctestdir/ld -o $@ gnu_property_a.o gnu_property_b.o gnu_property_c.o
|
|
gnu_property_main.o: gnu_property_main.c
|
|
$(COMPILE) -c -o $@ $<
|
|
gnu_property_a.o: gnu_property_a.S
|
|
$(COMPILE) -c -o $@ $<
|
|
gnu_property_b.o: gnu_property_b.S
|
|
$(COMPILE) -c -o $@ $<
|
|
gnu_property_c.o: gnu_property_c.S
|
|
$(COMPILE) -c -o $@ $<
|
|
endif DEFAULT_TARGET_X86_64
|
|
|
|
check_PROGRAMS += pr22266
|
|
pr22266: pr22266_main.o pr22266_ar.o gcctestdir/ld
|
|
$(LINK) -Bgcctestdir/ pr22266_main.o pr22266_ar.o
|
|
pr22266_ar.o: pr22266_a.o gcctestdir/ld
|
|
gcctestdir/ld -r -T $(srcdir)/pr22266_script.t -o $@ pr22266_a.o
|
|
|
|
endif GCC
|
|
endif NATIVE_LINKER
|
|
|
|
# These tests work with native and cross linkers.
|
|
|
|
if NATIVE_OR_CROSS_LINKER
|
|
|
|
# Test script section order.
|
|
check_SCRIPTS += script_test_10.sh
|
|
check_DATA += script_test_10.stdout
|
|
MOSTLYCLEANFILES += script_test_10
|
|
script_test_10.o: script_test_10.s
|
|
$(TEST_AS) -o $@ $<
|
|
script_test_10: $(srcdir)/script_test_10.t script_test_10.o gcctestdir/ld
|
|
gcctestdir/ld -o $@ script_test_10.o -T $(srcdir)/script_test_10.t
|
|
script_test_10.stdout: script_test_10
|
|
$(TEST_READELF) -SW script_test_10 > $@
|
|
|
|
# These tests work with cross linkers only.
|
|
|
|
if DEFAULT_TARGET_I386
|
|
|
|
check_SCRIPTS += split_i386.sh
|
|
check_DATA += split_i386_1.stdout split_i386_2.stdout \
|
|
split_i386_3.stdout split_i386_4.stdout split_i386_r.stdout
|
|
SPLIT_DEFSYMS = --defsym __morestack=0x100 --defsym __morestack_non_split=0x200
|
|
split_i386_1.o: split_i386_1.s
|
|
$(TEST_AS) -o $@ $<
|
|
split_i386_2.o: split_i386_2.s
|
|
$(TEST_AS) -o $@ $<
|
|
split_i386_3.o: split_i386_3.s
|
|
$(TEST_AS) -o $@ $<
|
|
split_i386_4.o: split_i386_4.s
|
|
$(TEST_AS) -o $@ $<
|
|
split_i386_n.o: split_i386_n.s
|
|
$(TEST_AS) -o $@ $<
|
|
split_i386_1: split_i386_1.o split_i386_n.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_i386_1.o split_i386_n.o
|
|
split_i386_1.stdout: split_i386_1
|
|
$(TEST_OBJDUMP) -d $< > $@
|
|
split_i386_2: split_i386_2.o split_i386_n.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_i386_2.o split_i386_n.o
|
|
split_i386_2.stdout: split_i386_2
|
|
$(TEST_OBJDUMP) -d $< > $@
|
|
split_i386_3.stdout: split_i386_3.o split_i386_n.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o split_i386_3 split_i386_3.o split_i386_n.o > $@ 2>&1 || exit 0
|
|
split_i386_4: split_i386_4.o split_i386_n.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_i386_4.o split_i386_n.o
|
|
split_i386_4.stdout: split_i386_4
|
|
$(TEST_OBJDUMP) -d $< > $@
|
|
split_i386_r.stdout: split_i386_1.o split_i386_n.o ../ld-new
|
|
../ld-new -r split_i386_1.o split_i386_n.o -o split_i386_r > $@ 2>&1 || exit 0
|
|
MOSTLYCLEANFILES += split_i386_1 split_i386_2 split_i386_3 \
|
|
split_i386_4 split_i386_r
|
|
|
|
endif DEFAULT_TARGET_I386
|
|
|
|
if DEFAULT_TARGET_X86_64
|
|
|
|
check_SCRIPTS += split_x86_64.sh
|
|
check_DATA += split_x86_64_1.stdout split_x86_64_2.stdout \
|
|
split_x86_64_3.stdout split_x86_64_4.stdout split_x86_64_r.stdout
|
|
SPLIT_DEFSYMS = --defsym __morestack=0x100 --defsym __morestack_non_split=0x200
|
|
split_x86_64_1.o: split_x86_64_1.s
|
|
$(TEST_AS) -o $@ $<
|
|
split_x86_64_2.o: split_x86_64_2.s
|
|
$(TEST_AS) -o $@ $<
|
|
split_x86_64_3.o: split_x86_64_3.s
|
|
$(TEST_AS) -o $@ $<
|
|
split_x86_64_4.o: split_x86_64_4.s
|
|
$(TEST_AS) -o $@ $<
|
|
split_x86_64_n.o: split_x86_64_n.s
|
|
$(TEST_AS) -o $@ $<
|
|
split_x86_64_1: split_x86_64_1.o split_x86_64_n.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_x86_64_1.o split_x86_64_n.o
|
|
split_x86_64_1.stdout: split_x86_64_1
|
|
$(TEST_OBJDUMP) -d $< > $@
|
|
split_x86_64_2: split_x86_64_2.o split_x86_64_n.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_x86_64_2.o split_x86_64_n.o
|
|
split_x86_64_2.stdout: split_x86_64_2
|
|
$(TEST_OBJDUMP) -d $< > $@
|
|
split_x86_64_3.stdout: split_x86_64_3.o split_x86_64_n.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o split_x86_64_3 split_x86_64_3.o split_x86_64_n.o > $@ 2>&1 || exit 0
|
|
split_x86_64_4: split_x86_64_4.o split_x86_64_n.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_x86_64_4.o split_x86_64_n.o
|
|
split_x86_64_4.stdout: split_x86_64_4
|
|
$(TEST_OBJDUMP) -d $< > $@
|
|
split_x86_64_r.stdout: split_x86_64_1.o split_x86_64_n.o ../ld-new
|
|
../ld-new -r split_x86_64_1.o split_x86_64_n.o -o split_x86_64_r > $@ 2>&1 || exit 0
|
|
MOSTLYCLEANFILES += split_x86_64_1 split_x86_64_2 split_x86_64_3 \
|
|
split_x86_64_4 split_x86_64_r
|
|
|
|
check_SCRIPTS += bnd_plt_1.sh
|
|
check_DATA += bnd_plt_1.stdout
|
|
bnd_plt_1.o: bnd_plt_1.s
|
|
$(TEST_AS) --64 -o $@ $<
|
|
bnd_plt_1.so: bnd_plt_1.o ../ld-new
|
|
../ld-new -shared -z bndplt bnd_plt_1.o -o $@
|
|
bnd_plt_1.stdout: bnd_plt_1.so
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
|
|
check_SCRIPTS += bnd_ifunc_1.sh
|
|
check_DATA += bnd_ifunc_1.stdout
|
|
bnd_ifunc_1.o: bnd_ifunc_1.s
|
|
$(TEST_AS) --64 -madd-bnd-prefix -o $@ $<
|
|
bnd_ifunc_1.so: bnd_ifunc_1.o ../ld-new
|
|
../ld-new -shared -z bndplt bnd_ifunc_1.o -o $@
|
|
bnd_ifunc_1.stdout: bnd_ifunc_1.so
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
|
|
check_SCRIPTS += bnd_ifunc_2.sh
|
|
check_DATA += bnd_ifunc_2.stdout
|
|
bnd_ifunc_2.o: bnd_ifunc_2.s
|
|
$(TEST_AS) --64 -madd-bnd-prefix -o $@ $<
|
|
bnd_ifunc_2.so: bnd_ifunc_2.o ../ld-new
|
|
../ld-new -shared -z bndplt bnd_ifunc_2.o -o $@
|
|
bnd_ifunc_2.stdout: bnd_ifunc_2.so
|
|
$(TEST_OBJDUMP) -dw $< > $@
|
|
|
|
endif DEFAULT_TARGET_X86_64
|
|
|
|
if DEFAULT_TARGET_X32
|
|
|
|
check_SCRIPTS += split_x32.sh
|
|
check_DATA += split_x32_1.stdout split_x32_2.stdout \
|
|
split_x32_3.stdout split_x32_4.stdout split_x32_r.stdout
|
|
SPLIT_DEFSYMS = --defsym __morestack=0x100 --defsym __morestack_non_split=0x200
|
|
split_x32_1.o: split_x32_1.s
|
|
$(TEST_AS) -o $@ $<
|
|
split_x32_2.o: split_x32_2.s
|
|
$(TEST_AS) -o $@ $<
|
|
split_x32_3.o: split_x32_3.s
|
|
$(TEST_AS) -o $@ $<
|
|
split_x32_4.o: split_x32_4.s
|
|
$(TEST_AS) -o $@ $<
|
|
split_x32_n.o: split_x32_n.s
|
|
$(TEST_AS) -o $@ $<
|
|
split_x32_1: split_x32_1.o split_x32_n.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_x32_1.o split_x32_n.o
|
|
split_x32_1.stdout: split_x32_1
|
|
$(TEST_OBJDUMP) -d $< > $@
|
|
split_x32_2: split_x32_2.o split_x32_n.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_x32_2.o split_x32_n.o
|
|
split_x32_2.stdout: split_x32_2
|
|
$(TEST_OBJDUMP) -d $< > $@
|
|
split_x32_3.stdout: split_x32_3.o split_x32_n.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o split_x32_3 split_x32_3.o split_x32_n.o > $@ 2>&1 || exit 0
|
|
split_x32_4: split_x32_4.o split_x32_n.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_x32_4.o split_x32_n.o
|
|
split_x32_4.stdout: split_x32_4
|
|
$(TEST_OBJDUMP) -d $< > $@
|
|
split_x32_r.stdout: split_x32_1.o split_x32_n.o ../ld-new
|
|
../ld-new -r split_x32_1.o split_x32_n.o -o split_x32_r > $@ 2>&1 || exit 0
|
|
MOSTLYCLEANFILES += split_x32_1 split_x32_2 split_x32_3 \
|
|
split_x32_4 split_x32_r
|
|
|
|
endif DEFAULT_TARGET_X32
|
|
|
|
if DEFAULT_TARGET_ARM
|
|
|
|
check_SCRIPTS += arm_abs_global.sh
|
|
check_DATA += arm_abs_global.stdout
|
|
arm_abs_lib.o: arm_abs_lib.s
|
|
$(TEST_AS) -march=armv7-a -o $@ $<
|
|
libarm_abs.so: arm_abs_lib.o ../ld-new
|
|
../ld-new -shared -o $@ arm_abs_lib.o
|
|
arm_abs_global.o: arm_abs_global.s
|
|
$(TEST_AS) -march=armv7-a -o $@ $<
|
|
arm_abs_global: arm_abs_global.o libarm_abs.so ../ld-new
|
|
../ld-new -o $@ arm_abs_global.o -L. -larm_abs
|
|
arm_abs_global.stdout: arm_abs_global
|
|
$(TEST_READELF) -r $< > $@
|
|
|
|
MOSTLYCLEANFILES += arm_abs_global
|
|
|
|
check_SCRIPTS += arm_branch_in_range.sh arm_branch_out_of_range.sh
|
|
check_DATA += arm_bl_in_range.stdout arm_bl_out_of_range.stdout \
|
|
thumb_bl_in_range.stdout thumb_bl_out_of_range.stdout \
|
|
thumb2_bl_in_range.stdout thumb2_bl_out_of_range.stdout \
|
|
thumb_blx_in_range.stdout thumb_blx_out_of_range.stdout \
|
|
thumb2_blx_in_range.stdout thumb2_blx_out_of_range.stdout \
|
|
thumb_bl_out_of_range_local.stdout arm_thm_jump11.stdout \
|
|
arm_thm_jump8.stdout
|
|
|
|
arm_bl_in_range.stdout: arm_bl_in_range
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
arm_bl_in_range: arm_bl_in_range.o ../ld-new
|
|
../ld-new -T $(srcdir)/arm_branch_range.t -o $@ $<
|
|
|
|
arm_bl_in_range.o: arm_bl_in_range.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
arm_bl_out_of_range.stdout: arm_bl_out_of_range
|
|
$(TEST_OBJDUMP) -S $< > $@
|
|
|
|
arm_bl_out_of_range: arm_bl_out_of_range.o ../ld-new
|
|
../ld-new -T $(srcdir)/arm_branch_range.t -o $@ $<
|
|
|
|
arm_bl_out_of_range.o: arm_bl_out_of_range.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
thumb_bl_in_range.stdout: thumb_bl_in_range
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
thumb_bl_in_range: thumb_bl_in_range.o ../ld-new
|
|
../ld-new --no-fix-arm1176 -T $(srcdir)/thumb_branch_range.t -o $@ $<
|
|
|
|
thumb_bl_in_range.o: thumb_bl_in_range.s
|
|
$(TEST_AS) -o $@ -march=armv5te $<
|
|
|
|
thumb_bl_out_of_range.stdout: thumb_bl_out_of_range
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
thumb_bl_out_of_range: thumb_bl_out_of_range.o ../ld-new
|
|
../ld-new --no-fix-arm1176 -T $(srcdir)/thumb_branch_range.t -o $@ $<
|
|
|
|
thumb_bl_out_of_range.o: thumb_bl_out_of_range.s
|
|
$(TEST_AS) -o $@ -march=armv5te $<
|
|
|
|
thumb2_bl_in_range.stdout: thumb2_bl_in_range
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
thumb2_bl_in_range: thumb2_bl_in_range.o ../ld-new
|
|
../ld-new -T $(srcdir)/thumb2_branch_range.t -o $@ $<
|
|
|
|
thumb2_bl_in_range.o: thumb_bl_in_range.s
|
|
$(TEST_AS) -o $@ -march=armv7-a $<
|
|
|
|
thumb2_bl_out_of_range.stdout: thumb2_bl_out_of_range
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
thumb2_bl_out_of_range: thumb2_bl_out_of_range.o ../ld-new
|
|
../ld-new -T $(srcdir)/thumb2_branch_range.t -o $@ $<
|
|
|
|
thumb2_bl_out_of_range.o: thumb_bl_out_of_range.s
|
|
$(TEST_AS) -o $@ -march=armv7-a $<
|
|
|
|
thumb_blx_in_range.stdout: thumb_blx_in_range
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
thumb_blx_in_range: thumb_blx_in_range.o ../ld-new
|
|
../ld-new --no-fix-arm1176 -T $(srcdir)/thumb_branch_range.t -o $@ $<
|
|
|
|
thumb_blx_in_range.o: thumb_blx_in_range.s
|
|
$(TEST_AS) -o $@ -march=armv5te $<
|
|
|
|
thumb_blx_out_of_range.stdout: thumb_blx_out_of_range
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
thumb_blx_out_of_range: thumb_blx_out_of_range.o ../ld-new
|
|
../ld-new --no-fix-arm1176 -T $(srcdir)/thumb_branch_range.t -o $@ $<
|
|
|
|
thumb_blx_out_of_range.o: thumb_blx_out_of_range.s
|
|
$(TEST_AS) -o $@ -march=armv5te $<
|
|
|
|
thumb2_blx_in_range.stdout: thumb2_blx_in_range
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
thumb2_blx_in_range: thumb2_blx_in_range.o ../ld-new
|
|
../ld-new -T $(srcdir)/thumb2_branch_range.t -o $@ $<
|
|
|
|
thumb2_blx_in_range.o: thumb_blx_in_range.s
|
|
$(TEST_AS) -o $@ -march=armv7-a $<
|
|
|
|
thumb2_blx_out_of_range.stdout: thumb2_blx_out_of_range
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
thumb2_blx_out_of_range: thumb2_blx_out_of_range.o ../ld-new
|
|
../ld-new -T $(srcdir)/thumb2_branch_range.t -o $@ $<
|
|
|
|
thumb2_blx_out_of_range.o: thumb_blx_out_of_range.s
|
|
$(TEST_AS) -o $@ -march=armv7-a $<
|
|
|
|
thumb_bl_out_of_range_local.stdout: thumb_bl_out_of_range_local
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
thumb_bl_out_of_range_local: thumb_bl_out_of_range_local.o ../ld-new
|
|
../ld-new --no-fix-arm1176 -T $(srcdir)/thumb_branch_range.t -o $@ $<
|
|
|
|
thumb_bl_out_of_range_local.o: thumb_bl_out_of_range_local.s
|
|
$(TEST_AS) -o $@ -march=armv5te $<
|
|
|
|
arm_thm_jump11.stdout: arm_thm_jump11
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
arm_thm_jump11: arm_thm_jump11.o ../ld-new
|
|
../ld-new -T $(srcdir)/arm_thm_jump11.t -o $@ $<
|
|
|
|
arm_thm_jump11.o: arm_thm_jump11.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
arm_thm_jump8.stdout: arm_thm_jump8
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
arm_thm_jump8: arm_thm_jump8.o ../ld-new
|
|
../ld-new -T $(srcdir)/arm_thm_jump8.t -o $@ $<
|
|
|
|
arm_thm_jump8.o: arm_thm_jump8.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
MOSTLYCLEANFILES += arm_bl_in_range arm_bl_out_of_range thumb_bl_in_range \
|
|
thumb_bl_out_of_range thumb2_bl_in_range thumb2_bl_out_of_range \
|
|
thumb_blx_in_range thumb_blx_out_of_range thumb2_blx_in_range \
|
|
thumb2_blx_out_of_range thumb_bl_out_of_range_local arm_thm_jump11 \
|
|
arm_thm_jump8
|
|
|
|
check_SCRIPTS += arm_fix_v4bx.sh
|
|
check_DATA += arm_fix_v4bx.stdout arm_fix_v4bx_interworking.stdout \
|
|
arm_no_fix_v4bx.stdout
|
|
|
|
arm_fix_v4bx.stdout: arm_fix_v4bx
|
|
$(TEST_OBJDUMP) -D -j.text $< > $@
|
|
|
|
arm_fix_v4bx: arm_fix_v4bx.o ../ld-new
|
|
../ld-new --no-fix-arm1176 --fix-v4bx -o $@ $<
|
|
|
|
arm_fix_v4bx.o: arm_fix_v4bx.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
arm_fix_v4bx_interworking.stdout: arm_fix_v4bx_interworking
|
|
$(TEST_OBJDUMP) -D -j.text $< > $@
|
|
|
|
arm_fix_v4bx_interworking: arm_fix_v4bx.o ../ld-new
|
|
../ld-new --no-fix-arm1176 --fix-v4bx-interworking -o $@ $<
|
|
|
|
arm_no_fix_v4bx.stdout: arm_no_fix_v4bx
|
|
$(TEST_OBJDUMP) -D -j.text $< > $@
|
|
|
|
arm_no_fix_v4bx: arm_fix_v4bx.o ../ld-new
|
|
../ld-new --no-fix-arm1176 -o $@ $<
|
|
|
|
MOSTLYCLEANFILES += arm_fix_v4bx arm_fix_v4bx_interworking arm_no_fix_v4bx
|
|
|
|
check_SCRIPTS += arm_attr_merge.sh
|
|
check_DATA += arm_attr_merge_6.stdout arm_attr_merge_6r.stdout \
|
|
arm_attr_merge_7.stdout
|
|
|
|
arm_attr_merge_6.stdout: arm_attr_merge_6
|
|
$(TEST_READELF) -A $< > $@
|
|
|
|
arm_attr_merge_6: arm_attr_merge_6a.o arm_attr_merge_6b.o ../ld-new
|
|
../ld-new -o $@ arm_attr_merge_6a.o arm_attr_merge_6b.o
|
|
|
|
arm_attr_merge_6a.o: arm_attr_merge_6a.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
arm_attr_merge_6b.o: arm_attr_merge_6b.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
arm_attr_merge_6r.stdout: arm_attr_merge_6r
|
|
$(TEST_READELF) -A $< > $@
|
|
|
|
arm_attr_merge_6r: arm_attr_merge_6b.o arm_attr_merge_6a.o ../ld-new
|
|
../ld-new -o $@ arm_attr_merge_6b.o arm_attr_merge_6a.o
|
|
|
|
arm_attr_merge_7.stdout: arm_attr_merge_7
|
|
$(TEST_READELF) -A $< > $@
|
|
|
|
arm_attr_merge_7: arm_attr_merge_7a.o arm_attr_merge_7b.o ../ld-new
|
|
../ld-new -o $@ arm_attr_merge_7a.o arm_attr_merge_7b.o
|
|
|
|
arm_attr_merge_7a.o: arm_attr_merge_7a.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
arm_attr_merge_7b.o: arm_attr_merge_7b.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
MOSTLYCLEANFILES += arm_attr_merge_6 arm_attr_merge_6r arm_attr_merge_7
|
|
|
|
# ARM1176 workaround test.
|
|
check_SCRIPTS += arm_fix_1176.sh
|
|
check_DATA += arm_fix_1176_default_v6z.stdout arm_fix_1176_on_v6z.stdout \
|
|
arm_fix_1176_off_v6z.stdout arm_fix_1176_default_v5te.stdout \
|
|
arm_fix_1176_default_v7a.stdout arm_fix_1176_default_1156t2f_s.stdout
|
|
|
|
arm_fix_1176_default_v6z.stdout: arm_fix_1176_default_v6z
|
|
$(TEST_OBJDUMP) -D -j.foo $< > $@
|
|
|
|
arm_fix_1176_default_v6z: arm_fix_1176_default_v6z.o ../ld-new
|
|
../ld-new --section-start=.foo=0x2001014 -o $@ $<
|
|
|
|
arm_fix_1176_default_v6z.o: arm_fix_1176.s
|
|
$(TEST_AS) -march=armv6z -o $@ $<
|
|
|
|
arm_fix_1176_on_v6z.stdout: arm_fix_1176_on_v6z
|
|
$(TEST_OBJDUMP) -D -j.foo $< > $@
|
|
|
|
arm_fix_1176_on_v6z: arm_fix_1176_on_v6z.o ../ld-new
|
|
../ld-new --section-start=.foo=0x2001014 --fix-arm1176 -o $@ $<
|
|
|
|
arm_fix_1176_on_v6z.o: arm_fix_1176.s
|
|
$(TEST_AS) -march=armv6z -o $@ $<
|
|
|
|
arm_fix_1176_off_v6z.stdout: arm_fix_1176_off_v6z
|
|
$(TEST_OBJDUMP) -D -j.foo $< > $@
|
|
|
|
arm_fix_1176_off_v6z: arm_fix_1176_off_v6z.o ../ld-new
|
|
../ld-new --section-start=.foo=0x2001014 --no-fix-arm1176 -o $@ $<
|
|
|
|
arm_fix_1176_off_v6z.o: arm_fix_1176.s
|
|
$(TEST_AS) -march=armv6z -o $@ $<
|
|
|
|
arm_fix_1176_default_v5te.stdout: arm_fix_1176_default_v5te
|
|
$(TEST_OBJDUMP) -D -j.foo $< > $@
|
|
|
|
arm_fix_1176_default_v5te: arm_fix_1176_default_v5te.o ../ld-new
|
|
../ld-new --section-start=.foo=0x2001014 -o $@ $<
|
|
|
|
arm_fix_1176_default_v5te.o: arm_fix_1176.s
|
|
$(TEST_AS) -march=armv5te -o $@ $<
|
|
|
|
arm_fix_1176_default_v7a.stdout: arm_fix_1176_default_v7a
|
|
$(TEST_OBJDUMP) -D -j.foo $< > $@
|
|
|
|
arm_fix_1176_default_v7a: arm_fix_1176_default_v7a.o ../ld-new
|
|
../ld-new --section-start=.foo=0x2001014 -o $@ $<
|
|
|
|
arm_fix_1176_default_v7a.o: arm_fix_1176.s
|
|
$(TEST_AS) -march=armv7-a -o $@ $<
|
|
|
|
arm_fix_1176_default_1156t2f_s.stdout: arm_fix_1176_default_1156t2f_s
|
|
$(TEST_OBJDUMP) -D -j.foo $< > $@
|
|
|
|
arm_fix_1176_default_1156t2f_s: arm_fix_1176_default_1156t2f_s.o ../ld-new
|
|
../ld-new --section-start=.foo=0x2001014 -o $@ $<
|
|
|
|
arm_fix_1176_default_1156t2f_s.o: arm_fix_1176.s
|
|
$(TEST_AS) -mcpu=arm1156t2f-s -o $@ $<
|
|
|
|
MOSTLYCLEANFILES += arm_fix_1176_default_v6z arm_fix_1176_on_v6z arm_fix_1176_off_v6z \
|
|
arm_fix_1176_default_v5te arm_fix_1176_default_v7a arm_fix_1176_default_1156t2f_s
|
|
|
|
# Cortex-A8 workaround test.
|
|
|
|
check_SCRIPTS += arm_cortex_a8.sh
|
|
check_DATA += arm_cortex_a8_b_cond.stdout arm_cortex_a8_b.stdout \
|
|
arm_cortex_a8_bl.stdout arm_cortex_a8_blx.stdout \
|
|
arm_cortex_a8_local.stdout arm_cortex_a8_local_reloc.stdout
|
|
|
|
arm_cortex_a8_b_cond.stdout: arm_cortex_a8_b_cond
|
|
$(TEST_OBJDUMP) -D -j.text $< > $@
|
|
|
|
arm_cortex_a8_b_cond: arm_cortex_a8_b_cond.o ../ld-new
|
|
../ld-new -o $@ $<
|
|
|
|
arm_cortex_a8_b_cond.o: arm_cortex_a8_b_cond.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
arm_cortex_a8_b.stdout: arm_cortex_a8_b
|
|
$(TEST_OBJDUMP) -D -j.text $< > $@
|
|
|
|
arm_cortex_a8_b: arm_cortex_a8_b.o ../ld-new
|
|
../ld-new --fix-cortex-a8 -o $@ $<
|
|
|
|
arm_cortex_a8_b.o: arm_cortex_a8_b.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
arm_cortex_a8_bl.stdout: arm_cortex_a8_bl
|
|
$(TEST_OBJDUMP) -D -j.text $< > $@
|
|
|
|
arm_cortex_a8_bl: arm_cortex_a8_bl.o ../ld-new
|
|
../ld-new -o $@ $<
|
|
|
|
arm_cortex_a8_bl.o: arm_cortex_a8_bl.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
arm_cortex_a8_blx.stdout: arm_cortex_a8_blx
|
|
$(TEST_OBJDUMP) -D -j.text $< > $@
|
|
|
|
arm_cortex_a8_blx: arm_cortex_a8_blx.o ../ld-new
|
|
../ld-new -o $@ $<
|
|
|
|
arm_cortex_a8_blx.o: arm_cortex_a8_blx.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
arm_cortex_a8_local.stdout: arm_cortex_a8_local
|
|
$(TEST_OBJDUMP) -D -j.text $< > $@
|
|
|
|
arm_cortex_a8_local: arm_cortex_a8_local.o ../ld-new
|
|
../ld-new -o $@ $<
|
|
|
|
arm_cortex_a8_local.o: arm_cortex_a8_local.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
arm_cortex_a8_local_reloc.stdout: arm_cortex_a8_local_reloc
|
|
$(TEST_OBJDUMP) -D -j.text $< > $@
|
|
|
|
arm_cortex_a8_local_reloc: arm_cortex_a8_local_reloc.o ../ld-new
|
|
../ld-new -o $@ $<
|
|
|
|
arm_cortex_a8_local_reloc.o: arm_cortex_a8_local_reloc.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
MOSTLYCLEANFILES += arm_cortex_a8_b_cond arm_cortex_a8_b arm_cortex_a8_bl \
|
|
arm_cortex_a8_blx arm_cortex_a8_local arm_cortex_a8_local_reloc
|
|
|
|
check_SCRIPTS += arm_exidx_test.sh
|
|
check_DATA += arm_exidx_test.stdout
|
|
|
|
arm_exidx_test.stdout: arm_exidx_test.so
|
|
$(TEST_READELF) -Sr $< > $@
|
|
|
|
arm_exidx_test.so: arm_exidx_test.o ../ld-new
|
|
../ld-new -shared -o $@ $<
|
|
|
|
arm_exidx_test.o: arm_exidx_test.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
check_SCRIPTS += pr12826.sh
|
|
check_DATA += pr12826.stdout
|
|
|
|
pr12826.stdout: pr12826.so
|
|
$(TEST_READELF) -A $< > $@
|
|
|
|
pr12826.so: pr12826_1.o pr12826_2.o ../ld-new
|
|
../ld-new -shared -o $@ $<
|
|
|
|
pr12826_1.o: pr12826_1.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
pr12826_2.o: pr12826_2.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
check_SCRIPTS += arm_unaligned_reloc.sh
|
|
check_DATA += arm_unaligned_reloc.stdout arm_unaligned_reloc_r.stdout
|
|
|
|
arm_unaligned_reloc.stdout: arm_unaligned_reloc
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
arm_unaligned_reloc_r.stdout: arm_unaligned_reloc_r
|
|
$(TEST_OBJDUMP) -Dr $< > $@
|
|
|
|
arm_unaligned_reloc: arm_unaligned_reloc.o ../ld-new
|
|
../ld-new -o $@ $<
|
|
|
|
arm_unaligned_reloc_r: arm_unaligned_reloc.o ../ld-new
|
|
../ld-new -r -o $@ $<
|
|
|
|
arm_unaligned_reloc.o: arm_unaligned_reloc.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
MOSTLYCLEANFILES += arm_unaligned_reloc arm_unaligned_reloc_r
|
|
|
|
# Check ARM to ARM farcall veneers
|
|
|
|
check_SCRIPTS += arm_farcall_arm_arm.sh
|
|
check_DATA += arm_farcall_arm_arm.stdout
|
|
|
|
arm_farcall_arm_arm.stdout: arm_farcall_arm_arm
|
|
$(TEST_OBJDUMP) -d $< > $@
|
|
|
|
arm_farcall_arm_arm: arm_farcall_arm_arm.o ../ld-new
|
|
../ld-new --no-fix-arm1176 --section-start .text=0x1000 --section-start .foo=0x2001020 -o $@ $<
|
|
|
|
arm_farcall_arm_arm.o: arm_farcall_arm_arm.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
MOSTLYCLEANFILES += arm_farcall_arm_arm
|
|
|
|
# Check ARM to Thumb farcall veneers
|
|
|
|
check_SCRIPTS += arm_farcall_arm_thumb.sh
|
|
check_DATA += arm_farcall_arm_thumb.stdout arm_farcall_arm_thumb_5t.stdout
|
|
|
|
arm_farcall_arm_thumb.stdout: arm_farcall_arm_thumb
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
arm_farcall_arm_thumb: arm_farcall_arm_thumb.o ../ld-new
|
|
../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $<
|
|
|
|
arm_farcall_arm_thumb.o: arm_farcall_arm_thumb.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
arm_farcall_arm_thumb_5t.stdout: arm_farcall_arm_thumb_5t
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
arm_farcall_arm_thumb_5t: arm_farcall_arm_thumb_5t.o ../ld-new
|
|
../ld-new --no-fix-arm1176 --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $<
|
|
|
|
arm_farcall_arm_thumb_5t.o: arm_farcall_arm_thumb.s
|
|
$(TEST_AS) -march=armv5t -o $@ $<
|
|
|
|
MOSTLYCLEANFILES += arm_farcall_arm_thumb arm_farcall_arm_thumb_5t
|
|
|
|
# Check Thumb to Thumb farcall veneers
|
|
|
|
check_SCRIPTS += arm_farcall_thumb_thumb.sh
|
|
check_DATA += arm_farcall_thumb_thumb.stdout \
|
|
arm_farcall_thumb_thumb_5t.stdout \
|
|
arm_farcall_thumb_thumb_7m.stdout \
|
|
arm_farcall_thumb_thumb_6m.stdout
|
|
|
|
arm_farcall_thumb_thumb.stdout: arm_farcall_thumb_thumb
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
arm_farcall_thumb_thumb: arm_farcall_thumb_thumb.o ../ld-new
|
|
../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $<
|
|
|
|
arm_farcall_thumb_thumb.o: arm_farcall_thumb_thumb.s
|
|
$(TEST_AS) -march=armv4t -o $@ $<
|
|
|
|
arm_farcall_thumb_thumb_5t.stdout: arm_farcall_thumb_thumb_5t
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
arm_farcall_thumb_thumb_5t: arm_farcall_thumb_thumb_5t.o ../ld-new
|
|
../ld-new --no-fix-arm1176 --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $<
|
|
|
|
arm_farcall_thumb_thumb_5t.o: arm_farcall_thumb_thumb.s
|
|
$(TEST_AS) -march=armv5t -o $@ $<
|
|
|
|
arm_farcall_thumb_thumb_7m.stdout: arm_farcall_thumb_thumb_7m
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
arm_farcall_thumb_thumb_7m: arm_farcall_thumb_thumb_7m.o ../ld-new
|
|
../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $<
|
|
|
|
arm_farcall_thumb_thumb_7m.o: arm_farcall_thumb_thumb.s
|
|
$(TEST_AS) -march=armv7-m -o $@ $<
|
|
|
|
arm_farcall_thumb_thumb_6m.stdout: arm_farcall_thumb_thumb_6m
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
arm_farcall_thumb_thumb_6m: arm_farcall_thumb_thumb_6m.o ../ld-new
|
|
../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -o $@ $<
|
|
|
|
arm_farcall_thumb_thumb_6m.o: arm_farcall_thumb_thumb.s
|
|
$(TEST_AS) -march=armv6-m -o $@ $<
|
|
|
|
MOSTLYCLEANFILES += arm_farcall_thumb_thumb arm_farcall_thumb_thumb_5t \
|
|
arm_farcall_thumb_thumb_7m arm_farcall_thumb_thumb_6m
|
|
|
|
#Check ARM to ARM farcall veneers in the be8 mode addressing
|
|
|
|
check_SCRIPTS += arm_farcall_arm_arm_be8.sh
|
|
check_DATA += arm_farcall_arm_arm_be8.stdout
|
|
|
|
arm_farcall_arm_arm_be8.stdout: arm_farcall_arm_arm_be8
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
arm_farcall_arm_arm_be8: arm_farcall_arm_arm_be8.o ../ld-new
|
|
../ld-new --no-fix-arm1176 --section-start .text=0x1000 --section-start .foo=0x2001020 -EB --be8 -o $@ $<
|
|
|
|
arm_farcall_arm_arm_be8.o: arm_farcall_arm_arm.s
|
|
$(TEST_AS) -EB -o $@ $<
|
|
|
|
MOSTLYCLEANFILES += arm_farcall_arm_arm_be8
|
|
|
|
#Check THUMB to THUMB farcall veneers in the be8 mode addressing
|
|
|
|
check_SCRIPTS += arm_farcall_thumb_thumb_be8.sh
|
|
check_DATA += arm_farcall_thumb_thumb_be8.stdout
|
|
|
|
arm_farcall_thumb_thumb_be8.stdout: arm_farcall_thumb_thumb_be8
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
arm_farcall_thumb_thumb_be8: arm_farcall_thumb_thumb_be8.o ../ld-new
|
|
../ld-new --section-start .text=0x1000 --section-start .foo=0x2001014 -EB --be8 -o $@ $<
|
|
|
|
arm_farcall_thumb_thumb_be8.o: arm_farcall_thumb_thumb.s
|
|
$(TEST_AS) -march=armv7-m -EB -o $@ $<
|
|
|
|
MOSTLYCLEANFILES += arm_farcall_thumb_thumb_be8
|
|
|
|
# Check Thumb to ARM farcall veneers
|
|
|
|
check_SCRIPTS += arm_farcall_thumb_arm.sh
|
|
check_DATA += arm_farcall_thumb_arm.stdout \
|
|
arm_farcall_thumb_arm_5t.stdout
|
|
|
|
arm_farcall_thumb_arm.stdout: arm_farcall_thumb_arm
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
arm_farcall_thumb_arm: arm_farcall_thumb_arm.o ../ld-new
|
|
../ld-new --section-start .text=0x1c01010 --section-start .foo=0x2001014 -o $@ $<
|
|
|
|
arm_farcall_thumb_arm.o: arm_farcall_thumb_arm.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
arm_farcall_thumb_arm_5t.stdout: arm_farcall_thumb_arm_5t
|
|
$(TEST_OBJDUMP) -D $< > $@
|
|
|
|
arm_farcall_thumb_arm_5t: arm_farcall_thumb_arm_5t.o ../ld-new
|
|
../ld-new --no-fix-arm1176 --section-start .text=0x1c01010 --section-start .foo=0x2001014 -o $@ $<
|
|
|
|
arm_farcall_thumb_arm_5t.o: arm_farcall_thumb_arm.s
|
|
$(TEST_AS) -march=armv5t -o $@ $<
|
|
|
|
MOSTLYCLEANFILES += arm_farcall_thumb_arm arm_farcall_thumb_arm_5t
|
|
|
|
# Check handling of --target1-abs, --target1-rel and --target2 options
|
|
|
|
check_SCRIPTS += arm_target1_abs.sh arm_target1_rel.sh \
|
|
arm_target2_rel.sh arm_target2_abs.sh arm_target2_got_rel.sh
|
|
check_DATA += arm_target1_abs.stdout arm_target1_rel.stdout \
|
|
arm_target2_rel.stdout arm_target2_abs.stdout arm_target2_got_rel.stdout
|
|
|
|
arm_target1_abs.stdout: arm_target1_abs
|
|
$(TEST_OBJDUMP) -s $< > $@
|
|
|
|
arm_target1_abs: arm_target1.o ../ld-new
|
|
../ld-new --target1-abs --section-start .text=0x8000 -o $@ $<
|
|
|
|
arm_target1_rel.stdout: arm_target1_rel
|
|
$(TEST_OBJDUMP) -s $< > $@
|
|
|
|
arm_target1_rel: arm_target1.o ../ld-new
|
|
../ld-new --target1-rel --section-start .text=0x8000 -o $@ $<
|
|
|
|
arm_target1.o: arm_target1.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
arm_target2_rel.stdout: arm_target2_rel
|
|
$(TEST_OBJDUMP) -s $< > $@
|
|
|
|
arm_target2_rel: arm_target2.o ../ld-new
|
|
../ld-new --target2=rel --section-start .text=0x8000 -o $@ $<
|
|
|
|
arm_target2_abs.stdout: arm_target2_abs
|
|
$(TEST_OBJDUMP) -s $< > $@
|
|
|
|
arm_target2_abs: arm_target2.o ../ld-new
|
|
../ld-new --target2=abs --section-start .text=0x8000 -o $@ $<
|
|
|
|
arm_target2_got_rel.stdout: arm_target2_got_rel
|
|
$(TEST_OBJDUMP) -s $< > $@
|
|
|
|
arm_target2_got_rel: arm_target2.o ../ld-new
|
|
../ld-new --target2=got-rel --section-start .text=0x8000 --section-start .got=0x9000 -o $@ $<
|
|
|
|
arm_target2.o: arm_target2.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
MOSTLYCLEANFILES += arm_target1_abs arm_target1_rel \
|
|
arm_target2_rel arm_target2_abs arm_target2_got_rel
|
|
|
|
# The test demonstrates why the constructor of a target object should not access options.
|
|
check_DATA += arm_target_lazy_init
|
|
MOSTLYCLEANFILES += arm_target_lazy_init
|
|
arm_target_lazy_init: arm_target_lazy_init.o arm_target_lazy_init.t ../ld-new
|
|
../ld-new -T $(srcdir)/arm_target_lazy_init.t -o $@ $<
|
|
arm_target_lazy_init.o: arm_target_lazy_init.s
|
|
$(TEST_AS) -EL -o $@ $<
|
|
|
|
endif DEFAULT_TARGET_ARM
|
|
|
|
if DEFAULT_TARGET_AARCH64
|
|
|
|
check_SCRIPTS += aarch64_reloc_none.sh
|
|
check_DATA += aarch64_reloc_none.stdout
|
|
aarch64_reloc_none.o: aarch64_reloc_none.s
|
|
$(TEST_AS) -o $@ $<
|
|
aarch64_reloc_none: aarch64_reloc_none.o ../ld-new
|
|
../ld-new -o $@ aarch64_reloc_none.o --gc-sections
|
|
aarch64_reloc_none.stdout: aarch64_reloc_none
|
|
$(TEST_NM) $< > $@
|
|
|
|
MOSTLYCLEANFILES += aarch64_reloc_none
|
|
|
|
check_SCRIPTS += aarch64_relocs.sh
|
|
check_DATA += aarch64_relocs.stdout
|
|
aarch64_globals.o: aarch64_globals.s
|
|
$(TEST_AS) -o $@ $<
|
|
aarch64_relocs.o: aarch64_relocs.s
|
|
$(TEST_AS) -o $@ $<
|
|
aarch64_relocs: aarch64_relocs.o aarch64_globals.o ../ld-new
|
|
../ld-new -o $@ aarch64_relocs.o aarch64_globals.o -e0 --emit-relocs
|
|
aarch64_relocs.stdout: aarch64_relocs
|
|
$(TEST_OBJDUMP) -dr $< > $@
|
|
|
|
MOSTLYCLEANFILES += aarch64_relocs
|
|
|
|
check_SCRIPTS += pr21430.sh
|
|
check_DATA += pr21430.stdout
|
|
pr21430.o: pr21430.s
|
|
$(TEST_AS) -o $@ $<
|
|
pr21430: pr21430.o ../ld-new
|
|
../ld-new -o $@ $<
|
|
pr21430.stdout: pr21430
|
|
$(TEST_NM) -S $< > $@
|
|
|
|
MOSTLYCLEANFILES += pr21430
|
|
|
|
check_SCRIPTS += aarch64_tlsdesc.sh
|
|
check_DATA += aarch64_tlsdesc.stdout
|
|
aarch64_tlsdesc.o: aarch64_tlsdesc.s
|
|
$(TEST_AS) -o $@ $<
|
|
aarch64_tlsdesc: aarch64_tlsdesc.o $(srcdir)/aarch64_tlsdesc.t ../ld-new
|
|
../ld-new $< -shared -T $(srcdir)/aarch64_tlsdesc.t -o $@
|
|
aarch64_tlsdesc.stdout: aarch64_tlsdesc
|
|
$(TEST_OBJDUMP) -dR -j.text -j.got.plt $< > $@
|
|
|
|
MOSTLYCLEANFILES += aarch64_tlsdesc
|
|
|
|
endif DEFAULT_TARGET_AARCH64
|
|
|
|
if DEFAULT_TARGET_S390
|
|
|
|
check_SCRIPTS += split_s390.sh
|
|
check_DATA += split_s390_z1.stdout split_s390_z2.stdout split_s390_z3.stdout \
|
|
split_s390_z4.stdout split_s390_n1.stdout split_s390_n2.stdout \
|
|
split_s390_a1.stdout split_s390_a2.stdout split_s390_z1_ns.stdout \
|
|
split_s390_z2_ns.stdout split_s390_z3_ns.stdout split_s390_z4_ns.stdout \
|
|
split_s390_n1_ns.stdout split_s390_n2_ns.stdout split_s390_r.stdout \
|
|
split_s390x_z1.stdout split_s390x_z2.stdout split_s390x_z3.stdout \
|
|
split_s390x_z4.stdout split_s390x_n1.stdout split_s390x_n2.stdout \
|
|
split_s390x_a1.stdout split_s390x_a2.stdout split_s390x_z1_ns.stdout \
|
|
split_s390x_z2_ns.stdout split_s390x_z3_ns.stdout \
|
|
split_s390x_z4_ns.stdout split_s390x_n1_ns.stdout \
|
|
split_s390x_n2_ns.stdout split_s390x_r.stdout
|
|
SPLIT_DEFSYMS = --defsym __morestack=0x100 --defsym __morestack_non_split=0x200
|
|
split_s390_1_z1.o: split_s390_1_z1.s
|
|
$(TEST_AS) -m31 -o $@ $<
|
|
split_s390_1_z2.o: split_s390_1_z2.s
|
|
$(TEST_AS) -m31 -o $@ $<
|
|
split_s390_1_z3.o: split_s390_1_z3.s
|
|
$(TEST_AS) -m31 -o $@ $<
|
|
split_s390_1_z4.o: split_s390_1_z4.s
|
|
$(TEST_AS) -m31 -o $@ $<
|
|
split_s390_1_n1.o: split_s390_1_n1.s
|
|
$(TEST_AS) -m31 -o $@ $<
|
|
split_s390_1_n2.o: split_s390_1_n2.s
|
|
$(TEST_AS) -m31 -o $@ $<
|
|
split_s390_1_a1.o: split_s390_1_a1.s
|
|
$(TEST_AS) -m31 -o $@ $<
|
|
split_s390_1_a2.o: split_s390_1_a2.s
|
|
$(TEST_AS) -m31 -o $@ $<
|
|
split_s390_2_s.o: split_s390_2_s.s
|
|
$(TEST_AS) -m31 -o $@ $<
|
|
split_s390_2_ns.o: split_s390_2_ns.s
|
|
$(TEST_AS) -m31 -o $@ $<
|
|
split_s390_z1: split_s390_1_z1.o split_s390_2_s.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z1.o split_s390_2_s.o
|
|
split_s390_z1.stdout: split_s390_z1
|
|
$(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@
|
|
split_s390_z2: split_s390_1_z2.o split_s390_2_s.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z2.o split_s390_2_s.o
|
|
split_s390_z2.stdout: split_s390_z2
|
|
$(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@
|
|
split_s390_z3: split_s390_1_z3.o split_s390_2_s.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z3.o split_s390_2_s.o
|
|
split_s390_z3.stdout: split_s390_z3
|
|
$(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@
|
|
split_s390_z4: split_s390_1_z4.o split_s390_2_s.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z4.o split_s390_2_s.o
|
|
split_s390_z4.stdout: split_s390_z4
|
|
$(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@
|
|
split_s390_n1: split_s390_1_n1.o split_s390_2_s.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_n1.o split_s390_2_s.o
|
|
split_s390_n1.stdout: split_s390_n1
|
|
$(TEST_OBJDUMP) -d $< > $@
|
|
split_s390_n2: split_s390_1_n2.o split_s390_2_s.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_n2.o split_s390_2_s.o
|
|
split_s390_n2.stdout: split_s390_n2
|
|
$(TEST_OBJDUMP) -d $< > $@
|
|
split_s390_z1_ns: split_s390_1_z1.o split_s390_2_ns.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z1.o split_s390_2_ns.o
|
|
split_s390_z1_ns.stdout: split_s390_z1_ns
|
|
$(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@
|
|
split_s390_z2_ns: split_s390_1_z2.o split_s390_2_ns.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z2.o split_s390_2_ns.o
|
|
split_s390_z2_ns.stdout: split_s390_z2_ns
|
|
$(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@
|
|
split_s390_z3_ns: split_s390_1_z3.o split_s390_2_ns.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z3.o split_s390_2_ns.o
|
|
split_s390_z3_ns.stdout: split_s390_z3_ns
|
|
$(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@
|
|
split_s390_z4_ns: split_s390_1_z4.o split_s390_2_ns.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_z4.o split_s390_2_ns.o
|
|
split_s390_z4_ns.stdout: split_s390_z4_ns
|
|
$(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@
|
|
split_s390_n1_ns: split_s390_1_n1.o split_s390_2_ns.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_n1.o split_s390_2_ns.o
|
|
split_s390_n1_ns.stdout: split_s390_n1_ns
|
|
$(TEST_OBJDUMP) -d $< > $@
|
|
split_s390_n2_ns.stdout: split_s390_1_n2.o split_s390_2_ns.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o split_s390_n2 split_s390_1_n2.o split_s390_2_ns.o > $@ 2>&1 || exit 0
|
|
split_s390_a1.stdout: split_s390_1_a1.o split_s390_2_ns.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o split_s390_a1 split_s390_1_a1.o split_s390_2_ns.o > $@ 2>&1 || exit 0
|
|
split_s390_a2: split_s390_1_a2.o split_s390_2_ns.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390_1_a2.o split_s390_2_ns.o
|
|
split_s390_a2.stdout: split_s390_a2
|
|
$(TEST_OBJDUMP) -d $< > $@
|
|
split_s390_r.stdout: split_s390_1_z1.o split_s390_2_ns.o ../ld-new
|
|
../ld-new -r split_s390_1_z1.o split_s390_2_ns.o -o split_s390_r > $@ 2>&1 || exit 0
|
|
split_s390x_1_z1.o: split_s390x_1_z1.s
|
|
$(TEST_AS) -m64 -o $@ $<
|
|
split_s390x_1_z2.o: split_s390x_1_z2.s
|
|
$(TEST_AS) -m64 -o $@ $<
|
|
split_s390x_1_z3.o: split_s390x_1_z3.s
|
|
$(TEST_AS) -m64 -o $@ $<
|
|
split_s390x_1_z4.o: split_s390x_1_z4.s
|
|
$(TEST_AS) -m64 -o $@ $<
|
|
split_s390x_1_n1.o: split_s390x_1_n1.s
|
|
$(TEST_AS) -m64 -o $@ $<
|
|
split_s390x_1_n2.o: split_s390x_1_n2.s
|
|
$(TEST_AS) -m64 -o $@ $<
|
|
split_s390x_1_a1.o: split_s390x_1_a1.s
|
|
$(TEST_AS) -m64 -o $@ $<
|
|
split_s390x_1_a2.o: split_s390x_1_a2.s
|
|
$(TEST_AS) -m64 -o $@ $<
|
|
split_s390x_2_s.o: split_s390x_2_s.s
|
|
$(TEST_AS) -m64 -o $@ $<
|
|
split_s390x_2_ns.o: split_s390x_2_ns.s
|
|
$(TEST_AS) -m64 -o $@ $<
|
|
split_s390x_z1: split_s390x_1_z1.o split_s390x_2_s.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z1.o split_s390x_2_s.o
|
|
split_s390x_z1.stdout: split_s390x_z1
|
|
$(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@
|
|
split_s390x_z2: split_s390x_1_z2.o split_s390x_2_s.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z2.o split_s390x_2_s.o
|
|
split_s390x_z2.stdout: split_s390x_z2
|
|
$(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@
|
|
split_s390x_z3: split_s390x_1_z3.o split_s390x_2_s.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z3.o split_s390x_2_s.o
|
|
split_s390x_z3.stdout: split_s390x_z3
|
|
$(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@
|
|
split_s390x_z4: split_s390x_1_z4.o split_s390x_2_s.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z4.o split_s390x_2_s.o
|
|
split_s390x_z4.stdout: split_s390x_z4
|
|
$(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@
|
|
split_s390x_n1: split_s390x_1_n1.o split_s390x_2_s.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_n1.o split_s390x_2_s.o
|
|
split_s390x_n1.stdout: split_s390x_n1
|
|
$(TEST_OBJDUMP) -d $< > $@
|
|
split_s390x_n2: split_s390x_1_n2.o split_s390x_2_s.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_n2.o split_s390x_2_s.o
|
|
split_s390x_n2.stdout: split_s390x_n2
|
|
$(TEST_OBJDUMP) -d $< > $@
|
|
split_s390x_z1_ns: split_s390x_1_z1.o split_s390x_2_ns.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z1.o split_s390x_2_ns.o
|
|
split_s390x_z1_ns.stdout: split_s390x_z1_ns
|
|
$(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@
|
|
split_s390x_z2_ns: split_s390x_1_z2.o split_s390x_2_ns.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z2.o split_s390x_2_ns.o
|
|
split_s390x_z2_ns.stdout: split_s390x_z2_ns
|
|
$(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@
|
|
split_s390x_z3_ns: split_s390x_1_z3.o split_s390x_2_ns.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z3.o split_s390x_2_ns.o
|
|
split_s390x_z3_ns.stdout: split_s390x_z3_ns
|
|
$(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@
|
|
split_s390x_z4_ns: split_s390x_1_z4.o split_s390x_2_ns.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_z4.o split_s390x_2_ns.o
|
|
split_s390x_z4_ns.stdout: split_s390x_z4_ns
|
|
$(TEST_OBJDUMP) -j .rodata -j .text -D $< > $@
|
|
split_s390x_n1_ns: split_s390x_1_n1.o split_s390x_2_ns.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_n1.o split_s390x_2_ns.o
|
|
split_s390x_n1_ns.stdout: split_s390x_n1_ns
|
|
$(TEST_OBJDUMP) -d $< > $@
|
|
split_s390x_n2_ns.stdout: split_s390x_1_n2.o split_s390x_2_ns.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o split_s390x_n2 split_s390x_1_n2.o split_s390x_2_ns.o > $@ 2>&1 || exit 0
|
|
split_s390x_a1.stdout: split_s390x_1_a1.o split_s390x_2_ns.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o split_s390x_a1 split_s390x_1_a1.o split_s390x_2_ns.o > $@ 2>&1 || exit 0
|
|
split_s390x_a2: split_s390x_1_a2.o split_s390x_2_ns.o ../ld-new
|
|
../ld-new $(SPLIT_DEFSYMS) -o $@ split_s390x_1_a2.o split_s390x_2_ns.o
|
|
split_s390x_a2.stdout: split_s390x_a2
|
|
$(TEST_OBJDUMP) -d $< > $@
|
|
split_s390x_r.stdout: split_s390x_1_z1.o split_s390x_2_ns.o ../ld-new
|
|
../ld-new -r split_s390x_1_z1.o split_s390x_2_ns.o -o split_s390x_r > $@ 2>&1 || exit 0
|
|
MOSTLYCLEANFILES += split_s390_z1 split_s390_z2 split_s390_z3 \
|
|
split_s390_z4 split_s390_n1 split_s390_n2 split_s390_a1 \
|
|
split_s390_a2 split_s390_z1_ns split_s390_z2_ns split_s390_z3_ns \
|
|
split_s390_z4_ns split_s390_n1_ns split_s390_n2_ns split_s390_r \
|
|
split_s390x_z1 split_s390x_z2 split_s390x_z3 split_s390x_z4 \
|
|
split_s390x_n1 split_s390x_n2 split_s390x_a1 split_s390x_a2 \
|
|
split_s390x_z1_ns split_s390x_z2_ns split_s390x_z3_ns \
|
|
split_s390x_z4_ns split_s390x_n1_ns split_s390x_n2_ns split_s390x_r
|
|
|
|
endif DEFAULT_TARGET_S390
|
|
|
|
endif NATIVE_OR_CROSS_LINKER
|
|
|
|
# Tests for the dwp tool.
|
|
# We don't want to rely yet on GCC support for -gsplit-dwarf,
|
|
# so we use (for now) test cases in x86 assembly language,
|
|
# compiled from the dwp_test_*.cc sources.
|
|
|
|
if DEFAULT_TARGET_X86_64
|
|
|
|
dwp_test_main.o: dwp_test_main.s
|
|
$(TEST_AS) -o $@ $<
|
|
dwp_test_1.o: dwp_test_1.s
|
|
$(TEST_AS) -o $@ $<
|
|
dwp_test_1b.o: dwp_test_1b.s
|
|
$(TEST_AS) -o $@ $<
|
|
dwp_test_2.o: dwp_test_2.s
|
|
$(TEST_AS) -o $@ $<
|
|
|
|
dwp_test_main.dwo: dwp_test_main.o
|
|
$(TEST_OBJCOPY) --extract-dwo $< $@
|
|
dwp_test_1.dwo: dwp_test_1.o
|
|
$(TEST_OBJCOPY) --extract-dwo $< $@
|
|
dwp_test_1b.dwo: dwp_test_1b.o
|
|
$(TEST_OBJCOPY) --extract-dwo $< $@
|
|
dwp_test_2.dwo: dwp_test_2.o
|
|
$(TEST_OBJCOPY) --extract-dwo $< $@
|
|
|
|
MOSTLYCLEANFILES += *.dwo *.dwp
|
|
check_SCRIPTS += dwp_test_1.sh
|
|
check_DATA += dwp_test_1.stdout
|
|
dwp_test_1.stdout: dwp_test_1.dwp
|
|
$(TEST_READELF) -wi $< > $@
|
|
dwp_test_1.dwp: ../dwp dwp_test_main.dwo dwp_test_1.dwo dwp_test_1b.dwo dwp_test_2.dwo
|
|
../dwp -o $@ dwp_test_main.dwo dwp_test_1.dwo dwp_test_1b.dwo dwp_test_2.dwo
|
|
|
|
check_SCRIPTS += dwp_test_2.sh
|
|
check_DATA += dwp_test_2.stdout
|
|
dwp_test_2.stdout: dwp_test_2.dwp
|
|
$(TEST_READELF) -wi $< > $@
|
|
dwp_test_2.dwp: ../dwp dwp_test_2a.dwp dwp_test_2b.dwp
|
|
../dwp -o $@ dwp_test_2a.dwp dwp_test_2b.dwp
|
|
dwp_test_2a.dwp: ../dwp dwp_test_main.dwo dwp_test_1.dwo
|
|
../dwp -o $@ dwp_test_main.dwo dwp_test_1.dwo
|
|
dwp_test_2b.dwp: ../dwp dwp_test_1b.dwo dwp_test_2.dwo
|
|
../dwp -o $@ dwp_test_1b.dwo dwp_test_2.dwo
|
|
|
|
endif DEFAULT_TARGET_X86_64
|