public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Simon Marchi <simark@simark.ca>
To: Michael Weghorn <m.weghorn@posteo.de>, gdb-patches@sourceware.org
Subject: Re: [PATCH 0/4] gdb: Move construct_inferior_arguments to gdbsupport
Date: Thu, 7 May 2020 15:31:53 -0400	[thread overview]
Message-ID: <c7f2a9e0-6e05-ba13-6092-56b86b58b709@simark.ca> (raw)
In-Reply-To: <20200429111638.1327262-2-m.weghorn@posteo.de>

On 2020-04-29 7:16 a.m., Michael Weghorn via Gdb-patches wrote:
> This moves the function construct_inferior_arguments from
> gdb/inferior.h and gdb/infcmd.c to gdbsupport/common-inferior.{h,cc}.
> 
> The intention is to use it from gdbserver in a follow-up commit.
> 
> gdb/ChangeLog:
> 
> 2020-04-29  Michael Weghorn  <m.weghorn@posteo.de>
> 
>         * infcmd.c, inferior.h: (construct_inferior_arguments):
>           Moved function from here to gdbsupport/common-inferior.{h,cc}
> 
> gdbsupport/ChangeLog:
> 
> 2020-04-29  Michael Weghorn  <m.weghorn@posteo.de>
> 
>         * common-inferior.h, common-inferior.cc: (construct_inferior_arguments):
>         Move function here from gdb/infcmd.c, gdb/inferior.h
> ---
>  gdb/infcmd.c                  | 124 ----------------------------------
>  gdb/inferior.h                |   2 -
>  gdbsupport/common-inferior.cc | 123 +++++++++++++++++++++++++++++++++
>  gdbsupport/common-inferior.h  |   2 +
>  4 files changed, 125 insertions(+), 126 deletions(-)
> 
> diff --git a/gdb/infcmd.c b/gdb/infcmd.c
> index 9bbb413d4e..8f7482347c 100644
> --- a/gdb/infcmd.c
> +++ b/gdb/infcmd.c
> @@ -259,130 +259,6 @@ server's cwd if remote debugging.\n"));
>  			"when starting the inferior is \"%s\".\n"), cwd);
>  }
>  
> -\f
> -/* Compute command-line string given argument vector.  This does the
> -   same shell processing as fork_inferior.  */
> -
> -char *
> -construct_inferior_arguments (int argc, char **argv)
> -{
> -  char *result;
> -
> -  /* ARGC should always be at least 1, but we double check this
> -     here.  This is also needed to silence -Werror-stringop
> -     warnings.  */
> -  gdb_assert (argc > 0);
> -
> -  if (startup_with_shell)
> -    {
> -#ifdef __MINGW32__
> -      /* This holds all the characters considered special to the
> -	 Windows shells.  */
> -      static const char special[] = "\"!&*|[]{}<>?`~^=;, \t\n";
> -      static const char quote = '"';
> -#else
> -      /* This holds all the characters considered special to the
> -	 typical Unix shells.  We include `^' because the SunOS
> -	 /bin/sh treats it as a synonym for `|'.  */
> -      static const char special[] = "\"!#$&*()\\|[]{}<>?'`~^; \t\n";
> -      static const char quote = '\'';
> -#endif
> -      int i;
> -      int length = 0;
> -      char *out, *cp;
> -
> -      /* We over-compute the size.  It shouldn't matter.  */
> -      for (i = 0; i < argc; ++i)
> -	length += 3 * strlen (argv[i]) + 1 + 2 * (argv[i][0] == '\0');
> -
> -      result = (char *) xmalloc (length);
> -      out = result;
> -
> -      for (i = 0; i < argc; ++i)
> -	{
> -	  if (i > 0)
> -	    *out++ = ' ';
> -
> -	  /* Need to handle empty arguments specially.  */
> -	  if (argv[i][0] == '\0')
> -	    {
> -	      *out++ = quote;
> -	      *out++ = quote;
> -	    }
> -	  else
> -	    {
> -#ifdef __MINGW32__
> -	      int quoted = 0;
> -
> -	      if (strpbrk (argv[i], special))
> -		{
> -		  quoted = 1;
> -		  *out++ = quote;
> -		}
> -#endif
> -	      for (cp = argv[i]; *cp; ++cp)
> -		{
> -		  if (*cp == '\n')
> -		    {
> -		      /* A newline cannot be quoted with a backslash (it
> -			 just disappears), only by putting it inside
> -			 quotes.  */
> -		      *out++ = quote;
> -		      *out++ = '\n';
> -		      *out++ = quote;
> -		    }
> -		  else
> -		    {
> -#ifdef __MINGW32__
> -		      if (*cp == quote)
> -#else
> -		      if (strchr (special, *cp) != NULL)
> -#endif
> -			*out++ = '\\';
> -		      *out++ = *cp;
> -		    }
> -		}
> -#ifdef __MINGW32__
> -	      if (quoted)
> -		*out++ = quote;
> -#endif
> -	    }
> -	}
> -      *out = '\0';
> -    }
> -  else
> -    {
> -      /* In this case we can't handle arguments that contain spaces,
> -	 tabs, or newlines -- see breakup_args().  */
> -      int i;
> -      int length = 0;
> -
> -      for (i = 0; i < argc; ++i)
> -	{
> -	  char *cp = strchr (argv[i], ' ');
> -	  if (cp == NULL)
> -	    cp = strchr (argv[i], '\t');
> -	  if (cp == NULL)
> -	    cp = strchr (argv[i], '\n');
> -	  if (cp != NULL)
> -	    error (_("can't handle command-line "
> -		     "argument containing whitespace"));
> -	  length += strlen (argv[i]) + 1;
> -	}
> -
> -      result = (char *) xmalloc (length);
> -      result[0] = '\0';
> -      for (i = 0; i < argc; ++i)
> -	{
> -	  if (i > 0)
> -	    strcat (result, " ");
> -	  strcat (result, argv[i]);
> -	}
> -    }
> -
> -  return result;
> -}
> -\f
>  
>  /* This function strips the '&' character (indicating background
>     execution) that is added as *the last* of the arguments ARGS of a
> diff --git a/gdb/inferior.h b/gdb/inferior.h
> index 1ac51369df..95af474eed 100644
> --- a/gdb/inferior.h
> +++ b/gdb/inferior.h
> @@ -184,8 +184,6 @@ extern void child_interrupt (struct target_ops *self);
>     STARTUP_INFERIOR.  */
>  extern ptid_t gdb_startup_inferior (pid_t pid, int num_traps);
>  
> -extern char *construct_inferior_arguments (int, char **);
> -
>  /* From infcmd.c */
>  
>  /* Initial inferior setup.  Determines the exec file is not yet known,
> diff --git a/gdbsupport/common-inferior.cc b/gdbsupport/common-inferior.cc
> index ed16e89a52..71b9a11e02 100644
> --- a/gdbsupport/common-inferior.cc
> +++ b/gdbsupport/common-inferior.cc
> @@ -24,3 +24,126 @@
>  /* See common-inferior.h.  */
>  
>  bool startup_with_shell = true;
> +
> +/* Compute command-line string given argument vector.  This does the
> +   same shell processing as fork_inferior.  */

