This is the mail archive of the
gdb-cvs@sourceware.org
mailing list for the GDB project.
[binutils-gdb/gdb-8.3-branch] Add --with-static-standard-libraries to the top level
- From: Tom de Vries <vries at sourceware dot org>
- To: bfd-cvs at sourceware dot org, gdb-cvs at sourceware dot org
- Date: 19 Sep 2019 14:18:44 -0000
- Subject: [binutils-gdb/gdb-8.3-branch] Add --with-static-standard-libraries to the top level
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ef93dd73bcaefd1736cbc9aaf9a0178be7976b6e
commit ef93dd73bcaefd1736cbc9aaf9a0178be7976b6e
Author: Tom Tromey <tom@tromey.com>
Date: Thu Sep 19 16:18:33 2019 +0200
Add --with-static-standard-libraries to the top level
[ Backport of master commit c1a5d03a89. ]
gdb should normally not be linked with -static-libstdc++. Currently
this has not caused problems, but it's incompatible with catching an
exception thrown from a shared library -- and a subsequent patch
changes gdb to do just this.
This patch adds a new --with-static-standard-libraries flag to the
top-level configure. It defaults to "auto", which means enabled if
gcc is being built, and disabled otherwise.
ChangeLog
2019-08-19 Tom Tromey <tom@tromey.com>
PR gdb/25009
* configure: Rebuild.
* configure.ac: Add --with-static-standard-libraries.
Diff:
---
ChangeLog | 6 ++++++
configure | 24 +++++++++++++++++++++++-
configure.ac | 16 +++++++++++++++-
3 files changed, 44 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index cd631a1..2441f4b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2019-08-19 Tom Tromey <tom@tromey.com>
+
+ PR gdb/25009
+ * configure: Rebuild.
+ * configure.ac: Add --with-static-standard-libraries.
+
2018-06-24 Nick Clifton <nickc@redhat.com>
2.32 branch created.
diff --git a/configure b/configure
index 3747645..0a50081 100755
--- a/configure
+++ b/configure
@@ -802,6 +802,7 @@ with_gmp
with_gmp_include
with_gmp_lib
with_stage1_libs
+with_static_standard_libraries
with_stage1_ldflags
with_boot_libs
with_boot_ldflags
@@ -1572,6 +1573,9 @@ Optional Packages:
--with-gmp-include=PATH specify directory for installed GMP include files
--with-gmp-lib=PATH specify directory for the installed GMP library
--with-stage1-libs=LIBS libraries for stage1
+ --with-static-standard-libraries
+ use -static-libstdc++ and -static-libgcc
+ (default=auto)
--with-stage1-ldflags=FLAGS
linker flags for stage1
--with-boot-libs=LIBS libraries for stage2 and later
@@ -5824,6 +5828,23 @@ fi
+# Whether or not to use -static-libstdc++ and -static-libgcc. The
+# default is yes if gcc is being built; no otherwise. The reason for
+# this default is that gdb is sometimes linked against GNU Source
+# Highlight, which is a shared library that uses C++ exceptions. In
+# this case, -static-libstdc++ will cause crashes.
+
+# Check whether --with-static-standard-libraries was given.
+if test "${with_static_standard_libraries+set}" = set; then :
+ withval=$with_static_standard_libraries;
+else
+ with_static_standard_libraries=auto
+fi
+
+if test "$with_static_standard_libraries" = auto; then
+ with_static_standard_libraries=$have_compiler
+fi
+
# Linker flags to use for stage1 or when not bootstrapping.
# Check whether --with-stage1-ldflags was given.
@@ -5838,7 +5859,8 @@ else
# In stage 1, default to linking libstdc++ and libgcc statically with GCC
# if supported. But if the user explicitly specified the libraries to use,
# trust that they are doing what they want.
- if test "$stage1_libs" = "" -a "$have_static_libs" = yes; then
+ if test "$with_static_standard_libraries" = yes -a "$stage1_libs" = "" \
+ -a "$have_static_libs" = yes; then
stage1_ldflags="-static-libstdc++ -static-libgcc"
fi
fi
diff --git a/configure.ac b/configure.ac
index 46501c2..6cbee2a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1602,6 +1602,19 @@ AC_ARG_WITH(stage1-libs,
[stage1_libs=])
AC_SUBST(stage1_libs)
+# Whether or not to use -static-libstdc++ and -static-libgcc. The
+# default is yes if gcc is being built; no otherwise. The reason for
+# this default is that gdb is sometimes linked against GNU Source
+# Highlight, which is a shared library that uses C++ exceptions. In
+# this case, -static-libstdc++ will cause crashes.
+AC_ARG_WITH(static-standard-libraries,
+[AS_HELP_STRING([--with-static-standard-libraries],
+ [use -static-libstdc++ and -static-libgcc (default=auto)])],
+[], [with_static_standard_libraries=auto])
+if test "$with_static_standard_libraries" = auto; then
+ with_static_standard_libraries=$have_compiler
+fi
+
# Linker flags to use for stage1 or when not bootstrapping.
AC_ARG_WITH(stage1-ldflags,
[AS_HELP_STRING([--with-stage1-ldflags=FLAGS], [linker flags for stage1])],
@@ -1614,7 +1627,8 @@ AC_ARG_WITH(stage1-ldflags,
# In stage 1, default to linking libstdc++ and libgcc statically with GCC
# if supported. But if the user explicitly specified the libraries to use,
# trust that they are doing what they want.
- if test "$stage1_libs" = "" -a "$have_static_libs" = yes; then
+ if test "$with_static_standard_libraries" = yes -a "$stage1_libs" = "" \
+ -a "$have_static_libs" = yes; then
stage1_ldflags="-static-libstdc++ -static-libgcc"
fi])
AC_SUBST(stage1_ldflags)