# Copyright 2010-2021 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 . # Tests for permissions and observer mode. # The permissions flags are only fully functional with stubs or targets # that can run asynchronously. standard_testfile start.c if {[build_executable $testfile.exp $testfile \ $srcfile {debug nowarnings}] == -1} { untested "failed to compile" return -1 } if [get_compiler_info] { return -1 } gdb_exit gdb_start gdb_reinitialize_dir $srcdir/$subdir with_test_prefix "observer mode off" { gdb_test "show may-write-registers" \ "Permission to write into registers is on." gdb_test "show may-write-memory" \ "Permission to write into target memory is on." gdb_test "show may-insert-breakpoints" \ "Permission to insert breakpoints in the target is on." gdb_test "show may-insert-tracepoints" \ "Permission to insert tracepoints in the target is on." gdb_test "show may-insert-fast-tracepoints" \ "Permission to insert fast tracepoints in the target is on." gdb_test "show may-interrupt" \ "Permission to interrupt or signal the target is on." } gdb_test "set observer on" "Observer mode is now on." "enable observer mode" with_test_prefix "observer mode on" { gdb_test "show may-write-memory" \ "Permission to write into target memory is off." gdb_test "show may-write-registers" \ "Permission to write into registers is off." gdb_test "show may-insert-breakpoints" \ "Permission to insert breakpoints in the target is off." gdb_test "show may-insert-tracepoints" \ "Permission to insert tracepoints in the target is off." gdb_test "show may-insert-fast-tracepoints" \ "Permission to insert fast tracepoints in the target is on." gdb_test "show may-interrupt" \ "Permission to interrupt or signal the target is off." } gdb_test "set observer off" "Observer mode is now off." "disable observer mode" # Go back to all-stop mode. gdb_test_no_output "set non-stop off" gdb_load ${binfile} if ![runto_main] then { perror "couldn't run to breakpoint" continue } gdb_test "print x = 45" "$decimal = 45" "set a global" gdb_test "print x" "$decimal = 45" "validate setting a global" gdb_test "set may-write-memory off" gdb_test "print x = 92" "Writing to memory is not allowed.*" \ "set a global, 2nd time" gdb_test "print x" "$decimal = 45" "validate setting a global, 2nd time" # FIXME Add tests for other flags when a testsuite-able target becomes # available.