diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2008-07-10 09:31:00 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2008-07-10 09:31:00 +0000 |
commit | 10568435e1fb17f06004b6e44fb30d05805acc04 (patch) | |
tree | 73644037047fd5460c7a58978a1d4881f899e396 /gdb/testsuite | |
parent | 1b315056928c75e989b6a0fa858577141da5cc4f (diff) | |
download | gdb-10568435e1fb17f06004b6e44fb30d05805acc04.zip gdb-10568435e1fb17f06004b6e44fb30d05805acc04.tar.gz gdb-10568435e1fb17f06004b6e44fb30d05805acc04.tar.bz2 |
gdb/
* NEWS (New commands): Mention "set disable-randomization".
* configure.ac: Add check for HAVE_PERSONALITY and
HAVE_DECL_ADDR_NO_RANDOMIZE.
* configure, config.in: Regenerate.
* linux-nat.c [HAVE_PERSONALITY]: New include <sys/personality.h>.
[HAVE_PERSONALITY] [!HAVE_DECL_ADDR_NO_RANDOMIZE]: Set
ADDR_NO_RANDOMIZE.
(disable_randomization, show_disable_randomization)
(set_disable_randomization): New.
(linux_nat_create_inferior) [HAVE_PERSONALITY]: New variables
PERSONALITY_ORIG and PERSONALITY_SET. Disable randomization upon the
variable DISABLE_RANDOMIZATION.
(_initialize_linux_nat): Call ADD_SETSHOW_BOOLEAN_CMD for the variable
DISABLE_RANDOMIZATION.
gdb/doc/
* gdb.texinfo (Starting): Document "set disable-randomization".
gdb/testsuite/
* gdb.base/randomize.exp, gdb.base/randomize.c: New files.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/randomize.c | 31 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/randomize.exp | 87 |
3 files changed, 122 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 3f837fb..eff1245 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2008-07-10 Jan Kratochvil <jan.kratochvil@redhat.com> + + * gdb.base/randomize.exp, gdb.base/randomize.c: New files. + 2008-07-09 Pedro Alves <pedro@codesourcery.com> * gdb.base/chng-syms.exp: Don't expect "No symbol ...". diff --git a/gdb/testsuite/gdb.base/randomize.c b/gdb/testsuite/gdb.base/randomize.c new file mode 100644 index 0000000..950f937 --- /dev/null +++ b/gdb/testsuite/gdb.base/randomize.c @@ -0,0 +1,31 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2008 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + + Please email any bugs, comments, and/or additions to this file to: + bug-gdb@prep.ai.mit.edu */ + +#include <stdlib.h> +#include <stdio.h> + +int main() +{ + void *p; + + p = malloc (1); + + return 0; /* print p */ +} diff --git a/gdb/testsuite/gdb.base/randomize.exp b/gdb/testsuite/gdb.base/randomize.exp new file mode 100644 index 0000000..b69412f --- /dev/null +++ b/gdb/testsuite/gdb.base/randomize.exp @@ -0,0 +1,87 @@ +# Copyright 2008 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set testfile randomize +set srcfile ${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { + untested "Couldn't compile test program" + return -1 +} + +# Get things started. + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + +proc address_get { testname } { + global gdb_prompt + + if {![runto_main]} { + return -1 + } + + # Do not rely on printf; some test configurations don't work with stdio. + + gdb_breakpoint [gdb_get_line_number "print p"] + gdb_continue_to_breakpoint "$testname - address set" + + gdb_test_multiple "print/x p" $testname { + -re "\\$\[0-9\]+ = (0x\[0-9a-f\]*)\r?\n$gdb_prompt $" { + pass $testname + return $expect_out(1,string) + } + } +} + +set test "set disable-randomization off" +gdb_test_multiple "${test}" "${test}" { + -re "Disabling randomization .* unsupported .*$gdb_prompt $" { + untested "No randomization supported by this GDB" + return -1 + } + -re "$gdb_prompt $" { + pass $test + } +} +gdb_test "show disable-randomization" \ + "Disabling randomization .* is off." \ + "show disable-randomization off" + +set addr1 [address_get "randomized first address"] +set addr2 [address_get "randomized second address"] +set test "randomized addresses should not match" +if {$addr1 eq $addr2} { + untested "No randomization detected on this system" + return -1 +} else { + pass $test +} + +gdb_test "set disable-randomization on" +gdb_test "show disable-randomization" \ + "Disabling randomization .* is on." \ + "show disable-randomization on" + +set addr1 [address_get "fixed first address"] +set addr2 [address_get "fixed second address"] +set test "fixed addresses should match" +if {$addr1 eq $addr2} { + pass $test +} else { + fail $test +} |