Add 'getthrds' declaration check in configure for AIX
authorJoel Brobecker <brobecker@gnat.com>
Thu, 17 Mar 2011 13:19:10 +0000 (13:19 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Thu, 17 Mar 2011 13:19:10 +0000 (13:19 +0000)
On newer versions of AIX (6.x and later), this function is actually
declared in procinfo.h, thus causing a compilation warning when we
re-declare it ourselves. This patch adds a configure check for that
function allowing us to declare the function only if the declaration
isn't already present in one of procinfo system header.

gdb/ChangeLog:

        PR gdb/12116:
        * configure.ac: Add getthrds declaration check.
        * configure, config.in: Regenerate.
        * aix-thread.c (getthrds): Declare only if not already declared
        in procinfo.h.  More declaration out of get_signaled_thread to
        global scope.

gdb/ChangeLog
gdb/aix-thread.c
gdb/config.in
gdb/configure
gdb/configure.ac

index 9645394a3ac95d56c65da4d38968a531fa7359f9..67fed20c88a3d1eda935bcccbe53e5012099ef5a 100644 (file)
@@ -1,3 +1,12 @@
+2011-03-17  Joel Brobecker  <brobecker@gnat.com>
+
+       PR gdb/12116:
+       * configure.ac: Add getthrds declaration check.
+       * configure, config.in: Regenerate.
+       * aix-thread.c (getthrds): Declare only if not already declared
+       in procinfo.h.  More declaration out of get_signaled_thread to
+       global scope.
+
 2011-03-17  Phil Muldoon  <pmuldoon@redhat.com>
 
        * python/py-symtab.c: Populate symtab_object_methods,
index 37b798a43ba61306d714d711865a7c0e892ce19d..c5db262e1f67b3c0d69e230adb0c25d13ab8aad0 100644 (file)
 #include <sched.h>
 #include <sys/pthdebug.h>
 
+#if !HAVE_DECL_GETTHRDS
+extern int getthrds (pid_t, struct thrdsinfo64 *, int, pthdb_tid_t *, int);
+#endif
+
 /* Whether to emit debugging output.  */
 static int debug_aix_thread;
 
@@ -647,10 +651,6 @@ get_signaled_thread (void)
   pthdb_tid_t ktid = 0;
   int result = 0;
 
-  /* getthrds(3) isn't prototyped in any AIX 4.3.3 #include file.  */
-  extern int getthrds (pid_t, struct thrdsinfo64 *, 
-                      int, pthdb_tid_t *, int);
-
   while (1)
   {
     if (getthrds (PIDGET (inferior_ptid), &thrinf, 
index ccceabf96c91fc96e036d31ec870fdab020589df..01ba750ebda74c31f7922cbb99465febb56d48fb 100644 (file)
    */
 #undef HAVE_DECL_GETOPT
 
+/* Define to 1 if you have the declaration of `getthrds', and to 0 if you
+   don't. */
+#undef HAVE_DECL_GETTHRDS
+
 /* Define to 1 if you have the declaration of `malloc', and to 0 if you don't.
    */
 #undef HAVE_DECL_MALLOC
index 5ee5ce6db49e9f6f22d80d1898fcba31fdd55342..92818a0a0e00d0d9994b6ed59526146be2eaefb2 100755 (executable)
@@ -14487,6 +14487,22 @@ $as_echo "$gdb_cv_have_aix_thread_debug" >&6; }
          CONFIG_SRCS="${CONFIG_SRCS} aix-thread.c"
          CONFIG_OBS="${CONFIG_OBS} aix-thread.o"
          CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -lpthdebug"
+
+         # Older versions of AIX do not provide the declaration for
+         # the getthrds function (it appears that it was introduced
+         # with AIX 6.x).
+         ac_fn_c_check_decl "$LINENO" "getthrds" "ac_cv_have_decl_getthrds" "#include <procinfo.h>
+"
+if test "x$ac_cv_have_decl_getthrds" = x""yes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETTHRDS $ac_have_decl
+_ACEOF
+
       fi
       ;;
    esac
index d2b75f637526113dc2eef744139ffe5ae4ec8a1d..96e0a7b79bc023a1031fe7ef510979ea48e1f62e 100644 (file)
@@ -1593,6 +1593,11 @@ if test ${build} = ${host} -a ${host} = ${target} ; then
          CONFIG_SRCS="${CONFIG_SRCS} aix-thread.c"
          CONFIG_OBS="${CONFIG_OBS} aix-thread.o"
          CONFIG_LDFLAGS="${CONFIG_LDFLAGS} -lpthdebug"
+
+         # Older versions of AIX do not provide the declaration for
+         # the getthrds function (it appears that it was introduced
+         # with AIX 6.x).
+         AC_CHECK_DECLS(getthrds, [], [], [[#include <procinfo.h>]])
       fi
       ;;
    esac