* 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.
This commit is contained in:
Doug Evans 2009-12-21 20:52:53 +00:00
parent 4ee62156d9
commit 10e86dd778
5 changed files with 40 additions and 1 deletions

View File

@ -1,5 +1,11 @@
2009-12-21 Doug Evans <dje@google.com> 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. * linux-low.c (my_waitpid): Delete unnecessary prototype.
2009-12-18 Doug Evans <dje@google.com> 2009-12-18 Doug Evans <dje@google.com>

View File

@ -15,6 +15,9 @@
don't. */ don't. */
#undef HAVE_DECL_STRERROR #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. */ /* Define if <sys/procfs.h> has elf_fpregset_t. */
#undef HAVE_ELF_FPREGSET_T #undef HAVE_ELF_FPREGSET_T

View File

@ -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 have_errno=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for errno" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for errno" >&5
$as_echo_n "checking for errno... " >&6; } $as_echo_n "checking for errno... " >&6; }

View File

@ -1,5 +1,5 @@
dnl Autoconf configure script for GDB server. 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 Free Software Foundation, Inc.
dnl dnl
dnl This file is part of GDB. 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_CHECK_FUNCS(pread pwrite pread64)
AC_REPLACE_FUNCS(memmem) 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 have_errno=no
AC_MSG_CHECKING(for errno) AC_MSG_CHECKING(for errno)
AC_TRY_LINK([ AC_TRY_LINK([

View File

@ -596,6 +596,8 @@ try_thread_db_load_1 (void *handle)
return 1; return 1;
} }
#ifdef HAVE_DLADDR
/* Lookup a library in which given symbol resides. /* Lookup a library in which given symbol resides.
Note: this is looking in the GDBSERVER process, not in the inferior. Note: this is looking in the GDBSERVER process, not in the inferior.
Returns library name, or NULL. */ Returns library name, or NULL. */
@ -610,6 +612,8 @@ dladdr_to_soname (const void *addr)
return NULL; return NULL;
} }
#endif
static int static int
try_thread_db_load (const char *library) try_thread_db_load (const char *library)
{ {
@ -626,6 +630,7 @@ try_thread_db_load (const char *library)
return 0; return 0;
} }
#ifdef HAVE_DLADDR
if (debug_threads && strchr (library, '/') == NULL) if (debug_threads && strchr (library, '/') == NULL)
{ {
void *td_init; void *td_init;
@ -640,6 +645,7 @@ try_thread_db_load (const char *library)
library, libpath); library, libpath);
} }
} }
#endif
if (try_thread_db_load_1 (handle)) if (try_thread_db_load_1 (handle))
return 1; return 1;