Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: Cleber Rosa <crosa@redhat.com>, gdb-patches@sourceware.org
Cc: areis@redhat.com, Vladimir Prus <vladimir.prus@gmail.com>
Subject: Re: [PATCH 4/4] GDB/MI: inferior standard I/O redirection
Date: Wed, 21 Oct 2015 11:19:00 -0000	[thread overview]
Message-ID: <56276B87.1010503@redhat.com> (raw)
In-Reply-To: <1444045617-14526-5-git-send-email-crosa@redhat.com>

(+Vladimir as MI maintainer.)

On 10/05/2015 12:46 PM, Cleber Rosa wrote:

> +@smallexample
> +(gdb)
> +-inferior-stderr-set /dev/null
> +^done
> +(gdb)
> +-inferior-stderr-show
> +^done,inferior_stderr="/dev/null"

(Note that if you want, you're free to use '-', as in 'inferior-stderr',
instead of '_'.  It's actually more common.)

> +(gdb)
> +@end smallexample
> +
>  @subheading The @code{-enable-timings} Command
>  @findex -enable-timings
>  
> diff --git a/gdb/mi/mi-cmd-env.c b/gdb/mi/mi-cmd-env.c
> index fad9297..610070d 100644
> --- a/gdb/mi/mi-cmd-env.c
> +++ b/gdb/mi/mi-cmd-env.c
> @@ -268,6 +268,83 @@ mi_cmd_inferior_tty_show (char *command, char **argv, int argc)
>  			 "inferior_tty_terminal", inferior_io_terminal);
>  }
>  
> +/* Helper function to simplify mi_cmd_inferior_std{in,out,err}_show.  */
> +
> +static void
> +mi_cmd_inferior_std_show_helper(char *command,

Space before parens.  Can 'command' and 'field_name' be const?

> +                                char **argv,
> +                                int argc,
> +                                char *field_name,
> +                                const char *inferior_std_name)
> +{
> +  if ( !mi_valid_noargs ("-inferior-stdin-show", argc, argv))

Spurious space before '!'.

> +  error (_("%s: Usage: No args"), command);
> +
> +  if (inferior_std_name)

  if (inferior_std_name != NULL)


> +    ui_out_field_string (current_uiout,
> +                         field_name, inferior_std_name);
> +}
> +
> +/* Set the inferior stdin file name.  */
> +
> +void
> +mi_cmd_inferior_stdin_set (char *command, char **argv, int argc)
> +{
> +  set_inferior_io_stdin (argv[0]);
> +}
> +
> +/* Print the inferior stdin file name.  */
> +
> +void
> +mi_cmd_inferior_stdin_show (char *command, char **argv, int argc)
> +{
> +  mi_cmd_inferior_std_show_helper("-inferior-stdin-show",

Space before parens.

> +                                  argv,
> +                                  argc,
> +                                  "inferior_stdin",
> +                                  get_inferior_io_stdin ());
> +}
> +
> +/* Set the inferior stdout file name.  */
> +
> +void
> +mi_cmd_inferior_stdout_set (char *command, char **argv, int argc)
> +{
> +  set_inferior_io_stdout (argv[0]);
> +}
> +
> +/* Print the inferior stdout file name.  */
> +
> +void
> +mi_cmd_inferior_stdout_show (char *command, char **argv, int argc)
> +{
> +  mi_cmd_inferior_std_show_helper("-inferior-stdout-show",

Space before parens.

> +                                  argv,
> +                                  argc,
> +				  "inferior_stdout",

Something odd with indentation here.

> +                                  get_inferior_io_stdout ());
> +}
> +
> +/* Set the inferior stderr file name.  */
> +
> +void
> +mi_cmd_inferior_stderr_set (char *command, char **argv, int argc)
> +{
> +  set_inferior_io_stderr (argv[0]);
> +}
> +
> +/* Print the inferior stderr file name.  */
> +
> +void
> +mi_cmd_inferior_stderr_show (char *command, char **argv, int argc)
> +{
> +  mi_cmd_inferior_std_show_helper("-inferior-stderr-show",

Space before parens.

> +                                  argv,
> +                                  argc,
> +                                  "inferior_stderr",
> +                                  get_inferior_io_stderr ());
> +}
> +
>  void 
>  _initialize_mi_cmd_env (void)
>  {
> diff --git a/gdb/mi/mi-cmds.c b/gdb/mi/mi-cmds.c
> index 2d8af2f..388b5b1 100644
> --- a/gdb/mi/mi-cmds.c
> +++ b/gdb/mi/mi-cmds.c
> @@ -123,6 +123,12 @@ static struct mi_cmd mi_cmds[] =
>    DEF_MI_CMD_CLI ("gdb-version", "show version", 0),
>    DEF_MI_CMD_MI ("inferior-tty-set", mi_cmd_inferior_tty_set),
>    DEF_MI_CMD_MI ("inferior-tty-show", mi_cmd_inferior_tty_show),
> +  DEF_MI_CMD_MI ("inferior-stdin-set", mi_cmd_inferior_stdin_set),
> +  DEF_MI_CMD_MI ("inferior-stdin-show", mi_cmd_inferior_stdin_show),
> +  DEF_MI_CMD_MI ("inferior-stdout-set", mi_cmd_inferior_stdout_set),
> +  DEF_MI_CMD_MI ("inferior-stdout-show", mi_cmd_inferior_stdout_show),
> +  DEF_MI_CMD_MI ("inferior-stderr-set", mi_cmd_inferior_stderr_set),
> +  DEF_MI_CMD_MI ("inferior-stderr-show", mi_cmd_inferior_stderr_show),
>    DEF_MI_CMD_MI ("info-ada-exceptions", mi_cmd_info_ada_exceptions),
>    DEF_MI_CMD_MI ("info-gdb-mi-command", mi_cmd_info_gdb_mi_command),
>    DEF_MI_CMD_MI ("info-os", mi_cmd_info_os),
> diff --git a/gdb/mi/mi-cmds.h b/gdb/mi/mi-cmds.h
> index 55141f3..8ffb65f 100644
> --- a/gdb/mi/mi-cmds.h
> +++ b/gdb/mi/mi-cmds.h
> @@ -73,6 +73,12 @@ extern mi_cmd_argv_ftype mi_cmd_file_list_exec_source_files;
>  extern mi_cmd_argv_ftype mi_cmd_gdb_exit;
>  extern mi_cmd_argv_ftype mi_cmd_inferior_tty_set;
>  extern mi_cmd_argv_ftype mi_cmd_inferior_tty_show;
> +extern mi_cmd_argv_ftype mi_cmd_inferior_stdin_set;
> +extern mi_cmd_argv_ftype mi_cmd_inferior_stdin_show;
> +extern mi_cmd_argv_ftype mi_cmd_inferior_stdout_set;
> +extern mi_cmd_argv_ftype mi_cmd_inferior_stdout_show;
> +extern mi_cmd_argv_ftype mi_cmd_inferior_stderr_set;
> +extern mi_cmd_argv_ftype mi_cmd_inferior_stderr_show;
>  extern mi_cmd_argv_ftype mi_cmd_info_ada_exceptions;
>  extern mi_cmd_argv_ftype mi_cmd_info_gdb_mi_command;
>  extern mi_cmd_argv_ftype mi_cmd_info_os;
> diff --git a/gdb/testsuite/gdb.mi/mi-basics.exp b/gdb/testsuite/gdb.mi/mi-basics.exp
> index 476dbdc..89f7d68 100644
> --- a/gdb/testsuite/gdb.mi/mi-basics.exp
> +++ b/gdb/testsuite/gdb.mi/mi-basics.exp
> @@ -264,6 +264,67 @@ proc test_setshow_inferior_tty {} {
>  		"make sure show takes no arguments"
>  }
>  
> +proc test_setshow_inferior_std {} {
> +    global mi_gdb_prompt
> +
> +    # Test that the commands,
> +    #   -inferior-stdin-set
> +    #   -inferior-stdin-show
> +    #   -inferior-stdin-set
> +    #   -inferior-stdin-show
> +    #   -inferior-stdin-set
> +    #   -inferior-stdin-show
> +    # are setting/getting the same data in GDB.
> +
> +    mi_gdb_test "301-inferior-stdin-show" \
> +		"301\\\^done" \
> +		"initial stdin is not set"
> +
> +    mi_gdb_test "302-inferior-stdin-set /foo/bar" \
> +		"302\\\^done" \
> +		"set stdin to /foo/bar"
> +
> +    mi_gdb_test "303-inferior-stdin-show" \
> +		"303\\\^done,inferior_stdin=\"/foo/bar\"" \
> +		"std was set correctly"
> +
> +    mi_gdb_test "304-inferior-stdin-show should-take-no-args" \
> +		"304\\\^error,msg=\"-inferior-stdin-show: Usage: No args\"" \
> +		"make sure show takes no arguments"
> +
> +    mi_gdb_test "305-inferior-stdout-show" \
> +		"305\\\^done" \
> +		"initial stdout is not set"
> +
> +    mi_gdb_test "306-inferior-stdout-set /foo/bar" \
> +		"306\\\^done" \
> +		"set stdout to /foo/bar"
> +
> +    mi_gdb_test "307-inferior-stdout-show" \
> +		"307\\\^done,inferior_stdout=\"/foo/bar\"" \
> +		"std was set correctly"
> +
> +    mi_gdb_test "308-inferior-stdout-show should-take-no-args" \
> +		"308\\\^error,msg=\"-inferior-stdout-show: Usage: No args\"" \
> +		"make sure show takes no arguments"

Please make sure there are no duplicate test messages:

  https://sourceware.org/gdb/wiki/GDBTestcaseCookbook#Make_sure_test_messages_are_unique

> +
> +    mi_gdb_test "309-inferior-stderr-show" \
> +                "309\\\^done" \
> +                "initial stderr is not set"
> +
> +    mi_gdb_test "310-inferior-stderr-set /foo/bar" \
> +                "310\\\^done" \
> +                "set stderr to /foo/bar"
> +
> +    mi_gdb_test "311-inferior-stderr-show" \
> +                "311\\\^done,inferior_stderr=\"/foo/bar\"" \
> +                "std was set correctly"
> +
> +    mi_gdb_test "312-inferior-stderr-show should-take-no-args" \
> +                "312\\\^error,msg=\"-inferior-stderr-show: Usage: No args\"" \
> +                "make sure show takes no arguments"
> +}
> +
>  if { [test_mi_interpreter_selection]
>        && [test_exec_and_symbol_mi_operatons] } {
>    test_breakpoints_deletion
> @@ -271,6 +332,7 @@ if { [test_mi_interpreter_selection]
>    test_cwd_specification
>    test_path_specification
>    test_setshow_inferior_tty
> +  test_setshow_inferior_std
>  }
>  
>  mi_gdb_exit
> 

Looks good to me with the nits above fixed.

Thanks,
Pedro Alves


  parent reply	other threads:[~2015-10-21 10:40 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-05 11:47 [PATCH 0/4]: GDB: " Cleber Rosa
2015-10-05 11:47 ` [PATCH 3/4] GDB/MI: add test for command -inferior-tty-show Cleber Rosa
2015-10-21 11:19   ` Pedro Alves
2015-10-05 11:47 ` [PATCH 1/4] GDB: inferior standard I/O redirection Cleber Rosa
2015-10-05 12:23   ` Eli Zaretskii
2015-10-21 11:18   ` Pedro Alves
2015-10-05 11:47 ` [PATCH 2/4] GDB/MI: fix and simplify mi_valid_noargs utility function Cleber Rosa
2015-10-21 11:19   ` Pedro Alves
2015-10-05 11:54 ` [PATCH 4/4] GDB/MI: inferior standard I/O redirection Cleber Rosa
2015-10-05 12:26   ` Eli Zaretskii
2015-10-21 11:19   ` Pedro Alves [this message]
2015-10-22 10:55   ` Vladimir Prus

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=56276B87.1010503@redhat.com \
    --to=palves@redhat.com \
    --cc=areis@redhat.com \
    --cc=crosa@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=vladimir.prus@gmail.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