diff options
Diffstat (limited to 'gdb/testsuite/gdb.reverse')
-rw-r--r-- | gdb/testsuite/gdb.reverse/test_ioctl_TCSETSW.c | 38 | ||||
-rw-r--r-- | gdb/testsuite/gdb.reverse/test_ioctl_TCSETSW.exp | 45 |
2 files changed, 83 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.reverse/test_ioctl_TCSETSW.c b/gdb/testsuite/gdb.reverse/test_ioctl_TCSETSW.c new file mode 100644 index 0000000..6365f96 --- /dev/null +++ b/gdb/testsuite/gdb.reverse/test_ioctl_TCSETSW.c @@ -0,0 +1,38 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2012-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/ioctl.h> +#include <termios.h> +#include <stdio.h> + +/* The purpose of this test is to verify gdb record_linux_system_call() + recognizes the call for ioctl TCSETSW. */ + +int +main(void) +{ + + struct termios term; + int result; + int fd = 0; + + /* The test just needs to generate an ioctl call for TCSETSW to see if gdb + record detected it or not. Success or failure of the ioctl call is + irrelevant. */ + result = tcsetattr(fd, TCSADRAIN, &term); /* TCSETSW call */ + result = 0; /* TCSETSW called */ +} diff --git a/gdb/testsuite/gdb.reverse/test_ioctl_TCSETSW.exp b/gdb/testsuite/gdb.reverse/test_ioctl_TCSETSW.exp new file mode 100644 index 0000000..86a62eb --- /dev/null +++ b/gdb/testsuite/gdb.reverse/test_ioctl_TCSETSW.exp @@ -0,0 +1,45 @@ +# Copyright 2008-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/>. +# +# Test ioctl TCSETSW record for PowerPC. +# + +standard_testfile .c + +if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile}] } { + return -1 +} + +if ![runto_main] then { + untested "could not run to main" + continue +} + +# Recording of ioctls calls requires record full +gdb_test_no_output "record full" + +set stop [gdb_get_line_number "TCSETSW call"] +gdb_test "break $stop" ".*Breakpoint .*" "stop at TCSETSW" +gdb_test "continue" ".*Breakpoint .*" "at TCSETSW call" + +set test "handle TCSETSW" +gdb_test_multiple "step" $test { + -re "Process record and replay target doesn't support ioctl request 0x.*$gdb_prompt $" { + fail $test + } + -re ".*result = 0.*$gdb_prompt $" { + pass $test + } +} |