This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH] Add gold configure options to pass in LDFLAGS and LDADD options for ld-new
- From: simonb at google dot com (Simon Baldwin)
- To: binutils at sourceware dot org, ccoutant at google dot com, iant at google dot com
- Date: Tue, 20 Sep 2011 18:38:22 +0200 (CEST)
- Subject: [PATCH] Add gold configure options to pass in LDFLAGS and LDADD options for ld-new
Add gold configure options to pass in LDFLAGS and LDADD options for ld-new.
Gold plugins written in C++ need to use the same instance of libstcd++ as
that used by gold. One way of handling this is to build gold with a static
libstdc++ and ensure that it exports all the symbols from this library to
plugins. This patch adds --with-gold-ldadd and --with-gold-ldflags to gold's
configure script to allow the appropriate linker flags to be set by configure.
Tested for x86. Okay?
gold/ChangeLog:
2011-09-20 Simon Baldwin <simonb@google.com>
* configure.ac: Add new --with-gold-ldadd and --with-gold-ldflags
configuration options.
* configure: Regenerate.
* Makefile.am: Handle GOLD_LDADD and GOLD_LDFLAGS.
* Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
diff -cr src_orig/gold/Makefile.am src/gold/Makefile.am
*** src_orig/gold/Makefile.am Tue Apr 27 18:05:48 2010
--- src/gold/Makefile.am Tue Sep 20 16:51:38 2011
***************
*** 151,162 ****
sources_var = main.cc
deps_var = $(TARGETOBJS) libgold.a $(LIBIBERTY) $(LIBINTL_DEP)
! ldadd_var = $(TARGETOBJS) libgold.a $(LIBIBERTY) $(LIBINTL) \
$(THREADSLIB) $(LIBDL)
ld_new_SOURCES = $(sources_var)
ld_new_DEPENDENCIES = $(deps_var)
ld_new_LDADD = $(ldadd_var)
EXTRA_ld_new_SOURCES = $(TARGETSOURCES)
--- 151,164 ----
sources_var = main.cc
deps_var = $(TARGETOBJS) libgold.a $(LIBIBERTY) $(LIBINTL_DEP)
! ldadd_var = $(TARGETOBJS) libgold.a $(LIBIBERTY) $(GOLD_LDADD) $(LIBINTL) \
$(THREADSLIB) $(LIBDL)
+ ldflags_var = $(GOLD_LDFLAGS)
ld_new_SOURCES = $(sources_var)
ld_new_DEPENDENCIES = $(deps_var)
ld_new_LDADD = $(ldadd_var)
+ ld_new_LDFLAGS = $(ldflags_var)
EXTRA_ld_new_SOURCES = $(TARGETSOURCES)
diff -cr src_orig/gold/Makefile.in src/gold/Makefile.in
*** src_orig/gold/Makefile.in Wed Sep 14 03:29:01 2011
--- src/gold/Makefile.in Tue Sep 20 17:26:19 2011
***************
*** 101,107 ****
ld_new_OBJECTS = $(am_ld_new_OBJECTS)
am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) libgold.a $(LIBIBERTY) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
! $(am__DEPENDENCIES_1)
@GCC_TRUE@@NATIVE_LINKER_TRUE@am_ld1_OBJECTS = $(am__objects_4)
ld1_OBJECTS = $(am_ld1_OBJECTS)
ld1_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(ld1_LDFLAGS) \
--- 101,109 ----
ld_new_OBJECTS = $(am_ld_new_OBJECTS)
am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) libgold.a $(LIBIBERTY) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
! $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
! ld_new_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(ld_new_LDFLAGS) \
! $(LDFLAGS) -o $@
@GCC_TRUE@@NATIVE_LINKER_TRUE@am_ld1_OBJECTS = $(am__objects_4)
ld1_OBJECTS = $(am_ld1_OBJECTS)
ld1_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(ld1_LDFLAGS) \
***************
*** 251,256 ****
--- 253,260 ----
EXEEXT = @EXEEXT@
GENCAT = @GENCAT@
GMSGFMT = @GMSGFMT@
+ GOLD_LDADD = @GOLD_LDADD@
+ GOLD_LDFLAGS = @GOLD_LDFLAGS@
GREP = @GREP@
INCINTL = @INCINTL@
INSTALL = @INSTALL@
***************
*** 488,499 ****
libgold_a_LIBADD = $(LIBOBJS)
sources_var = main.cc
deps_var = $(TARGETOBJS) libgold.a $(LIBIBERTY) $(LIBINTL_DEP)
! ldadd_var = $(TARGETOBJS) libgold.a $(LIBIBERTY) $(LIBINTL) \
$(THREADSLIB) $(LIBDL)
ld_new_SOURCES = $(sources_var)
ld_new_DEPENDENCIES = $(deps_var)
ld_new_LDADD = $(ldadd_var)
EXTRA_ld_new_SOURCES = $(TARGETSOURCES)
incremental_dump_SOURCES = incremental-dump.cc
incremental_dump_DEPENDENCIES = $(TARGETOBJS) libgold.a $(LIBIBERTY) \
--- 492,505 ----
libgold_a_LIBADD = $(LIBOBJS)
sources_var = main.cc
deps_var = $(TARGETOBJS) libgold.a $(LIBIBERTY) $(LIBINTL_DEP)
! ldadd_var = $(TARGETOBJS) libgold.a $(LIBIBERTY) $(GOLD_LDADD) $(LIBINTL) \
$(THREADSLIB) $(LIBDL)
+ ldflags_var = $(GOLD_LDFLAGS)
ld_new_SOURCES = $(sources_var)
ld_new_DEPENDENCIES = $(deps_var)
ld_new_LDADD = $(ldadd_var)
+ ld_new_LDFLAGS = $(ldflags_var)
EXTRA_ld_new_SOURCES = $(TARGETSOURCES)
incremental_dump_SOURCES = incremental-dump.cc
incremental_dump_DEPENDENCIES = $(TARGETOBJS) libgold.a $(LIBIBERTY) \
***************
*** 601,607 ****
$(CXXLINK) $(incremental_dump_OBJECTS) $(incremental_dump_LDADD) $(LIBS)
ld-new$(EXEEXT): $(ld_new_OBJECTS) $(ld_new_DEPENDENCIES)
@rm -f ld-new$(EXEEXT)
! $(CXXLINK) $(ld_new_OBJECTS) $(ld_new_LDADD) $(LIBS)
ld1$(EXEEXT): $(ld1_OBJECTS) $(ld1_DEPENDENCIES)
@rm -f ld1$(EXEEXT)
$(ld1_LINK) $(ld1_OBJECTS) $(ld1_LDADD) $(LIBS)
--- 607,613 ----
$(CXXLINK) $(incremental_dump_OBJECTS) $(incremental_dump_LDADD) $(LIBS)
ld-new$(EXEEXT): $(ld_new_OBJECTS) $(ld_new_DEPENDENCIES)
@rm -f ld-new$(EXEEXT)
! $(ld_new_LINK) $(ld_new_OBJECTS) $(ld_new_LDADD) $(LIBS)
ld1$(EXEEXT): $(ld1_OBJECTS) $(ld1_DEPENDENCIES)
@rm -f ld1$(EXEEXT)
$(ld1_LINK) $(ld1_OBJECTS) $(ld1_LDADD) $(LIBS)
Only in src/gold: autom4te.cache
diff -cr src_orig/gold/configure src/gold/configure
*** src_orig/gold/configure Wed Sep 14 03:29:01 2011
--- src/gold/configure Tue Sep 20 17:26:17 2011
***************
*** 599,604 ****
--- 599,606 ----
HAVE_ZLIB_TRUE
LIBOBJS
LFS_CFLAGS
+ GOLD_LDADD
+ GOLD_LDFLAGS
WARN_CXXFLAGS
NO_WERROR
WARN_CFLAGS
***************
*** 777,782 ****
--- 779,786 ----
enable_nls
enable_werror
enable_build_warnings
+ with_gold_ldflags
+ with_gold_ldadd
enable_maintainer_mode
'
ac_precious_vars='build_alias
***************
*** 1431,1436 ****
--- 1435,1442 ----
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-sysroot=DIR search for usr/lib et al within DIR
+ --with-gold-ldflags=FLAGS additional link flags for gold
+ --with-gold-ldadd=LIBS additional libraries for gold
Some influential environment variables:
CC C compiler command
***************
*** 6619,6624 ****
--- 6625,6658 ----
WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//' -e 's/-Wshadow//'`
+
+ # Check whether --with-gold-ldflags was given.
+ if test "${with_gold_ldflags+set}" = set; then :
+ withval=$with_gold_ldflags; if test "$withval" = "no" -o "$withval" = "yes"; then
+ GOLD_LDFLAGS=
+ else
+ GOLD_LDFLAGS=$withval
+ fi
+ else
+ GOLD_LDFLAGS=
+ fi
+
+
+
+
+ # Check whether --with-gold-ldadd was given.
+ if test "${with_gold_ldadd+set}" = set; then :
+ withval=$with_gold_ldadd; if test "$withval" = "no" -o "$withval" = "yes"; then
+ GOLD_LDADD=
+ else
+ GOLD_LDADD=$withval
+ fi
+ else
+ GOLD_LDADD=
+ fi
+
+
+
LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
diff -cr src_orig/gold/configure.ac src/gold/configure.ac
*** src_orig/gold/configure.ac Wed Sep 14 03:29:01 2011
--- src/gold/configure.ac Tue Sep 20 17:26:06 2011
***************
*** 409,414 ****
--- 409,434 ----
WARN_CXXFLAGS=`echo ${WARN_CFLAGS} | sed -e 's/-Wstrict-prototypes//' -e 's/-Wmissing-prototypes//' -e 's/-Wshadow//'`
AC_SUBST(WARN_CXXFLAGS)
+ AC_ARG_WITH(gold-ldflags,
+ [ --with-gold-ldflags=FLAGS additional link flags for gold],
+ [if test "$withval" = "no" -o "$withval" = "yes"; then
+ GOLD_LDFLAGS=
+ else
+ GOLD_LDFLAGS=$withval
+ fi],
+ [GOLD_LDFLAGS=])
+ AC_SUBST(GOLD_LDFLAGS)
+
+ AC_ARG_WITH(gold-ldadd,
+ [ --with-gold-ldadd=LIBS additional libraries for gold],
+ [if test "$withval" = "no" -o "$withval" = "yes"; then
+ GOLD_LDADD=
+ else
+ GOLD_LDADD=$withval
+ fi],
+ [GOLD_LDADD=])
+ AC_SUBST(GOLD_LDADD)
+
dnl Force support for large files by default. This may need to be
dnl host dependent. If build == host, we can check getconf LFS_CFLAGS.
LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
diff -cr src_orig/gold/testsuite/Makefile.in src/gold/testsuite/Makefile.in
*** src_orig/gold/testsuite/Makefile.in Wed Sep 14 03:29:01 2011
--- src/gold/testsuite/Makefile.in Tue Sep 20 17:26:19 2011
***************
*** 1797,1802 ****
--- 1797,1804 ----
EXEEXT = @EXEEXT@
GENCAT = @GENCAT@
GMSGFMT = @GMSGFMT@
+ GOLD_LDADD = @GOLD_LDADD@
+ GOLD_LDFLAGS = @GOLD_LDFLAGS@
GREP = @GREP@
INCINTL = @INCINTL@
INSTALL = @INSTALL@