Restore behavior of disabling address randomization by default on GDBserver

Message ID 1534953958-13064-1-git-send-email-simon.marchi@ericsson.com
State New, archived
Headers

Commit Message

Simon Marchi Aug. 22, 2018, 4:05 p.m. UTC
  Commit

  c12a508 ("Add client_state struct.")

inadvertently changed the default behavior of GDBserver wrt address
randomization.  The old disable_randomization global variable was
initialized to 1, whereas the corresponding field in the client_state
structure is initialized to 0.

This fixes

  make check TESTS="gdb.base/jit-simple.exp" RUNTESTFLAGS="--target_board=native-gdbserver"
  make check TESTS="gdb.base/execl-update-breakpoints.exp" RUNTESTFLAGS="--target_board=native-gdbserver"

Note that the execl-update-breakpoints.exp would only fail on systems
where the toolchain emits position-independent executables by default
(otherwise the main executable position is never randomized, so the
value of disable_randomization didn't matter).

gdb/gdbserver/ChangeLog:

	PR gdb/23374
	PR gdb/23375
	* server.h (struct client_state) <disable_randomization>:
	Initialize to 1.
  

Comments

Pedro Alves Aug. 22, 2018, 4:14 p.m. UTC | #1
On 08/22/2018 05:05 PM, Simon Marchi wrote:
> Commit
> 
>   c12a508 ("Add client_state struct.")
> 
> inadvertently changed the default behavior of GDBserver wrt address
> randomization.  The old disable_randomization global variable was
> initialized to 1, whereas the corresponding field in the client_state
> structure is initialized to 0.
> 
> This fixes
> 
>   make check TESTS="gdb.base/jit-simple.exp" RUNTESTFLAGS="--target_board=native-gdbserver"
>   make check TESTS="gdb.base/execl-update-breakpoints.exp" RUNTESTFLAGS="--target_board=native-gdbserver"
> 
> Note that the execl-update-breakpoints.exp would only fail on systems
> where the toolchain emits position-independent executables by default
> (otherwise the main executable position is never randomized, so the
> value of disable_randomization didn't matter).

Thanks for fixing this!

This is OK, but please double-check the patch/commit, since it
seems to include the same hunk twice.  Kind of looks like
the fix diff made it to the commit log?

> 
> gdb/gdbserver/ChangeLog:
> 
> 	PR gdb/23374
> 	PR gdb/23375
> 	* server.h (struct client_state) <disable_randomization>:
> 	Initialize to 1.
> 
> diff --git a/gdb/gdbserver/server.h b/gdb/gdbserver/server.h index
> 8e197ee..5e41e2f 100644 --- a/gdb/gdbserver/server.h +++
> b/gdb/gdbserver/server.h @@ -176,7 +176,7 @@ struct client_state
> 
>    /* Whether we should attempt to disable the operating system's address
>       space randomization feature before starting an inferior.  */
> -  int disable_randomization = 0;
> +  int disable_randomization = 1;
> 
>    int pass_signals[GDB_SIGNAL_LAST];
>    int program_signals[GDB_SIGNAL_LAST];
> ---
>  gdb/gdbserver/server.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/gdb/gdbserver/server.h b/gdb/gdbserver/server.h
> index 8e197ee..5e41e2f 100644
> --- a/gdb/gdbserver/server.h
> +++ b/gdb/gdbserver/server.h
> @@ -176,7 +176,7 @@ struct client_state
>  
>    /* Whether we should attempt to disable the operating system's address
>       space randomization feature before starting an inferior.  */
> -  int disable_randomization = 0;
> +  int disable_randomization = 1;
>  
>    int pass_signals[GDB_SIGNAL_LAST];
>    int program_signals[GDB_SIGNAL_LAST];
> 
Thanks,
Pedro Alves
  
Simon Marchi Aug. 22, 2018, 5:38 p.m. UTC | #2
On 2018-08-22 12:14, Pedro Alves wrote:
> On 08/22/2018 05:05 PM, Simon Marchi wrote:
>> Commit
>> 
>>   c12a508 ("Add client_state struct.")
>> 
>> inadvertently changed the default behavior of GDBserver wrt address
>> randomization.  The old disable_randomization global variable was
>> initialized to 1, whereas the corresponding field in the client_state
>> structure is initialized to 0.
>> 
>> This fixes
>> 
>>   make check TESTS="gdb.base/jit-simple.exp" 
>> RUNTESTFLAGS="--target_board=native-gdbserver"
>>   make check TESTS="gdb.base/execl-update-breakpoints.exp" 
>> RUNTESTFLAGS="--target_board=native-gdbserver"
>> 
>> Note that the execl-update-breakpoints.exp would only fail on systems
>> where the toolchain emits position-independent executables by default
>> (otherwise the main executable position is never randomized, so the
>> value of disable_randomization didn't matter).
> 
> Thanks for fixing this!
> 
> This is OK, but please double-check the patch/commit, since it
> seems to include the same hunk twice.  Kind of looks like
> the fix diff made it to the commit log?

Oops yes, it's because I use "git commit -v" and managed to include that 
diff in the commit message by mistake.

Pushed with that fixed.

Simon
  
Joel Brobecker Aug. 26, 2018, 9:50 a.m. UTC | #3
Hello,

> > Thanks for fixing this!
> > 
> > This is OK, but please double-check the patch/commit, since it
> > seems to include the same hunk twice.  Kind of looks like
> > the fix diff made it to the commit log?
> 
> Oops yes, it's because I use "git commit -v" and managed to include that
> diff in the commit message by mistake.
> 
> Pushed with that fixed.

Just a quick message to let you know that I cherry-picked the patch and
pushed it to gdb-8.2-branch. I think we wanted this to be fixed there,
right? And the patch looked sufficiently obvious to me that I went
ahead.

2018-08-26  Simon Marchi  <simon.marchi@ericsson.com>

	PR gdb/23374
	PR gdb/23375
	* server.h (struct client_state) <disable_randomization>:
	Initialize to 1.
  
Simon Marchi Aug. 26, 2018, 3:01 p.m. UTC | #4
On 2018-08-26 05:50, Joel Brobecker wrote:
> Hello,
> 
>> > Thanks for fixing this!
>> >
>> > This is OK, but please double-check the patch/commit, since it
>> > seems to include the same hunk twice.  Kind of looks like
>> > the fix diff made it to the commit log?
>> 
>> Oops yes, it's because I use "git commit -v" and managed to include 
>> that
>> diff in the commit message by mistake.
>> 
>> Pushed with that fixed.
> 
> Just a quick message to let you know that I cherry-picked the patch and
> pushed it to gdb-8.2-branch. I think we wanted this to be fixed there,
> right? And the patch looked sufficiently obvious to me that I went
> ahead.

Of course, fixing the bug for 8.2 was the reason for that bug hunt in 
the first place.  Thanks!

Simon
  

Patch

diff --git a/gdb/gdbserver/server.h b/gdb/gdbserver/server.h index
8e197ee..5e41e2f 100644 --- a/gdb/gdbserver/server.h +++
b/gdb/gdbserver/server.h @@ -176,7 +176,7 @@ struct client_state

   /* Whether we should attempt to disable the operating system's address
      space randomization feature before starting an inferior.  */
-  int disable_randomization = 0;
+  int disable_randomization = 1;

   int pass_signals[GDB_SIGNAL_LAST];
   int program_signals[GDB_SIGNAL_LAST];
---
 gdb/gdbserver/server.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gdb/gdbserver/server.h b/gdb/gdbserver/server.h
index 8e197ee..5e41e2f 100644
--- a/gdb/gdbserver/server.h
+++ b/gdb/gdbserver/server.h
@@ -176,7 +176,7 @@  struct client_state
 
   /* Whether we should attempt to disable the operating system's address
      space randomization feature before starting an inferior.  */
-  int disable_randomization = 0;
+  int disable_randomization = 1;
 
   int pass_signals[GDB_SIGNAL_LAST];
   int program_signals[GDB_SIGNAL_LAST];