svn commit: r260601 - head/gnu/usr.bin/gdb/kgdb

Marcel Moolenaar marcel at FreeBSD.org
Mon Jan 13 19:08:26 UTC 2014


Author: marcel
Date: Mon Jan 13 19:08:25 2014
New Revision: 260601
URL: http://svnweb.freebsd.org/changeset/base/260601

Log:
  When building a cross-kgdb, suppress the registration of the
  standard core target by declaring coreops_suppress_target with
  initializer. This is also happening for non-cross kgdb, by
  virtue of having fbsd-threads.c in libgdb and having it do the
  exact same thing. Since fbsd-threads.c is not included in in
  libgdb when building a cross debugger, we ended up with more
  than 1 core file targets (the standard gdb core file target and
  kgdb's libkvm based core file target) and this behaves the same
  as not having a core target at all.

Modified:
  head/gnu/usr.bin/gdb/kgdb/trgt.c

Modified: head/gnu/usr.bin/gdb/kgdb/trgt.c
==============================================================================
--- head/gnu/usr.bin/gdb/kgdb/trgt.c	Mon Jan 13 19:02:31 2014	(r260600)
+++ head/gnu/usr.bin/gdb/kgdb/trgt.c	Mon Jan 13 19:08:25 2014	(r260601)
@@ -53,6 +53,18 @@ __FBSDID("$FreeBSD$");
 
 #include "kgdb.h"
 
+#ifdef CROSS_DEBUGGER
+/*
+ * We suppress the call to add_target() of core_ops in corelow.c because if
+ * there are multiple core_stratum targets, the find_core_target() function
+ * won't know which one to return and returns none. We need it to return
+ * our target. We only have to do that when we're building a cross-debugger
+ * because fbsd-threads.c is part of a native debugger and it too defines
+ * coreops_suppress_target with 1 as the initializer.
+ */
+int coreops_suppress_target = 1;
+#endif
+
 static CORE_ADDR stoppcbs;
 
 static void	kgdb_core_cleanup(void *);


More information about the svn-src-all mailing list