Patchwork Use getenv instead of gdb_environ on mi-cmd-env.c

login
register
mail settings
Submitter Sergio Durigan Junior
Date June 16, 2017, 10:12 p.m.
Message ID <20170616221231.11852-1-sergiodj@redhat.com>
Download mbox | patch
Permalink /patch/21057/
State New
Headers show

Comments

Sergio Durigan Junior - June 16, 2017, 10:12 p.m.
This is a spinoff of
<https://sourceware.org/ml/gdb-patches/2017-06/msg00437.html>.
mi-cmd-env.c is using the whole gdb_environ machinery in order to
access just one variable, which can be easily replaced by a simple
call to getenv.  This patch does that, and doesn't cause regressions.

gdb/ChangeLog:
2017-06-16  Sergio Durigan Junior  <sergiodj@redhat.com>

	* mi/mi-cm-env.c (_initialize_mi_cmd_env): Use getenv instead of
	gdb_environ to access an environment variable.
---
 gdb/ChangeLog       |  5 +++++
 gdb/mi/mi-cmd-env.c | 12 ++++--------
 2 files changed, 9 insertions(+), 8 deletions(-)
Simon Marchi - June 17, 2017, 8:01 a.m.
On 2017-06-17 00:12, Sergio Durigan Junior wrote:
> This is a spinoff of
> <https://sourceware.org/ml/gdb-patches/2017-06/msg00437.html>.
> mi-cmd-env.c is using the whole gdb_environ machinery in order to
> access just one variable, which can be easily replaced by a simple
> call to getenv.  This patch does that, and doesn't cause regressions.
> 
> gdb/ChangeLog:
> 2017-06-16  Sergio Durigan Junior  <sergiodj@redhat.com>
> 
> 	* mi/mi-cm-env.c (_initialize_mi_cmd_env): Use getenv instead of
> 	gdb_environ to access an environment variable.
> ---
>  gdb/ChangeLog       |  5 +++++
>  gdb/mi/mi-cmd-env.c | 12 ++++--------
>  2 files changed, 9 insertions(+), 8 deletions(-)
> 
> diff --git a/gdb/ChangeLog b/gdb/ChangeLog
> index 9062067..f5bf474 100644
> --- a/gdb/ChangeLog
> +++ b/gdb/ChangeLog
> @@ -1,3 +1,8 @@
> +2017-06-16  Sergio Durigan Junior  <sergiodj@redhat.com>
> +
> +	* mi/mi-cm-env.c (_initialize_mi_cmd_env): Use getenv instead of
> +	gdb_environ to access an environment variable.
> +
>  2017-06-16  Alan Hayward  <alan.hayward@arm.com>
>  	    Pedro Alves  <palves@redhat.com>
>  	    Yao Qi  <yao.qi@linaro.org>
> diff --git a/gdb/mi/mi-cmd-env.c b/gdb/mi/mi-cmd-env.c
> index 4093178..97be139 100644
> --- a/gdb/mi/mi-cmd-env.c
> +++ b/gdb/mi/mi-cmd-env.c
> @@ -270,21 +270,17 @@ mi_cmd_inferior_tty_show (const char *command,
> char **argv, int argc)
>  void
>  _initialize_mi_cmd_env (void)
>  {
> -  struct gdb_environ *environment;
>    const char *env;
> 
>    /* We want original execution path to reset to, if desired later.
>       At this point, current inferior is not created, so cannot use
> -     current_inferior ()->environment.  Also, there's no obvious
> -     place where this code can be moved such that it surely run
> -     before any code possibly mangles original PATH.  */
> -  environment = make_environ ();
> -  init_environ (environment);
> -  env = get_in_environ (environment, path_var_name);
> +     current_inferior ()->environment.  We use getenv here because it
> +     is not necessary to create a whole new gdb_environ just for one
> +     variable.  */
> +  env = getenv (path_var_name);
> 
>    /* Can be null if path is not set.  */
>    if (!env)
>      env = "";
>    orig_path = xstrdup (env);
> -  free_environ (environment);
>  }

LGTM.
Sergio Durigan Junior - June 19, 2017, 4:14 a.m.
On Saturday, June 17 2017, Simon Marchi wrote:

