diff options
author | Tom de Vries <tdevries@suse.de> | 2022-07-12 15:15:19 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2022-07-12 15:15:19 +0200 |
commit | 43f074cde435be5d9ee0cf2f264a70cd539c1983 (patch) | |
tree | 5fc0ea37fcc3780e3d354a337e0257a10edba1d8 /gdb/testsuite | |
parent | 3f6227c2f40a3e6009c60483f464e349d30145bb (diff) | |
download | gdb-43f074cde435be5d9ee0cf2f264a70cd539c1983.zip gdb-43f074cde435be5d9ee0cf2f264a70cd539c1983.tar.gz gdb-43f074cde435be5d9ee0cf2f264a70cd539c1983.tar.bz2 |
[gdb/record] Support recording of getrandom
Add missing support for recording of linux syscall getrandom.
Tested on x86_64-linux with native and target board unix/-m32.
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22081
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/gdb.reverse/getrandom.c | 41 | ||||
-rw-r--r-- | gdb/testsuite/gdb.reverse/getrandom.exp | 56 |
2 files changed, 97 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.reverse/getrandom.c b/gdb/testsuite/gdb.reverse/getrandom.c new file mode 100644 index 0000000..162de6e --- /dev/null +++ b/gdb/testsuite/gdb.reverse/getrandom.c @@ -0,0 +1,41 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2022 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/>. */ + +#include <sys/random.h> + +void +marker1 (void) +{ +} + +void +marker2 (void) +{ +} + +unsigned char buf[6]; + +int +main (void) +{ + buf[0] = 0xff; + buf[5] = 0xff; + marker1 (); + volatile ssize_t r = getrandom (&buf[1], 4, 0); + marker2 (); + return 0; +} diff --git a/gdb/testsuite/gdb.reverse/getrandom.exp b/gdb/testsuite/gdb.reverse/getrandom.exp new file mode 100644 index 0000000..b1c7d9d --- /dev/null +++ b/gdb/testsuite/gdb.reverse/getrandom.exp @@ -0,0 +1,56 @@ +# Copyright 2022 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/>. + +# This file is part of the gdb testsuite. + +# +# This test tests getrandom syscall for reverse execution. +# + +if ![supports_reverse] { + return +} + +standard_testfile + +if { [prepare_for_testing "failed to prepare" $testfile $srcfile] } { + return -1 +} + +runto_main + +if [supports_process_record] { + # Activate process record/replay + gdb_test_no_output "record" "turn on process record" +} + +gdb_test "break marker2" \ + "Breakpoint $decimal at $hex: file .*$srcfile, line $decimal.*" \ + "set breakpoint at marker2" + +gdb_continue_to_breakpoint "marker2" ".*$srcfile:.*" + +gdb_test "break marker1" \ + "Breakpoint $decimal at $hex: file .*$srcfile, line $decimal.*" \ + "set breakpoint at marker1" + +gdb_test "reverse-continue" ".*$srcfile:$decimal.*" "reverse to marker1" + +gdb_test "print (unsigned)buf\[0\]" ".* = 255" "check buf\[0\]" +gdb_test "print (unsigned)buf\[1\]" ".* = 0" "check buf\[1\]" +gdb_test "print (unsigned)buf\[2\]" ".* = 0" "check buf\[2\]" +gdb_test "print (unsigned)buf\[3\]" ".* = 0" "check buf\[3\]" +gdb_test "print (unsigned)buf\[4\]" ".* = 0" "check buf\[4\]" +gdb_test "print (unsigned)buf\[5\]" ".* = 255" "check buf\[5\]" |