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]

[PATCH][COMMITTED] Fix pr 17367


Hi.

This patch fixes PR 17367.
https://sourceware.org/bugzilla/show_bug.cgi?id=17367

Guile 2.2 now compiles to ELF files, and I was noticing gdb complaining
when starting up.

Exception caught while booting Guile.
Error in function "load-thunk-from-memory":
not an ELF file
./gdb: warning: Could not complete Guile gdb module initialization from:
/hack/gnu/sourceware/gdb-guile/b-sigchld-prep-git-guile-gc74/gdb/data-directory/guile/gdb/boot.scm.

I traced this to the wrong guild program being used.
guild should come from the specified guile distribution,
but /bin/guild was being used instead (which is guile 2.0).

Regression tested on amd64-linux with guile 2.0.11 and guile trunk.

2014-09-09  Doug Evans  <xdje42@gmail.com>

	PR guile/17367
	* acinclude.m4 (GDB_GUILE_PROGRAM_NAMES): Pass guile version as
	last parameter to pkg-config, not first.
	* configure.ac: Pass --with-guile provided pkg-config path to
	GDB_GUILE_PROGRAM_NAMES.
	* configure: Regenerate.

diff --git a/gdb/acinclude.m4 b/gdb/acinclude.m4
index 2b46f73..3ff5155 100644
--- a/gdb/acinclude.m4
+++ b/gdb/acinclude.m4
@@ -478,14 +478,14 @@ dnl similar to Guile's 'GUILE_PROGS' macro.)
 AC_DEFUN([GDB_GUILE_PROGRAM_NAMES], [
   AC_CACHE_CHECK([for the absolute file name of the 'guild' command],
     [ac_cv_guild_program_name],
-    [ac_cv_guild_program_name="`$1 $2 --variable guild`"
+    [ac_cv_guild_program_name="`$1 --variable guild $2`"
 
      # In Guile up to 2.0.11 included, guile-2.0.pc would not define
      # the 'guild' and 'bindir' variables.  In that case, try to guess
      # what the program name is, at the risk of getting it wrong if
      # Guile was configured with '--program-suffix' or similar.
      if test "x$ac_cv_guild_program_name" = "x"; then
-       guile_exec_prefix="`$1 $2 --variable exec_prefix`"
+       guile_exec_prefix="`$1 --variable exec_prefix $2`"
        ac_cv_guild_program_name="$guile_exec_prefix/bin/guild"
      fi
   ])
diff --git a/gdb/configure.ac b/gdb/configure.ac
index ab7b1c2..4f5fb7b 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -1143,8 +1143,9 @@ dnl        It could be a shell script.  It is invoked as:
 dnl        pkg-config --exists $version
 dnl        pkg-config --cflags $version
 dnl        pkg-config --libs $version
-dnl        $version will be the default guile version (currently guile-2.0),
-dnl        but the program is free to ignore this.
+dnl        pkg-config --variable guild $version
+dnl        The script will be called with $version having each value in
+dnl        $try_guile_versions until --exists indicates success.
 
 AC_ARG_WITH(guile,
   AS_HELP_STRING([--with-guile@<:@=GUILE@:>@], [include guile support (auto/yes/no/<guile-version>/<pkg-config-program>)]),
@@ -1196,7 +1197,14 @@ esac
 
 if test "${have_libguile}" != no; then
   dnl Get the name of the 'guild' program.
-  GDB_GUILE_PROGRAM_NAMES(["${pkg_config_prog_path}"], ["${guile_version}"])
+  case "${with_guile}" in
+  [[\\/]]* | ?:[[\\/]]*)
+    GDB_GUILE_PROGRAM_NAMES(["${with_guile}"], ["${guile_version}"])
+    ;;
+  *)
+    GDB_GUILE_PROGRAM_NAMES(["${pkg_config_prog_path}"], ["${guile_version}"])
+    ;;
+  esac
 
   dnl Make sure guild can handle this host.
   GDB_TRY_GUILD([$srcdir/guile/lib/gdb/support.scm])


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