tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kgdb on amd64



In article <20150624163947.GA17964%quark.internal.precedence.co.uk@localhost>,
Patrick Welche  <prlw1%cam.ac.uk@localhost> wrote:
>-=-=-=-=-=-
>
>On Wed, Jun 24, 2015 at 04:42:12PM +0100, Patrick Welche wrote:
>> The reason kgdb wasn't working all this time on amd64 is that GETC()
>> returns -1 immediately whether or not a character is available =>
>> all of kgdb's checksums fail due to the extra "-1" characters.
>
>The attached gets us that far.
>(Next the target suffers a lock panic on receipt of a "m" command)
>

How about this?

christos

Index: kgdb_stub.c
===================================================================
RCS file: /cvsroot/src/sys/kern/kgdb_stub.c,v
retrieving revision 1.28
diff -u -u -r1.28 kgdb_stub.c
--- kgdb_stub.c	21 Sep 2014 17:17:15 -0000	1.28
+++ kgdb_stub.c	24 Jun 2015 17:49:54 -0000
@@ -85,8 +85,17 @@
 static u_char buffer[KGDB_BUFLEN];
 static kgdb_reg_t gdb_regs[KGDB_NUMREGS];
 
-#define GETC()	((*kgdb_getc)(kgdb_ioarg))
-#define PUTC(c)	((*kgdb_putc)(kgdb_ioarg, c))
+#define GETC()	kgdb_waitc(kgdb_ioarg)
+#define PUTC(c)	(*kgdb_putc)(kgdb_ioarg, c)
+
+static int
+kgdb_waitc(void *arg)
+{
+	int c;
+	while ((c = (*kgdb_getc)(arg)) == -1)
+		continue;
+	return c;
+}
 
 /*
  * db_trap_callback can be hooked by MD port code to handle special



Home | Main Index | Thread Index | Old Index