> On 2017-06-17 00:12, Sergio Durigan Junior wrote:
>> This is a spinoff of
>> <https://sourceware.org/ml/gdb-patches/2017-06/msg00437.html>.
>> mi-cmd-env.c is using the whole gdb_environ machinery in order to
>> access just one variable, which can be easily replaced by a simple
>> call to getenv.  This patch does that, and doesn't cause regressions.
>>
>> gdb/ChangeLog:
>> 2017-06-16  Sergio Durigan Junior  <sergiodj@redhat.com>
>>
>> 	* mi/mi-cm-env.c (_initialize_mi_cmd_env): Use getenv instead of
>> 	gdb_environ to access an environment variable.
>> ---
>>  gdb/ChangeLog       |  5 +++++
>>  gdb/mi/mi-cmd-env.c | 12 ++++--------
>>  2 files changed, 9 insertions(+), 8 deletions(-)
>>
>> diff --git a/gdb/ChangeLog b/gdb/ChangeLog
>> index 9062067..f5bf474 100644
>> --- a/gdb/ChangeLog
>> +++ b/gdb/ChangeLog
>> @@ -1,3 +1,8 @@
>> +2017-06-16  Sergio Durigan Junior  <sergiodj@redhat.com>
>> +
>> +	* mi/mi-cm-env.c (_initialize_mi_cmd_env): Use getenv instead of
>> +	gdb_environ to access an environment variable.
>> +
>>  2017-06-16  Alan Hayward  <alan.hayward@arm.com>
>>  	    Pedro Alves  <palves@redhat.com>
>>  	    Yao Qi  <yao.qi@linaro.org>
>> diff --git a/gdb/mi/mi-cmd-env.c b/gdb/mi/mi-cmd-env.c
>> index 4093178..97be139 100644
>> --- a/gdb/mi/mi-cmd-env.c
>> +++ b/gdb/mi/mi-cmd-env.c
>> @@ -270,21 +270,17 @@ mi_cmd_inferior_tty_show (const char *command,
>> char **argv, int argc)
>>  void
>>  _initialize_mi_cmd_env (void)
>>  {
>> -  struct gdb_environ *environment;
>>    const char *env;
>>
>>    /* We want original execution path to reset to, if desired later.
>>       At this point, current inferior is not created, so cannot use
>> -     current_inferior ()->environment.  Also, there's no obvious
>> -     place where this code can be moved such that it surely run
>> -     before any code possibly mangles original PATH.  */
>> -  environment = make_environ ();
>> -  init_environ (environment);
>> -  env = get_in_environ (environment, path_var_name);
>> +     current_inferior ()->environment.  We use getenv here because it
>> +     is not necessary to create a whole new gdb_environ just for one
>> +     variable.  */
>> +  env = getenv (path_var_name);
>>
>>    /* Can be null if path is not set.  */
>>    if (!env)
>>      env = "";
>>    orig_path = xstrdup (env);
>> -  free_environ (environment);
>>  }
>
> LGTM.
>

Thanks, pushed.

1c8e01c96054973c50ec1dec2f220af4734e1de5

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 9062067..f5bf474 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@ 
+2017-06-16  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* mi/mi-cm-env.c (_initialize_mi_cmd_env): Use getenv instead of
+	gdb_environ to access an environment variable.
+
 2017-06-16  Alan Hayward  <alan.hayward@arm.com>
 	    Pedro Alves  <palves@redhat.com>
 	    Yao Qi  <yao.qi@linaro.org>
diff --git a/gdb/mi/mi-cmd-env.c b/gdb/mi/mi-cmd-env.c
index 4093178..97be139 100644
--- a/gdb/mi/mi-cmd-env.c
+++ b/gdb/mi/mi-cmd-env.c
@@ -270,21 +270,17 @@  mi_cmd_inferior_tty_show (const char *command, char **argv, int argc)
 void 
 _initialize_mi_cmd_env (void)
 {
-  struct gdb_environ *environment;
   const char *env;
 
   /* We want original execution path to reset to, if desired later.
      At this point, current inferior is not created, so cannot use
-     current_inferior ()->environment.  Also, there's no obvious
-     place where this code can be moved such that it surely run
-     before any code possibly mangles original PATH.  */
-  environment = make_environ ();
-  init_environ (environment);
-  env = get_in_environ (environment, path_var_name);
+     current_inferior ()->environment.  We use getenv here because it
+     is not necessary to create a whole new gdb_environ just for one
+     variable.  */
+  env = getenv (path_var_name);
 
   /* Can be null if path is not set.  */
   if (!env)
     env = "";
   orig_path = xstrdup (env);
-  free_environ (environment);
 }