From: Fernando Nasser <fnasser@redhat.com>
To: James Lemke <jim@wasabisystems.com>
Cc: insight@sourceware.org
Subject: Re: RFC: patch for insight & target stdin
Date: Wed, 11 May 2005 14:01:00 -0000 [thread overview]
Message-ID: <42820FE7.8020702@redhat.com> (raw)
In-Reply-To: <1115757946.24600.25.camel@keel.thelemkes.ca>
Hi Jim,
The reason I left this out was because it breaks on Windows (Cygwin), at
least the code I had at the time broke with the Cygwin of that time...
We need someone to test this on a Windows machine and see what happens.
Cheers,
Fernando
James Lemke wrote:
> I had a customer complaint about insight, that target programs could
> write to stdout but not read from stdin. On Linux, stdout went to the
> console window and stdin came from the launch shell. On Windows stdout
> went to the console window and stdin just failed with EBADF.
>
> Apparently this was never implemented, so I made an attempt. Reads from
> stdin now come from the console window. This has been tested with
> x86-linux x xscale-elf and cygwin x xscale-elf.
>
> I don't know gdb / gdbtk implementation well, so I'm open to comments.
>
> Jim.
>
>
>
> ------------------------------------------------------------------------
>
> Index: ChangeLog
> ===================================================================
> RCS file: /cvs/src/src/gdb/gdbtk/ChangeLog,v
> retrieving revision 1.362
> diff -u -p -r1.362 ChangeLog
> --- ChangeLog 28 Apr 2005 23:45:06 -0000 1.362
> +++ ChangeLog 10 May 2005 20:13:42 -0000
> @@ -1,3 +1,10 @@
> +2005-05-10 James Lemke <jim@wasabisystems.com>
> +
> + * generic/gdbtk-hooks.c (gdbtk_fileopenin, gdbtk_read): New functions
> + for target to read stdin from console window.
> + * generic/gdbtk-interp.c (_stdtargin): Added.
> + * generic/gdbtk.h (gdbtk_fileopenin): Add declaration.
> +
> 2005-04-28 Ben Elliston <bje@au.ibm.com>
>
> * generic/gdbtk-interp.c (gdbtk_interpreter_exec): Return struct
> Index: generic/gdbtk-hooks.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/gdbtk/generic/gdbtk-hooks.c,v
> retrieving revision 1.39
> diff -u -p -r1.39 gdbtk-hooks.c
> --- generic/gdbtk-hooks.c 13 Dec 2004 20:42:20 -0000 1.39
> +++ generic/gdbtk-hooks.c 10 May 2005 20:13:42 -0000
> @@ -105,6 +105,7 @@ static void gdbtk_set_hook (struct cmd_l
> * See note there for details.
> */
>
> +long gdbtk_read (struct ui_file *, char *, long);
> void gdbtk_fputs (const char *, struct ui_file *);
> static int gdbtk_load_hash (const char *, unsigned long);
>
> @@ -220,6 +221,14 @@ gdbtk_two_elem_cmd (cmd_name, argv1)
> }
>
> struct ui_file *
> +gdbtk_fileopenin (void)
> +{
> + struct ui_file *file = ui_file_new ();
> + set_ui_file_read (file, gdbtk_read);
> + return file;
> +}
> +
> +struct ui_file *
> gdbtk_fileopen (void)
> {
> struct ui_file *file = ui_file_new ();
> @@ -227,6 +236,42 @@ gdbtk_fileopen (void)
> return file;
> }
>
> +/* This handles input from the gdb console.
> + */
> +
> +long
> +gdbtk_read (struct ui_file *stream, char *buf, long sizeof_buf)
> +{
> + int result;
> + size_t actual_len;
> +
> + if (stream == gdb_stdtargin)
> + {
> + result = Tcl_Eval (gdbtk_interp, "gdbtk_console_read");
> + if (result != TCL_OK)
> + {
> + report_error ();
> + actual_len = 0;
> + }
> + else
> + actual_len = strlen (gdbtk_interp->result);
> +
> + /* Truncate the string if it is too big for the caller's buffer. */
> + if (actual_len >= sizeof_buf)
> + actual_len = sizeof_buf - 1;
> +
> + memcpy (buf, gdbtk_interp->result, actual_len);
> + buf[actual_len] = '\0';
> + return actual_len;
> + }
> + else
> + {
> + errno = EBADF;
> + return 0;
> + }
> +}
> +
> +
> /* This handles all the output from gdb. All the gdb printf_xxx functions
> * eventually end up here. The output is either passed to the result_ptr
> * where it will go to the result of some gdbtk command, or passed to the
> Index: generic/gdbtk-interp.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/gdbtk/generic/gdbtk-interp.c,v
> retrieving revision 1.6
> diff -u -p -r1.6 gdbtk-interp.c
> --- generic/gdbtk-interp.c 28 Apr 2005 23:45:07 -0000 1.6
> +++ generic/gdbtk-interp.c 10 May 2005 20:13:42 -0000
> @@ -43,6 +43,7 @@ struct gdbtk_interp_data
> struct ui_file *_stderr;
> struct ui_file *_stdlog;
> struct ui_file *_stdtarg;
> + struct ui_file *_stdtargin;
> };
>
> static struct gdbtk_interp_data *gdbtk_data;
> @@ -83,6 +84,7 @@ gdbtk_interpreter_resume (void *data)
> gdb_stderr = d->_stderr;
> gdb_stdlog = d->_stdlog;
> gdb_stdtarg = d->_stdtarg;
> + gdb_stdtargin = d->_stdtargin;
>
> deprecated_command_loop_hook = gdbtk_command_loop;
>
> @@ -172,6 +174,7 @@ _initialize_gdbtk_interp (void)
> gdbtk_data->_stderr = gdbtk_fileopen ();
> gdbtk_data->_stdlog = gdbtk_fileopen ();
> gdbtk_data->_stdtarg = gdbtk_fileopen ();
> + gdbtk_data->_stdtargin = gdbtk_fileopenin ();
> gdbtk_interp = interp_new ("insight", gdbtk_data, cli_out_new (gdbtk_data->_stdout),
> &procs);
> interp_add (gdbtk_interp);
> Index: generic/gdbtk.h
> ===================================================================
> RCS file: /cvs/src/src/gdb/gdbtk/generic/gdbtk.h,v
> retrieving revision 1.9
> diff -u -p -r1.9 gdbtk.h
> --- generic/gdbtk.h 25 Jun 2004 19:44:22 -0000 1.9
> +++ generic/gdbtk.h 10 May 2005 20:13:42 -0000
> @@ -159,6 +159,7 @@ extern int gdbtk_two_elem_cmd (char *, c
> extern int target_is_native (struct target_ops *t);
> extern void gdbtk_fputs (const char *, struct ui_file *);
> extern struct ui_file *gdbtk_fileopen (void);
> +extern struct ui_file *gdbtk_fileopenin (void);
> extern int gdbtk_disable_fputs;
>
> #ifdef _WIN32
next prev parent reply other threads:[~2005-05-11 14:01 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-05-10 20:46 James Lemke
2005-05-11 14:01 ` Fernando Nasser [this message]
2005-05-11 14:10 ` Dave Korn
2005-05-11 14:21 ` James Lemke
2005-05-17 13:23 ` James Lemke
2005-05-17 15:35 ` Keith Seitz
2005-05-27 1:56 ` Keith Seitz
2005-05-27 12:40 ` James Lemke
2005-05-27 15:57 ` Keith Seitz
2005-05-24 18:43 ` James Lemke
2005-05-24 18:50 ` Keith Seitz
2005-05-26 16:25 ` Multiple definition of `_solib_address' [was RE: RFC: patch for insight & target stdin] Dave Korn
2005-05-26 16:28 ` Keith Seitz
2005-05-26 16:32 ` Multiple definition of `_solib_address' [was RE: RFC: patchfor " Dave Korn
2005-05-26 16:34 ` Keith Seitz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=42820FE7.8020702@redhat.com \
--to=fnasser@redhat.com \
--cc=insight@sourceware.org \
--cc=jim@wasabisystems.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).