* configure.ac: Check for dladdr.
authorDoug Evans <dje@google.com>
Mon, 21 Dec 2009 20:52:53 +0000 (20:52 +0000)
committerDoug Evans <dje@google.com>
Mon, 21 Dec 2009 20:52:53 +0000 (20:52 +0000)
* config.in: Regenerate.
* configure: Regenerate.
* thread-db.c (dladdr_to_soname): Only define ifdef HAVE_DLADDR.
(try_thread_db_load): Update.

gdb/gdbserver/ChangeLog
gdb/gdbserver/config.in
gdb/gdbserver/configure
gdb/gdbserver/configure.ac
gdb/gdbserver/thread-db.c

index 0222594bd6b41074f35cc60b688fb0a7ae121aa9..6cd1b792a3c68a97bb27ba8cf4a1851a64be05f0 100644 (file)
@@ -1,5 +1,11 @@
 2009-12-21  Doug Evans  <dje@google.com>
 
+       * configure.ac: Check for dladdr.
+       * config.in: Regenerate.
+       * configure: Regenerate.
+       * thread-db.c (dladdr_to_soname): Only define ifdef HAVE_DLADDR.
+       (try_thread_db_load): Update.
+
        * linux-low.c (my_waitpid): Delete unnecessary prototype.
 
 2009-12-18  Doug Evans  <dje@google.com>
index 7c8996631f6b94744a19396c52cad4c2368c9015..2096cfab6bc35eb73ec85819556d66875cea77a8 100644 (file)
@@ -15,6 +15,9 @@
    don't. */
 #undef HAVE_DECL_STRERROR
 
+/* Define to 1 if you have the `dladdr' function. */
+#undef HAVE_DLADDR
+
 /* Define if <sys/procfs.h> has elf_fpregset_t. */
 #undef HAVE_ELF_FPREGSET_T
 
index 93aeb780d64cd3065271a3fb3534be853da7aa8f..47bd81a1c404bb46482ab6bdda9d3eaaff87e619 100755 (executable)
@@ -3816,6 +3816,21 @@ done
 
 
 
+old_LIBS="$LIBS"
+LIBS="$LIBS -ldl"
+for ac_func in dladdr
+do :
+  ac_fn_c_check_func "$LINENO" "dladdr" "ac_cv_func_dladdr"
+if test "x$ac_cv_func_dladdr" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLADDR 1
+_ACEOF
+
+fi
+done
+
+LIBS="$old_LIBS"
+
 have_errno=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for errno" >&5
 $as_echo_n "checking for errno... " >&6; }
index 215387dff4accf5f8ad01874bfe246a34b1fd018..6fea6950a9d9ef614550c5e4c92e26071bd9b63f 100644 (file)
@@ -1,5 +1,5 @@
 dnl Autoconf configure script for GDB server.
-dnl Copyright (C) 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+dnl Copyright (C) 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
 dnl Free Software Foundation, Inc.
 dnl
 dnl This file is part of GDB.
@@ -45,6 +45,15 @@ AC_CHECK_HEADERS(sgtty.h termio.h termios.h sys/reg.h string.h dnl
 AC_CHECK_FUNCS(pread pwrite pread64)
 AC_REPLACE_FUNCS(memmem)
 
+dnl dladdr is glibc-specific.  It is used by thread-db.c but only for
+dnl debugging messages.  It lives in -ldl which is handled below so we don't
+dnl use AC_CHECK_LIB (or AC_SEARCH_LIBS) here.  Instead we just temporarily
+dnl augment LIBS.
+old_LIBS="$LIBS"
+LIBS="$LIBS -ldl"
+AC_CHECK_FUNCS(dladdr)
+LIBS="$old_LIBS"
+
 have_errno=no
 AC_MSG_CHECKING(for errno)
 AC_TRY_LINK([
index f27308263f4ed6e8bf18fcd7c3fad9a832e9104c..e169a50f3e5517bbe11d08e38ca271a448771ef1 100644 (file)
@@ -596,6 +596,8 @@ try_thread_db_load_1 (void *handle)
   return 1;
 }
 
+#ifdef HAVE_DLADDR
+
 /* Lookup a library in which given symbol resides.
    Note: this is looking in the GDBSERVER process, not in the inferior.
    Returns library name, or NULL.  */
@@ -610,6 +612,8 @@ dladdr_to_soname (const void *addr)
   return NULL;
 }
 
+#endif
+
 static int
 try_thread_db_load (const char *library)
 {
@@ -626,6 +630,7 @@ try_thread_db_load (const char *library)
       return 0;
     }
 
+#ifdef HAVE_DLADDR
   if (debug_threads && strchr (library, '/') == NULL)
     {
       void *td_init;
@@ -640,6 +645,7 @@ try_thread_db_load (const char *library)
                     library, libpath);
        }
     }
+#endif
 
   if (try_thread_db_load_1 (handle))
     return 1;