Let's just do a bit of spring cleaning and align this code with our current
standards while moving it.  Move the function comment to the .h, and in the.cc
file write:

  /* See common-inferior.h. */

Other than that, this patch LGTM.

Simon

  reply	other threads:[~2020-05-07 19:31 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-29 11:16 Patches for PR 25893 "gdbserver incorrectly handles program args containing space" Michael Weghorn
2020-04-29 11:16 ` [PATCH 0/4] gdb: Move construct_inferior_arguments to gdbsupport Michael Weghorn
2020-05-07 19:31   ` Simon Marchi [this message]
2020-05-12 15:50     ` Michael Weghorn
2020-04-29 11:16 ` [PATCH 1/4] gdbsupport: Extend construct_inferior_arguments to allow handling all stringify_args cases Michael Weghorn
2020-04-29 15:25   ` Christian Biesinger
2020-04-29 15:45     ` Christian Biesinger
2020-05-07 19:29       ` Simon Marchi
2020-05-12 15:48         ` Michael Weghorn
2020-05-12 16:11           ` Simon Marchi
2020-05-12 16:24             ` Michael Weghorn
2020-04-30  6:02     ` [PATCH v2 " Michael Weghorn
2020-05-07 19:49       ` Simon Marchi
2020-05-12 15:57         ` Michael Weghorn
2020-04-29 11:16 ` [PATCH 2/4] gdbserver: Don't add extra NULL to program args Michael Weghorn
2020-05-07 19:54   ` Simon Marchi
2020-05-12 16:00     ` Michael Weghorn
2020-04-29 11:16 ` [PATCH 3/4] [PR gdbserver/25893]: Use construct_inferior_arguments which handles special chars Michael Weghorn
2020-05-07 20:09   ` Simon Marchi
2020-05-07 22:09     ` Simon Marchi
2020-05-12 16:10       ` Michael Weghorn
2020-05-12 16:07     ` Michael Weghorn
2020-05-12 17:37       ` Simon Marchi
2020-05-13  1:59         ` Simon Marchi
2020-05-13  9:51           ` Michael Weghorn
2020-04-29 11:16 ` [PATCH 4/4] [PR gdbserver/25893]: Add gdbserver test for argument with space in it Michael Weghorn
2020-05-07 22:15   ` Simon Marchi
2020-05-10 15:59     ` [PATCH 1/2] gdb/testsuite: support passing inferior arguments with native-gdbserver board Simon Marchi
2020-05-10 15:59       ` [PATCH 2/2] gdb/testsuite: add inferior arguments test Simon Marchi
2020-05-15 20:07         ` Pedro Alves
2020-05-19 17:13           ` Simon Marchi
2020-05-20 16:28             ` Michael Weghorn
2020-05-15 20:07       ` [PATCH 1/2] gdb/testsuite: support passing inferior arguments with native-gdbserver board Pedro Alves
2020-05-10 16:09     ` [PATCH 4/4] [PR gdbserver/25893]: Add gdbserver test for argument with space in it Simon Marchi
2020-05-11 14:33       ` Michael Weghorn
2020-05-11 15:04         ` Simon Marchi
2020-05-12 16:20           ` Michael Weghorn
2020-05-12 16:50             ` Simon Marchi
2020-05-13  9:55               ` Michael Weghorn
2020-04-29 15:27 ` Patches for PR 25893 "gdbserver incorrectly handles program args containing space" Simon Marchi
2020-04-30  6:03   ` Michael Weghorn
2020-05-12 15:42 ` [PATCH v3 1/6] gdb: Move construct_inferior_arguments to gdbsupport Michael Weghorn
2020-05-12 15:42   ` [PATCH v3 2/6] gdbsupport: Adapt construct_inferior_arguments Michael Weghorn
2020-05-12 17:53     ` Simon Marchi
2020-05-13  9:56       ` Michael Weghorn
2020-05-12 15:42   ` [PATCH v3 3/6] gdbserver: Don't add extra NULL to program args Michael Weghorn
2020-05-12 15:42   ` [PATCH v3 4/6] nto_process_target::create_inferior: Pass args as char ** Michael Weghorn
2020-05-12 18:34     ` Simon Marchi
2020-05-13  9:56       ` Michael Weghorn
2020-05-12 15:42   ` [PATCH v3 5/6] [PR gdbserver/25893]: Use construct_inferior_arguments which handles special chars Michael Weghorn
2020-05-13  0:52     ` Simon Marchi
2020-05-13  0:54       ` Simon Marchi
2020-05-13  9:58         ` Michael Weghorn
2020-05-12 15:42   ` [PATCH v3 6/6] gdbsupport: Drop now unused function 'stringify_argv' Michael Weghorn
2020-05-13  0:52     ` Simon Marchi
2020-05-13  9:47 ` [PATCH v4 1/9] gdb: Move construct_inferior_arguments to gdbsupport Michael Weghorn
2020-05-13  9:47   ` [PATCH v4 2/9] gdbsupport: Adapt construct_inferior_arguments Michael Weghorn
2020-05-13  9:47   ` [PATCH v4 3/9] gdbsupport: Let construct_inferior_arguments take gdb::array_view param Michael Weghorn
2020-05-13  9:47   ` [PATCH v4 4/9] gdbserver: Don't add extra NULL to program args Michael Weghorn
2020-05-13  9:47   ` [PATCH v4 5/9] nto_process_target::create_inferior: Pass args as char ** Michael Weghorn
2020-05-13  9:47   ` [PATCH v4 6/9] [PR gdbserver/25893]: Use construct_inferior_arguments which handles special chars Michael Weghorn
2020-05-13  9:47   ` [PATCH v4 7/9] gdbsupport: Drop now unused function 'stringify_argv' Michael Weghorn
2020-05-13  9:47   ` [PATCH v4 8/9] gdb/testsuite: support passing inferior arguments with native-gdbserver board Michael Weghorn
2020-05-15 17:29     ` Tom de Vries
2020-05-19 17:11       ` Simon Marchi
2020-05-19 17:22         ` Simon Marchi
2020-05-19 18:46           ` Tom de Vries
2020-05-25 15:14             ` Simon Marchi
2020-05-13  9:47   ` [PATCH v4 9/9] gdb/testsuite: add inferior arguments test Michael Weghorn
2020-05-13 14:39   ` [PATCH v4 1/9] gdb: Move construct_inferior_arguments to gdbsupport Simon Marchi
2020-05-13 15:01     ` Michael Weghorn
2020-05-13 15:05       ` Simon Marchi
2020-05-20 16:37         ` Michael Weghorn
2020-05-20 16:40           ` Simon Marchi
2020-05-20 16:21 ` [PATCH v5 " Michael Weghorn
2020-05-20 16:21   ` [PATCH v5 2/9] gdbsupport: Adapt construct_inferior_arguments Michael Weghorn
2020-05-20 16:21   ` [PATCH v5 3/9] gdbsupport: Let construct_inferior_arguments take gdb::array_view param Michael Weghorn
2020-05-20 16:21   ` [PATCH v5 4/9] gdbserver: Don't add extra NULL to program args Michael Weghorn
2020-05-20 16:21   ` [PATCH v5 5/9] nto_process_target::create_inferior: Pass args as char ** Michael Weghorn
2020-05-20 16:21   ` [PATCH v5 6/9] [PR gdbserver/25893]: Use construct_inferior_arguments which handles special chars Michael Weghorn
2020-05-20 16:21   ` [PATCH v5 7/9] gdbsupport: Drop now unused function 'stringify_argv' Michael Weghorn
2020-05-20 16:21   ` [PATCH v5 8/9] gdb/testsuite: support passing inferior arguments with native-gdbserver board Michael Weghorn
2020-05-20 16:21   ` [PATCH v5 9/9] gdb/testsuite: add inferior arguments test Michael Weghorn
2020-05-25 15:42   ` [PATCH v5 1/9] gdb: Move construct_inferior_arguments to gdbsupport Simon Marchi
2020-05-26  6:17     ` Michael Weghorn
2021-09-28 14:33       ` Simon Marchi
2021-09-29  5:53         ` Michael Weghorn

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=c7f2a9e0-6e05-ba13-6092-56b86b58b709@simark.ca \
    --to=simark@simark.ca \
    --cc=gdb-patches@sourceware.org \
    --cc=m.weghorn@posteo.de \
    /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).