From mboxrd@z Thu Jan 1 00:00:00 1970 From: Grant Edwards To: Andrew Cagney Cc: Joel Brenner <"joel".brenner@tchip.com>, gdb@sourceware.cygnus.com Subject: Re: Semihosting output on ARM7TDMI Date: Tue, 14 Aug 2001 09:24:00 -0000 Message-id: <20010814112608.A8586@visi.com> References: <3B791E3D.A993411F@tchip.com> <20010814095805.A8415@visi.com> <3B7944AE.5000902@cygnus.com> <20010814104811.C8472@visi.com> <3B794DA5.5020700@cygnus.com> X-SW-Source: 2001-08/msg00129.html On Tue, Aug 14, 2001 at 12:11:17PM -0400, Andrew Cagney wrote: > > The routines in rdi-remote/hsys.c have no idea that gdb is "up > > there" somewhere. > > > > The RDI file table is in a structure defined like so: > > > > typedef struct { > > FILE *FileTable[HSYS_FOPEN_MAX] ; > > char FileFlags[HSYS_FOPEN_MAX] ; > > char *TempNames[UNIQUETEMPS]; > > } OSblock; > > If you don't route the output from the target through > gdb_stdtarg then people, using GUI's, will complain that their > output disappears or turns up in the wrong place. gdb_stdtarg > captures all output and then passes it through to things like > the console. I understand. But, the RDI stuff isn't aware of gdb, and it would take some work to make it aware. It would be "a good thing" but somebody would have to want it bad enough to actuallly do it. > How you manage to get the output routed to gdb_stdtarg, er, > isn't my problem :-) Nor mine, since I don't use semi-hosting. ;) > > It would be possible to make these routines "gdb aware" but > > they aren't at the moment -- semi-hosting requests are handled > > below the gdb<->RDI interface. > > It isn't so much GDB aware not assume that the world is a UNIX > tty. Right now, the RDI host-end stuff assumes the world is a Unix filesystem and that you have to open any files before you access them. The client-end stuff appears to assume that fd 0 is pre-opened. My three-line hack will (maybe) make accesses to fd 0, 1, 2 translate into accesses to stdin, stdout, and stderr. Whether the user wants to access stdin/stdout/stderr verses the the gdb console is another question. > The theory is the same. remote.c contains a working example of > correctly wired output. It also contains a nasty hack, from > Cygnus/Cisco, to both co-ordinate target output and GDB input. > > How much of that you need for tty UNIX I don't know. I do know > that and a lot more are needed to get GDB handling this > correctly in a GUI environment. It would be nice if the RDI code were made gdb-aware, but I'm aware of no plans to do it. -- Grant Edwards grante@visi.com