Re: Semihosting output on ARM7TDMI

Grant Edwards
2001-08-14T09:24:00Z

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.