This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] Smaller gdb: -rdynamic -> -Wl,--dynamic-list


On Tue, 15 Jun 2010 19:31:01 +0200, Tom Tromey wrote:
> >>>>> "Andreas" == Andreas Schwab <schwab@linux-m68k.org> writes:
> 
> Andreas> 2010-06-13  Andreas Schwab  <schwab@linux-m68k.org>
> Andreas> 	* configure.ac: Check for RDYNAMIC also for cross builds.
> Andreas> 	* configure: Regenerate.
> 
> This is ok.  Thanks.

A patch on top of this one is attached.

Original code had `-rdynamic' hardcoded in the .mh files.  .mh files get
included iff we have ${gdb_native}.  It means two things:

(1) The `-rdynamic' upgrade to `-Wl,--dynamic-list' makes sense only iff
    we have ${gdb_native}.

(2) Iff we have ${gdb_native} we should always provide at least `-rdynamic'.
    Current code with my change for non-$GCC configurations provided empty
    RDYNAMIC and thus breaking non-$GCC threading support.
    (OTOH there is a notice -rdynamic' is required only for $GCC thus probably
    nothing got broken.)

Moreover as the functionality is really tested (by either AC_RUN_IFELSE or
AC_TRY_LINK) it should not be needed to check $GCC.  On non-$GCC the
functionality test should always fail anyway.  Removed the $GCC check.

This patch is more a cleanup only / safer change from the original code before
`-Wl,--dynamic-list' introduction.  I am not aware on which configuration this
patch below can change anything.  No problem dropping it.

Tested build on x86_64-fedora13-linux-gnu and x86_64-rhel4-linux-gnu.


Thanks,
Jan


2010-06-15  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* configure.ac: Always set RDYNAMIC at least as `-rdynamic'.
	* configure: Regenerate.

--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -1453,54 +1453,47 @@ aix*)
   ;;
 esac
 
+AC_MSG_CHECKING(for the dynamic export flag)
+dynamic_list=false
 if test "${gdb_native}" = yes; then
-   if test "$GCC" = "yes" ; then
-      # The dynamically loaded libthread_db needs access to symbols in the gdb
-      # executable.  Older GNU ld supports --export-dynamic but --dynamic-list
-      # may not be supported there.
-      AC_MSG_CHECKING(for the dynamic export flag)
-      old_LDFLAGS="$LDFLAGS"
-      # Older GNU ld supports --export-dynamic but --dynamic-list it does not.
-      RDYNAMIC="-Wl,--dynamic-list=${srcdir}/proc-service.list"
-      LDFLAGS="$LDFLAGS $RDYNAMIC"
-      dynamic_list=false
-      if test "${have_libpython}" = no; then
-	AC_TRY_LINK([], [], [dynamic_list=true])
-      else
-	# Workaround http://bugs.python.org/issue4434 where static
-	# libpythonX.Y.a would get its symbols required for
-	# pythonX.Y/lib-dynload/*.so modules hidden by -Wl,--dynamic-list.
-	# Problem does not happen for the recommended libpythonX.Y.so linkage.
-	old_CFLAGS="$CFLAGS"
-	CFLAGS="$CFLAGS $PYTHON_CFLAGS"
-	AC_RUN_IFELSE(
-	  AC_LANG_PROGRAM(
-	    [#include "]${have_libpython}[/Python.h"],
-	    [int err;
-	     Py_Initialize ();
-	     err = PyRun_SimpleString ("import itertools\n");
-	     Py_Finalize ();
-	     return err == 0 ? 0 : 1;]),
-	  [dynamic_list=true], [], [true])
-	CFLAGS="$old_CFLAGS"
-      fi
-      if $dynamic_list;then
-	found="-Wl,--dynamic-list"
-	RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'
-      else
-	RDYNAMIC="-rdynamic"
-	LDFLAGS="$old_LDFLAGS $RDYNAMIC"
-	AC_TRY_LINK([], [],
-		    [found="-rdynamic"],
-		    [found="no"
-		     # Error on its usage by .mh file.
-		     RDYNAMIC="no-rdynamic-available"])
-      fi
-      AC_SUBST(RDYNAMIC)
-      LDFLAGS="$old_LDFLAGS"
-      AC_MSG_RESULT($found)
+   # The dynamically loaded libthread_db needs access to symbols in the gdb
+   # executable.  Older GNU ld supports --export-dynamic but --dynamic-list
+   # may not be supported there.
+   old_LDFLAGS="$LDFLAGS"
+   # Older GNU ld supports --export-dynamic but --dynamic-list it does not.
+   RDYNAMIC="-Wl,--dynamic-list=${srcdir}/proc-service.list"
+   LDFLAGS="$LDFLAGS $RDYNAMIC"
+   if test "${have_libpython}" = no; then
+     AC_TRY_LINK([], [], [dynamic_list=true])
+   else
+     # Workaround http://bugs.python.org/issue4434 where static
+     # libpythonX.Y.a would get its symbols required for
+     # pythonX.Y/lib-dynload/*.so modules hidden by -Wl,--dynamic-list.
+     # Problem does not happen for the recommended libpythonX.Y.so linkage.
+     old_CFLAGS="$CFLAGS"
+     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
+     AC_RUN_IFELSE(
+       AC_LANG_PROGRAM(
+         [#include "]${have_libpython}[/Python.h"],
+         [int err;
+          Py_Initialize ();
+          err = PyRun_SimpleString ("import itertools\n");
+          Py_Finalize ();
+          return err == 0 ? 0 : 1;]),
+       [dynamic_list=true], [], [true])
+     CFLAGS="$old_CFLAGS"
    fi
+   LDFLAGS="$old_LDFLAGS"
+fi
+if $dynamic_list; then
+  found="-Wl,--dynamic-list"
+  RDYNAMIC='-Wl,--dynamic-list=$(srcdir)/proc-service.list'
+else
+  found="-rdynamic"
+  RDYNAMIC="-rdynamic"
 fi
+AC_SUBST(RDYNAMIC)
+AC_MSG_RESULT($found)
 
 dnl For certain native configurations, we need to check whether thread
 dnl support can be built in or not.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]