diff options
author | Alan Modra <amodra@gmail.com> | 2018-11-02 21:27:02 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2018-11-08 11:20:34 +1030 |
commit | 5acaada74578ee6a902255f0272d5f3115b76309 (patch) | |
tree | 187a45e70537725993df60ab7a434e05f096b023 /gold/Makefile.am | |
parent | 9e49efb79c449852fdb2f727d500d7aba1e449a7 (diff) | |
download | gdb-5acaada74578ee6a902255f0272d5f3115b76309.zip gdb-5acaada74578ee6a902255f0272d5f3115b76309.tar.gz gdb-5acaada74578ee6a902255f0272d5f3115b76309.tar.bz2 |
Make gold testsuite work with CC and CXX specifying -B
The patch allows the gold testsuite to pass when using something like
the following configure line, which works for the rest of the binutils
testsuite. At least, it does if you don't configure your gcc with any
of the options that force a particular path to as or ld.
gccdir="/home/alan/build/gcc/prev-"
gccsrc="/home/alan/src/gcc.git"
gcctarg="x86_64-linux"
CC="${gccdir}gcc/xgcc -B${gccdir}gcc/" \
CXX="${gccdir}gcc/xg++ -B${gccdir}gcc/ -I${gccdir}$gcctarg/libstdc++-v3/include -I${gccdir}$gcctarg/libstdc++-v3/include/$gcctarg -I${gccsrc}/libstdc++-v3/libsupc++ -L${gccdir}$gcctarg/libstdc++-v3/src/.libs/" \
~/src/binutils-gdb/configure ...
gold's -Bgcctestdir/ option must come before the -B supplied by $CC
or $CXX, in order to pick up the linker we want to test. Also when
using a not-yet-installed gcc, it is necessary to provide a collect-ld
in gcctestdir/ as otherwise a collect-ld script in -B${gccdir}gcc/
will be used and the wrong linker tested.
Besides this, the patch fixes some bugs: The $COMPILE -D_FORTIFY_SOURCE
edit was wrong (but worked for usual values), and the $CXXLINK_S edit
unnecessarily but harmlessly used extra backslash quoting. See
posix shell documentation regarding quoting, or
www.gnu.org/software/bash/manual/bashref.html#Command-Substitution
Also, -Bgcctestdir/ in one place makes it less likely a new test will
be added that accidentally lacks the option.
* Makefile.am (gcctestdir1/ld): Use $@ and absolute paths.
(gcctestdir1/collect-ld): New.
(ld1_DEPENDENCIES): Add gcctestdir1/collect-ld.
(ld1_LDFLAGS): Remove -Bgcctestdir1/.
(editcc1, ld1_LINK): Define.
(gcctestdir2/ld, gcctestdir2/collect-ld, ld2_DEPENDENCIES),
(ld2_LDFLAGS, editcc2, ld2_LINK),
(ld1_r_DEPENDENCIES, ld1_r_LDFLAGS, ld1_r_LINK),
(gcctestdir2-r/ld, gcctestdir2-r/collect-ld, ld2_r_DEPENDENCIES),
(ld2_r_LDFLAGS, editcc2r, ld2_r_LINK),
(gcctestdir3/ld, gcctestdir3/collect-ld, ld3_DEPENDENCIES),
(ld3_LDFLAGS, editcc3, ld3_LINK),
(gcctestdir4/ld, gcctestdir4/collect-ld, ld4_DEPENDENCIES),
(ld4_LDFLAGS, editcc4, ld4_LINK): Similarly.
* Makefile.in: Regenerate.
* testsuite/Makefile.am (editcc): Define sed command to put
our -B option first. Remove other occurrences of -Bgcctestdir/
throughout file.
(editcc1): Define for -D_FORTIFY_SOURCE stripping.
(editcc2): Define for -static-libgcc/libstdc++ stripping.
(LINK1, CXXLINK1): Don't use CCLD or CXXLD.
(CCLD, CXXLD, COMPILE, LINK, CXXCOMPILE, CXXLINK, CXXLINK_S): Define
using editcc macros.
(gcctestdir/collect-ld): New rule, add as a dependency of..
(gcctestdir/ld): ..this. Use $@ and abs_top_buildir.
(gcctestdir/as): Use $@.
* testsuite/Makefile.in: Regenerate.
* testsuite/incremental_test.sh (actual): Match collect-ld too.
Diffstat (limited to 'gold/Makefile.am')
-rw-r--r-- | gold/Makefile.am | 75 |
1 files changed, 43 insertions, 32 deletions
diff --git a/gold/Makefile.am b/gold/Makefile.am index fd0a359..dc05b5f 100644 --- a/gold/Makefile.am +++ b/gold/Makefile.am @@ -260,25 +260,29 @@ po/POTFILES.in: @MAINT@ Makefile if GCC if NATIVE_LINKER -gcctestdir1/ld: ld-new +gcctestdir1/ld gcctestdir1/collect-ld: ld-new test -d gcctestdir1 || mkdir -p gcctestdir1 - rm -f gcctestdir1/ld - (cd gcctestdir1 && $(LN_S) ../ld-new ld) + rm -f $@ + $(LN_S) $(abs_top_builddir)/ld-new $@ ld1_SOURCES = $(sources_var) -ld1_DEPENDENCIES = $(deps_var) gcctestdir1/ld +ld1_DEPENDENCIES = $(deps_var) gcctestdir1/ld gcctestdir1/collect-ld ld1_LDADD = $(ldadd_var) -ld1_LDFLAGS = -Bgcctestdir1/ +editcc1 = -e 's/\([^ ]*\)\(.*\)/\1 -Bgcctestdir1\/\2/' +ld1_LINK = `echo $(CXXLD) | sed $(editcc1)`\ + $(AM_CXXFLAGS) $(CXXFLAGS) $(ld1_LDFLAGS) $(LDFLAGS) -o $@ -gcctestdir2/ld: ld1 +gcctestdir2/ld gcctestdir2/collect-ld: ld1 test -d gcctestdir2 || mkdir -p gcctestdir2 - rm -f gcctestdir2/ld - (cd gcctestdir2 && $(LN_S) ../ld1 ld) + rm -f $@ + $(LN_S) $(abs_top_builddir)/ld1 $@ ld2_SOURCES = $(sources_var) -ld2_DEPENDENCIES = $(deps_var) gcctestdir2/ld +ld2_DEPENDENCIES = $(deps_var) gcctestdir2/ld gcctestdir2/collect-ld ld2_LDADD = $(ldadd_var) -ld2_LDFLAGS = -Bgcctestdir2/ +editcc2 = -e 's/\([^ ]*\)\(.*\)/\1 -Bgcctestdir2\/\2/' +ld2_LINK = `echo $(CXXLD) | sed $(editcc2)`\ + $(AM_CXXFLAGS) $(CXXFLAGS) $(ld2_LDFLAGS) $(LDFLAGS) -o $@ bootstrap-test: ld2 rm -f $@ @@ -290,22 +294,25 @@ libgold-1-r.o: gcctestdir1/ld libgold.a gcctestdir1/ld -o $@ -r --whole-archive libgold.a ld1_r_SOURCES = $(sources_var) -ld1_r_DEPENDENCIES = libgold-1-r.o $(deps_var) gcctestdir1/ld +ld1_r_DEPENDENCIES = libgold-1-r.o $(deps_var) gcctestdir1/ld gcctestdir1/collect-ld ld1_r_LDADD = libgold-1-r.o $(ldadd_var) -ld1_r_LDFLAGS = -Bgcctestdir1/ +ld1_r_LINK = `echo $(CXXLD) | sed $(editcc1)`\ + $(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@ -gcctestdir2-r/ld: ld1-r +gcctestdir2-r/ld gcctestdir2-r/collect-ld: ld1-r test -d gcctestdir2-r || mkdir -p gcctestdir2-r - rm -f gcctestdir2-r/ld - (cd gcctestdir2-r && $(LN_S) ../ld1-r ld) + rm -f $@ + $(LN_S) $(abs_top_builddir)/ld1-r $@ libgold-2-r.o: gcctestdir2-r/ld libgold.a gcctestdir2-r/ld -o $@ -r --whole-archive libgold.a ld2_r_SOURCES = $(sources_var) -ld2_r_DEPENDENCIES = libgold-2-r.o $(deps_var) gcctestdir2-r/ld +ld2_r_DEPENDENCIES = libgold-2-r.o $(deps_var) gcctestdir2-r/ld gcctestdir2-r/collect-ld ld2_r_LDADD = libgold-2-r.o $(ldadd_var) -ld2_r_LDFLAGS = -Bgcctestdir2-r/ +editcc2r = -e 's/\([^ ]*\)\(.*\)/\1 -Bgcctestdir2-r\/\2/' +ld2_r_LINK = `echo $(CXXLD) | sed $(editcc2r)`\ + $(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@ bootstrap-test-r: ld2-r rm -f $@ @@ -327,30 +334,34 @@ check_PROGRAMS += ld4 TESTS += bootstrap-test-treehash-chunksize MOSTLYCLEANFILES += bootstrap-test-treehash-chunksize -gcctestdir3/ld: ld-new +gcctestdir3/ld gcctestdir3/collect-ld: ld-new test -d gcctestdir3 || mkdir -p gcctestdir3 - rm -f gcctestdir3/ld - (cd gcctestdir3 && $(LN_S) ../ld-new ld) + rm -f $@ + $(LN_S) $(abs_top_builddir)/ld-new $@ ld3_SOURCES = $(sources_var) -ld3_DEPENDENCIES = $(deps_var) gcctestdir3/ld +ld3_DEPENDENCIES = $(deps_var) gcctestdir3/ld gcctestdir3/collect-ld ld3_LDADD = $(ldadd_var) -ld3_LDFLAGS = -Bgcctestdir3/ +editcc3 = -e 's/\([^ ]*\)\(.*\)/\1 -Bgcctestdir3\/\2/' +ld3_LINK = `echo $(CXXLD) | sed $(editcc3)`\ + $(AM_CXXFLAGS) $(CXXFLAGS) $(ld3_LDFLAGS) $(LDFLAGS) -o $@ -gcctestdir4/ld: ld-new +gcctestdir4/ld gcctestdir4/collect-ld: ld-new test -d gcctestdir4 || mkdir -p gcctestdir4 - rm -f gcctestdir4/ld - (cd gcctestdir4 && $(LN_S) ../ld-new ld) + rm -f $@ + $(LN_S) $(abs_top_builddir)/ld-new $@ ld4_SOURCES = $(sources_var) -ld4_DEPENDENCIES = $(deps_var) gcctestdir4/ld +ld4_DEPENDENCIES = $(deps_var) gcctestdir4/ld gcctestdir4/collect-ld ld4_LDADD = $(ldadd_var) -ld4_LDFLAGS = -Bgcctestdir4/ - -ld1_LDFLAGS += -Wl,--build-id=tree -Wl,--build-id-chunk-size-for-treehash=12345 -Wl,--build-id-min-file-size-for-treehash=0 -ld2_LDFLAGS += -Wl,--build-id=tree -Wl,--build-id-chunk-size-for-treehash=12345 -Wl,--build-id-min-file-size-for-treehash=0 -ld3_LDFLAGS += -Wl,--build-id=tree -Wl,--build-id-chunk-size-for-treehash=12345 -Wl,--build-id-min-file-size-for-treehash=0 -ld4_LDFLAGS += -Wl,--build-id=tree -Wl,--build-id-chunk-size-for-treehash=12346 -Wl,--build-id-min-file-size-for-treehash=0 +editcc4 = -e 's/\([^ ]*\)\(.*\)/\1 -Bgcctestdir4\/\2/' +ld4_LINK = `echo $(CXXLD) | sed $(editcc4)`\ + $(AM_CXXFLAGS) $(CXXFLAGS) $(ld4_LDFLAGS) $(LDFLAGS) -o $@ + +ld1_LDFLAGS = -Wl,--build-id=tree -Wl,--build-id-chunk-size-for-treehash=12345 -Wl,--build-id-min-file-size-for-treehash=0 +ld2_LDFLAGS = -Wl,--build-id=tree -Wl,--build-id-chunk-size-for-treehash=12345 -Wl,--build-id-min-file-size-for-treehash=0 +ld3_LDFLAGS = -Wl,--build-id=tree -Wl,--build-id-chunk-size-for-treehash=12345 -Wl,--build-id-min-file-size-for-treehash=0 +ld4_LDFLAGS = -Wl,--build-id=tree -Wl,--build-id-chunk-size-for-treehash=12346 -Wl,--build-id-min-file-size-for-treehash=0 if THREADS |