This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: Adding-new-target difficulties
- From: Andrew Cagney <cagney at gnu dot org>
- To: Andrew Batchelor <A dot C dot Batchelor-99 at student dot lboro dot ac dot uk>
- Cc: GDB Newsgroup <gdb at sources dot redhat dot com>
- Date: Wed, 26 Nov 2003 09:56:09 -0500
- Subject: Re: Adding-new-target difficulties
- References: <1069856145.1130.292.camel@And.Linux>
Hello,
[Note: I'm adding support for ARMs RealView ICE to GDB]
I'm trying to add a new target to GDB, but I'm not sure whether
following the procedure in the user guide is going to give me what I
want. Is there a more straightforward way?
I need a new target which allows me to communicate via tcp/ip but allows
me to change the Remote Serial Protocol to RV-MSG (RealView Protocol).
The different protocol affects everything device; connect/disconnection,
code loading, breakpoints, etc.
(GDB's remote serial protocol?)
It sounds like you're trying to on-the-fly replace one target stack
(gdb's remote) with a second (your protocol)?
Could you hack your new target (that used serial for tcp communication)
fudge enough GDB remote protocol commands to trigger the mode switch?
Where exactly does GDB spit stuff out for a TCP/IP connection? I've
been looking at remote.c and serial.c which seems to have functions
related to it and another that looks promising is ser-tcp.c. Could I
simply add a switch to the command 'target remote host?' Or add a case
clause that detects if the hostname is 'RV-ICE' or something? I could
perhaps then branch off to my code, calling GDB functions as and when?
Normally new remote targets are added as new commands vis:
target remote
target m32r
target pmon
target ...
this occures because the target*.c file has registered itself (see the
_initialize function). When the user enters "target ..." the
corresponding ..._target_open being called. After that it is a case of
working through each of the vectors implementing those that are needed.
For the transport, yes serial.[hc] is used.
You may also want to look at the async code - it lets you implement
things in a more event driven style.
Andrew