aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorH.J. Lu <hongjiu.lu@intel.com>2004-12-15 23:50:26 +0000
committerH.J. Lu <hjl@gcc.gnu.org>2004-12-15 15:50:26 -0800
commit7e9d851708222dd015037a2d7240b58435ac921b (patch)
treeac4b87cfedeee7a5a423ccc6c144c8184c92684a /gcc
parent19fabfe02e374c9c1fa4a7481d5e708a4f5bacbe (diff)
downloadgcc-7e9d851708222dd015037a2d7240b58435ac921b.zip
gcc-7e9d851708222dd015037a2d7240b58435ac921b.tar.gz
gcc-7e9d851708222dd015037a2d7240b58435ac921b.tar.bz2
re PR target/18153 (-static-libgcc links in libunwind.so.7)
2004-12-15 H.J. Lu <hongjiu.lu@intel.com> PR target/18153 * configure.ac: Define HAVE_LD_STATIC_DYNAMIC if linker supports -Bstatic/-Bdynamic option. * config.in: Regenerated. * configure: Likewise. * gcc.c (init_spec): Pass -Bstatic/-Bdynamic to ld for static -lunwind if possible. From-SVN: r92229
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/config.in3
-rwxr-xr-xgcc/configure24
-rw-r--r--gcc/configure.ac19
-rw-r--r--gcc/gcc.c4
5 files changed, 61 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b9160e3..1cdc056 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+2004-12-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/18153
+ * configure.ac: Define HAVE_LD_STATIC_DYNAMIC if linker supports
+ -Bstatic/-Bdynamic option.
+ * config.in: Regenerated.
+ * configure: Likewise.
+
+ * gcc.c (init_spec): Pass -Bstatic/-Bdynamic to ld for static
+ -lunwind if possible.
+
2004-12-15 Daniel Berlin <dberlin@dberlin.org>
* cfgloop.c (flow_loops_dump): Don't print out levels.
diff --git a/gcc/config.in b/gcc/config.in
index daa0459..e3ae22b 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -370,6 +370,9 @@
a read-write section. */
#undef HAVE_LD_RO_RW_SECTION_MIXING
+/* Define if your linker supports -Bstatic/-Bdynamic option. */
+#undef HAVE_LD_STATIC_DYNAMIC
+
/* Define to 1 if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H
diff --git a/gcc/configure b/gcc/configure
index 00ce7c0..2c00052 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -13960,6 +13960,30 @@ fi
# Target-specific assembler checks.
+echo "$as_me:$LINENO: checking linker -Bstatic/-Bdynamic option" >&5
+echo $ECHO_N "checking linker -Bstatic/-Bdynamic option... $ECHO_C" >&6
+gcc_cv_ld_static_dynamic=no
+if test $in_tree_ld = yes ; then
+ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10; then
+ gcc_cv_ld_static_dynamic=yes
+ fi
+elif test x$gcc_cv_ld != x; then
+ # Check if linker supports -Bstatic/-Bdynamic option
+ if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
+ && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
+ gcc_cv_ld_static_dynamic=yes
+ fi
+fi
+if test x"$gcc_cv_ld_static_dynamic" = xyes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LD_STATIC_DYNAMIC 1
+_ACEOF
+
+fi
+echo "$as_me:$LINENO: result: $gcc_cv_ld_static_dynamic" >&5
+echo "${ECHO_T}$gcc_cv_ld_static_dynamic" >&6
+
if test x"$demangler_in_ld" = xyes; then
echo "$as_me:$LINENO: checking linker --demangle support" >&5
echo $ECHO_N "checking linker --demangle support... $ECHO_C" >&6
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 3936aa4..e1d5a23 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -2518,6 +2518,25 @@ fi
# Target-specific assembler checks.
+AC_MSG_CHECKING(linker -Bstatic/-Bdynamic option)
+gcc_cv_ld_static_dynamic=no
+if test $in_tree_ld = yes ; then
+ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10; then
+ gcc_cv_ld_static_dynamic=yes
+ fi
+elif test x$gcc_cv_ld != x; then
+ # Check if linker supports -Bstatic/-Bdynamic option
+ if $gcc_cv_ld --help 2>/dev/null | grep -- -Bstatic > /dev/null \
+ && $gcc_cv_ld --help 2>/dev/null | grep -- -Bdynamic > /dev/null; then
+ gcc_cv_ld_static_dynamic=yes
+ fi
+fi
+if test x"$gcc_cv_ld_static_dynamic" = xyes; then
+ AC_DEFINE(HAVE_LD_STATIC_DYNAMIC, 1,
+[Define if your linker supports -Bstatic/-Bdynamic option.])
+fi
+AC_MSG_RESULT($gcc_cv_ld_static_dynamic)
+
if test x"$demangler_in_ld" = xyes; then
AC_MSG_CHECKING(linker --demangle support)
gcc_cv_ld_demangle=no
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 707ae33..27c3940 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -1715,7 +1715,11 @@ init_spec (void)
"-lgcc",
"-lgcc_eh"
#ifdef USE_LIBUNWIND_EXCEPTIONS
+# ifdef HAVE_LD_STATIC_DYNAMIC
+ " %{!static:-Bstatic} -lunwind %{!static:-Bdynamic}"
+# else
" -lunwind"
+# endif
#endif
);