Per-inferior program arguments and io terminal

Vladimir Prus vladimir@codesourcery.com
Thu Jan 14 09:27:00 GMT 2010


On Wednesday 13 January 2010 18:49:15 Pedro Alves wrote:

> > -void
> > -tty_command (char *file, int from_tty)
> > -{
> > -  if (file == 0)
> > -    error_no_arg (_("terminal name for running target process"));
> > -
> > -  set_inferior_io_terminal (file);
> > -}
> 
> If you're removing this, please delete the declaration in
> inferior.h as well.
> 
> 
> A generic comment: it is good (and the common practice) to name
> the FOO command callbacks as "FOO_command" or
> "set_FOO_command"/"show_FOO_command", so that we can find a command
> implementation easily by just guessing and grepping.

I am not sure I follow you. tty_command, although named as FOO_command,
was not actually used as command anywhere I can see. Or do you refer to
some other function?

> >  /* Common actions to take after creating any sort of inferior, by any
> >     means (running, attaching, connecting, et cetera).  The target
> >     should be stopped.  */
> > @@ -536,10 +534,7 @@ run_command_1 (char *args, int from_tty, int tbreak_at_main)
> >  
> >        /* If there were other args, beside '&', process them. */
> >        if (args)
> > -       {
> > -          char *old_args = set_inferior_args (xstrdup (args));
> > -          xfree (old_args);
> > -       }
> > +       set_inferior_args (xstrdup (args));
> 
> There's inconsistency in the `args' memory managent.  set_inferior_args
> already xstrdups the incoming argument.  What should stay?  Can we have a
> short comment in set_inferior_args's decription mentioning
> who's supposed to manage the args' memory?

/me wishes for std::string (and/or boost::shared_ptr)

Fixed.

> > @@ -2646,14 +2640,17 @@ _initialize_infcmd (void)
> >  
> >    /* add the filename of the terminal connected to inferior I/O */
> >    add_setshow_filename_cmd ("inferior-tty", class_run,
> > -                           &inferior_io_terminal, _("\
> > +                           &inferior_io_terminal_scratch, _("\
> >  Set terminal for future runs of program being debugged."), _("\
> >  Show terminal for future runs of program being debugged."), _("\
> > -Usage: set inferior-tty /dev/pts/1"), NULL, NULL, &setlist, &showlist);
> > +Usage: set inferior-tty /dev/pts/1"), 
> > +                           notice_inferior_io_terminal_set, 
> > +                           show_inferior_io_terminal, 
> > +                           &setlist, &showlist);
> >    add_com_alias ("tty", "set inferior-tty", class_alias, 0);
> >  
> >    add_setshow_optional_filename_cmd ("args", class_run,
> > -                                    &inferior_args, _("\
> > +                                    &inferior_args_scratch, _("\
> >  Set argument list to give program being debugged when it is started."), _("\
> >  Show argument list to give program being debugged when it is started."), _("\
> >  Follow this command with any number of args, to be passed to the program."),
> > diff --git a/gdb/inferior.h b/gdb/inferior.h
> > index 9798ef1..048fc11 100644
> > --- a/gdb/inferior.h
> > +++ b/gdb/inferior.h
> > @@ -261,7 +261,7 @@ extern void attach_command (char *, int);
> >  
> >  extern char *get_inferior_args (void);
> >  
> > -extern char *set_inferior_args (char *);
> > +extern void set_inferior_args (char *);
> >  
> >  extern void set_inferior_args_vector (int, char **);
> >  
> > @@ -427,6 +427,18 @@ struct inferior
> >    /* The program space bound to this inferior.  */
> >    struct program_space *pspace;
> >  
> > +  /* The arguments string to use when running.  */
> > +  char *args;
> > +
> > +  /* The size of elements in argv.  */
> > +  int argc;
> > +
> > +  /* The vector version of arguments.  */
> > +  char **argv;
> > +
> > +  /* The name of terminal device to use for I/O.  */
> > +  char *terminal;
> > +
> 
> These are all leaking when the inferior is deleted.

Here's a revised version.

- Volodya
-------------- next part --------------
A non-text attachment was scrubbed...
Name: per-inferior-args2.diff
Type: text/x-patch
Size: 20445 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/gdb-patches/attachments/20100114/da800327/attachment.bin>


More information about the Gdb-patches mailing list