diff options
-rw-r--r-- | gdb/ChangeLog | 9 | ||||
-rw-r--r-- | gdb/config.in | 6 | ||||
-rwxr-xr-x | gdb/configure | 26 | ||||
-rw-r--r-- | gdb/configure.ac | 5 | ||||
-rw-r--r-- | gdb/guile/guile.c | 15 |
5 files changed, 61 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index a73b37f..c5ebd2a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2014-07-26 Doug Evans <xdje42@gmail.com> + + PR 17185 + * configure.ac: Add check for header gc/gc.h. + Add check for function setenv. + * configure: Regenerate. + * config.in: Regenerate. + * guile/guile.c (_initialize_guile): Add workaround for libgc 7.4.0. + 2014-07-25 Maciej W. Rozycki <macro@codesourcery.com> * mips-tdep.c (mips_gdbarch_init): Also check the compressed ISA diff --git a/gdb/config.in b/gdb/config.in index 8585b49..fb9b0cd 100644 --- a/gdb/config.in +++ b/gdb/config.in @@ -141,6 +141,9 @@ /* Define if <sys/procfs.h> has fpregset_t. */ #undef HAVE_FPREGSET_T +/* Define to 1 if you have the <gc/gc.h> header file. */ +#undef HAVE_GC_GC_H + /* Define to 1 if you have the `getgid' function. */ #undef HAVE_GETGID @@ -345,6 +348,9 @@ /* Define to 1 if you have the `scm_new_smob' function. */ #undef HAVE_SCM_NEW_SMOB +/* Define to 1 if you have the `setenv' function. */ +#undef HAVE_SETENV + /* Define to 1 if you have the `setlocale' function. */ #undef HAVE_SETLOCALE diff --git a/gdb/configure b/gdb/configure index a4c0a8c..58fa477 100755 --- a/gdb/configure +++ b/gdb/configure @@ -9103,6 +9103,32 @@ fi +# PR 17185, see if we can get the libgc version to see if we need +# to apply the workaround. +for ac_header in gc/gc.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "gc/gc.h" "ac_cv_header_gc_gc_h" "$ac_includes_default" +if test "x$ac_cv_header_gc_gc_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GC_GC_H 1 +_ACEOF + +fi + +done + +for ac_func in setenv +do : + ac_fn_c_check_func "$LINENO" "setenv" "ac_cv_func_setenv" +if test "x$ac_cv_func_setenv" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SETENV 1 +_ACEOF + +fi +done + + # --------------------- # # Check for libmcheck. # # --------------------- # diff --git a/gdb/configure.ac b/gdb/configure.ac index a2ac15f..e348144 100644 --- a/gdb/configure.ac +++ b/gdb/configure.ac @@ -1218,6 +1218,11 @@ fi AC_SUBST(GUILE_CPPFLAGS) AC_SUBST(GUILE_LIBS) +# PR 17185, see if we can get the libgc version to see if we need +# to apply the workaround. +AC_CHECK_HEADERS(gc/gc.h) +AC_CHECK_FUNCS([setenv]) + # --------------------- # # Check for libmcheck. # # --------------------- # diff --git a/gdb/guile/guile.c b/gdb/guile/guile.c index 05dba69..6bc078f 100644 --- a/gdb/guile/guile.c +++ b/gdb/guile/guile.c @@ -35,6 +35,9 @@ #ifdef HAVE_GUILE #include "guile.h" #include "guile-internal.h" +#ifdef HAVE_GC_GC_H +#include <gc/gc.h> /* PR 17185 */ +#endif #endif /* The Guile version we're using. @@ -750,6 +753,18 @@ _initialize_guile (void) side to define module "gdb" which imports "_gdb". There is evidently no similar convention in Guile so we skip this. */ + /* PR 17185 There are problems with using libgc 7.4.0. + Copy over the workaround Guile uses (Guile is working around a different + problem, but the workaround is the same). */ +#if (GC_VERSION_MAJOR == 7 && GC_VERSION_MINOR == 4 && GC_VERSION_MICRO == 0) + /* The bug is only known to appear with pthreads. We assume any system + using pthreads also uses setenv (and not putenv). That is why we don't + have a similar call to putenv here. */ +#if defined (HAVE_SETENV) + setenv ("GC_MARKERS", "1", 1); +#endif +#endif + /* scm_with_guile is the most portable way to initialize Guile. Plus we need to initialize the Guile support while in Guile mode (e.g., called from within a call to scm_with_guile). */ |