On Tue, Dec 10, 2002 at 07:19:16PM +0000, Nigel Stephens wrote: > > On Tue, Dec 10, 2002 at 01:07:31PM +0100, Carsten Langgaard wrote: > > > > > I've attached a patch for gdb-stub.c to make it work better with the > > > sde-gdb. > > > These changes should be backwards compatible with a standard gdb, so it > > > shouldn't break anything. > > > Ralf, could you please apply it. > > > > > > Strongly object. While I didn't check the implementation, it's nice to > > see 'X' implemented. And P. But what the heck is this? > > > > > > > @@ -816,13 +839,64 @@ > > > case 'k' : > > > break; /* do nothing */ > > > > > > + case 'R': > > > + /* RNN[:SS], Set the value of CPU register NN (size SS) */ > > > + /* FALL THROUGH */ > > > > > > > - /* > > > - * Reset the whole machine (FIXME: system dependent) > > > - */ > > > case 'r': > > > - break; > > > + /* rNN[:SS] Return the value of CPU register NN (size SS) */ > > > > > > > > We're not making up a protocol here, we're implementing one. R and r > > don't have anything to do with setting registers. > > Hi Dan > > Actually Carsten *is* trying to implement a protocol, it's just that > it's an extension to the gdb remote debug protocol, as used in our > SDE-MIPS toolchain (viz sde-gdb). Algorithmics (now MIPS Technologies > UK), always extended the gdb remote debug protocol to support reading > and writing of single registers, and to support variable register > sizes (to allow a 64-bit debug stub to inter-work with gdb debugging a > 32-bit application). My point is that we implement the GDB protocol, for use with GDB - implementing random extensions to it is not a good idea. I would strongly prefer these extensions be discussed on the GDB list before you try adding them to the CVS tree. Also, I bet Andrew has a different idea of how the 64/32 thing ought to work than you do. He's the remote protocol maintainer. These things should be planned on the GDB side before making yet more stubs use them. > When we first implemented these extensions we used the 'R' command to > write a single register, and 'r' to read one (they weren't then used > by gdb). Since then the remote protocol has gained the 'P' command to 'R' was added in 1995 according to my records. Really? > write a single register, so we no longer use 'R' - and it would be > dangerous to do so since it can restart the target (so you can get rid > of the special 'R' case, Carsten). > > But the standard gdb remote protocol still doesn't have the ability to > read a single register, so I believe that 'r' (or something like it) > is a useful addition, which speeds up the remote protocol > significantly when running over a serial line. And it won't break the > kernel to add support for this extension. The protocol does, actually. GDB doesn't _implement_ it, but the extension is documented in the manual ('p') and I wouldn't be surprised if Red Hat actually had an implementation somewhere. I recommend the documentation of the protocol, on the GDB web site. Also note that `R' is extended restart process; the manual lists `r' as "restart entire target system". I don't know when that was used but it's reason enough to stay away from using that letter to read a register. -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer