1# Copyright 1992-2015 Free Software Foundation, Inc. 2 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16# This file was written by Michael Snyder (msnyder@cygnus.com) 17 18 19standard_testfile .c 20 21if { [gdb_compile ${srcdir}/${subdir}/${srcfile} ${binfile} executable {debug}] != "" } { 22 untested setshow.exp 23 return -1 24} 25 26# Start with a fresh gdb 27 28clean_restart ${binfile} 29 30# make sure $pc is sane, in case we're talking to a board. 31if { ![runto_main] } { 32 gdb_suppress_tests 33} 34 35# 36# Test gdb set and show commands. 37# Add tests here for show and set that don't fit neatly elsewhere. 38# FIXME: many rudimentary tests for set and show commands have been 39# added below, but most do nothing more than check that a 40# variable has been set successfully, ie. they do not test 41# whether setting the variable has had the desired effect. 42# 43 44#test default annotation_level is 0 45gdb_test "show annotate" "Annotation_level is 0..*" "default annotation_level is zero" 46 47#test set annotate 2 48 49# Here we need to fiddle with prompts. 50set old_gdb_prompt $gdb_prompt 51set gdb_prompt "\r\n\032\032pre-prompt\r\n$gdb_prompt \r\n\032\032prompt\r\n" 52 53gdb_test_multiple "set annotate 2" "set annotate 2" { 54 -re "\r\n$gdb_prompt$" { 55 pass "set annotate 2" 56 } 57} 58 59gdb_test_multiple "show annotate" "show annotate 2" { 60 -re ".*\032\032post-prompt.*Annotation_level is 2..*\032\032pre-prompt.*$old_gdb_prompt .*\032\032prompt.*$" { 61 pass "show annotate 2" 62 } 63} 64 65#test annotation_level 2 66gdb_test_multiple "info line 1" "annotation_level 2" { 67 -re ".*\032\032post-prompt.*Line 1 of .* is at address .* but contains no code.*:1:0:beg:0x.*\032\032pre-prompt.*$old_gdb_prompt .*\032\032prompt.*$" { 68 pass "annotation_level 2" 69 } 70} 71 72# Restore the original prompt for the rest of the testsuite. 73set gdb_prompt $old_gdb_prompt 74 75#test set annotate 1 76gdb_test "set annotate 1" ".*post-prompt.*" "set annotate 1" 77gdb_test "show annotate" "Annotation_level is 1..*" "show annotate (1)" 78#test annotation_level 1 79gdb_test "info line 1" "Line 1 of .* is at address .* but contains no code.*:1:0:beg:0x.*" "annotation_level 1" 80#test set annotate 0 81gdb_test_no_output "set annotate 0" "set annotate 0" 82gdb_test "show annotate" "Annotation_level is 0..*" "show annotate (0)" 83#test annotation_level 0 84gdb_test "info line 1" "Line 1 of .* is at address .* but contains no code.*" "annotation_level 0" 85 86gdb_test_no_output "set args ~" 87gdb_test "show args" "Argument list to give program being debugged when it is started is \"~\"..*" \ 88 "show args ~" 89#test set args 90gdb_test_no_output "set args foo bar blup baz bubble" "set args" 91#test show args 92gdb_test "show args" "Argument list to give program being debugged when it is started is \"foo bar blup baz bubble\"..*" "show args" 93 94# Don't test if we can't pass args or if we're using a stub. 95if { !$use_gdb_stub && ![target_info exists noargs] } { 96 #test passing args 97 gdb_test "cont" "Continuing.*" "continuing" 98 delete_breakpoints 99 gdb_test "run" "Starting program:.*foo bar blup baz bubble.*" "passing args" 100} 101#test set check range on 102gdb_test "set check range on" ".*" "set check range on" 103#test show check range on 104gdb_test "show check range" "Range checking is \"on\"\..*" "show check range (on)" 105#test set check range off with trailing space 106gdb_test_no_output "set check range off " "set check range off" 107#test show check range off 108gdb_test "show check range" "Range checking is \"off\"\..*" "show check range (off)" 109#test set check range auto 110gdb_test_no_output "set check range auto" "set check range auto" 111#test show check range auto 112gdb_test "show check range" "Range checking is \"auto; currently .*" "show check range (auto)" 113 114# Test set check type on 115gdb_test "set check type on" ".*" "set check type on" 116 117# Test show check type on 118gdb_test "show check type" "Strict type checking is on\..*" \ 119 "show check type (on)" 120 121# Test set check type off with trailing space 122gdb_test_no_output "set check type off " "set check type off" 123 124# Test show check type off 125gdb_test "show check type" "Strict type checking is off\..*" \ 126 "show check type (off)" 127 128#test set complaints 100 129gdb_test_no_output "set complaints 100" "set complaints 100" 130#test show complaints 100 131gdb_test "show complaints" "Max number of complaints about incorrect symbols is 100..*" "show complaints (100)" 132#test set complaints 0 133gdb_test_no_output "set complaints 0" "set complaints 0" 134#test show complaints 0 135gdb_test "show complaints" "Max number of complaints about incorrect symbols is 0..*" "show complaints (0)" 136#test set confirm off 137gdb_test_no_output "set confirm off" "set confirm off" 138#test show confirm off 139gdb_test "show confirm" "Whether to confirm potentially dangerous operations is off..*" "show confirm (off)" 140#test set confirm on 141gdb_test_no_output "set confirm on" "set confirm on" 142#test show confirm on 143gdb_test "show confirm" "Whether to confirm potentially dangerous operations is on..*" "show confirm (on)" 144#test set editing off 145gdb_test_no_output "set editing off" "set editing off" 146#test show editing off 147gdb_test "show editing" "Editing of command lines as they are typed is off..*" "show editing (off)" 148#test set editing on 149#gdb_test_no_output "set editing on" "set editing on" 150#test show editing on 151#gdb_test "show editing" "Editing of command lines as they are typed is on..*" "show editing (on)" 152#test set environment FOOBARBAZ 153gdb_test_no_output "set environment FOOBARBAZ = grbxgrbxgrbx" \ 154 "set environment FOOBARBAZ" 155#test show environment FOOBARBAZ 156gdb_test "show environment FOOBARBAZ" "FOOBARBAZ = grbxgrbxgrbx.*" "show environment FOOBARBAZ" 157#test set height 100 158gdb_test_no_output "set height 100" "set height 100" 159#test show height 100 160gdb_test "show height" "Number of lines gdb thinks are in a page is 100..*" "show height" 161# Back to infinite height to avoid pagers. While at it, check that 162# literal "unlimited" works just as well as 0. 163gdb_test_no_output "set height unlimited" 164#test set history expansion on 165gdb_test_no_output "set history expansion on" "set history expansion on" 166#test show history expansion on 167gdb_test "show history expansion on" "History expansion on command input is on.*" "show history expansion" 168#get home directory path 169set HOME "" 170set test "show environment HOME" 171gdb_test_multiple $test $test { 172 -re "\nHOME = (\[^\r\n\]*)\[\r\n\]+$gdb_prompt $" { 173 set HOME $expect_out(1,string) 174 pass $test 175 } 176} 177#test set history filename ~/foobar.baz 178gdb_test_no_output "set history filename ~/foobar.baz" \ 179 "set history filename ~/foobar.baz" 180#test show history filename ~/foobar.baz 181gdb_test "show history filename" \ 182 "The filename in which to record the command history is \"[string_to_regexp $HOME]/foobar.baz\"..*" \ 183 "show history filename (~/foobar.baz)" 184#get current working directory 185set PWD "" 186set test "show working directory" 187gdb_test_multiple "pwd" $test { 188 -re "\nWorking directory (\[^\r\n\]*)\\.\[\r\n\]+$gdb_prompt $" { 189 set PWD $expect_out(1,string) 190 pass $test 191 } 192} 193#test set history filename foobar.baz 194gdb_test_no_output "set history filename foobar.baz" \ 195 "set history filename foobar.baz" 196#test show history filename foobar.baz 197gdb_test "show history filename" \ 198 "The filename in which to record the command history is \"[string_to_regexp $PWD]/foobar.baz\"..*" \ 199 "show history filename (current_directory/foobar.baz)" 200#test set history save on 201gdb_test_no_output "set history save on" "set history save on" 202#test show history save on 203gdb_test "show history save" "Saving of the history record on exit is on..*" "show history save (on)" 204#history saving should stay disabled 205gdb_test_no_output "set history save off" "set history save off" 206#test set history size 100 207gdb_test_no_output "set history size 100" "set history size 100" 208#test show history size 100 209gdb_test "show history size" "The size of the command history is 100..*" "show history size (100)" 210#test set language asm 211gdb_test "set language asm" ".*" "set language asm" 212#test show language asm 213gdb_test "show language" "The current source language is \"asm\"..*" "show language (asm)" 214#test set language java, with a trailing space 215gdb_test_no_output "set language java " "set language java" 216#test show language java 217gdb_test "show language" "The current source language is \"java\"..*" "show language (java)" 218#test completion for set language. 219gdb_test "complete set language min" "set language minimal" \ 220 "complete set language minimal" 221#test set language auto 222gdb_test_no_output "set language auto" "set language auto" 223#test show language 224gdb_test "show language" "The current source language is \"auto.*\"..*" "show language (auto)" 225#test set listsize 100 226gdb_test_no_output "set listsize 100" "set listsize 100" 227#test show listsize 100 228gdb_test "show listsize" "Number of source lines gdb will list by default is 100..*" "show listsize (100)" 229 230if ![board_info target exists gdb_prompt] { 231 #test set prompt (FooBarBaz) 232 set newprompt "\\(FooBarBaz\\)" 233 234 gdb_test_multiple "set prompt (FooBarBaz) " "set prompt FooBarBaz" { 235 -re "\[\r\n\]$newprompt $" { 236 pass "set prompt FooBarBaz" 237 } 238 } 239 240 #test show prompt (FooBarBaz) 241 242 gdb_test_multiple "show prompt" "show prompt FooBarBaz" { 243 -re "Gdb's prompt is \"$newprompt \"..* $" { 244 pass "show prompt FooBarBaz" 245 } 246 } 247 248 #test set prompt (gdb) 249 250 gdb_test_multiple "set prompt (gdb) " "set prompt gdb" { 251 -re "\[\r\n\]$gdb_prompt $" { 252 pass "set prompt gdb" 253 } 254 } 255} 256 257#test set radix 11 258gdb_test "set radix 11" "Unsupported output radix ``decimal 11''; output radix unchanged..*" "set radix 11" 259#test set radix 16 260gdb_test "set radix 16" "Input and output radices now set to decimal 16, hex 10, octal 20..*" "set radix 16" 261#test show radix 16 262gdb_test "show radix" "Input and output radices set to decimal 16, hex 10, octal 20..*" "show radix (16)" 263#test set radix 10 264gdb_test "set radix" "Input and output radices now set to decimal 10, hex a, octal 12..*" "set radix 10" 265#test show radix 10 266gdb_test "show radix" "Input and output radices set to decimal 10, hex a, octal 12..*" "show radix (10)" 267#test set width 90 268gdb_test_no_output "set width 90" "set width 90" 269#test show width 90 270gdb_test "show width" "Number of characters gdb thinks are in a line is 90..*" "show width (90)" 271#test set write on 272# This is only supported on targets which use exec.o. 273gdb_test_no_output "set write on" "set write on" 274#test show write on 275# This is only supported on targets which use exec.o. 276gdb_test "show write" "Writing into executable and core files is on..*" "show write (on)" 277#test show user 278gdb_test_no_output "show user" "show user" 279#test set verbose on 280gdb_test_no_output "set verbose on" "set verbose on" 281#test show verbose on 282gdb_test "show verbose" "Verbose printing of informational messages is on..*" "show verbose (on)" 283#test set verbose off 284gdb_test_no_output "set verbose off" "set verbose off" 285#test show verbose off 286gdb_test "show verbose" "Verbosity is off..*" "show verbose (off)" 287#test argument must be preceded by space 288foreach x {"history file" "solib-search-path" "data-directory"} { 289 foreach y {"/home/" "." "~/home" "=home"} { 290 gdb_test "set $x$y" "Argument must be preceded by space." \ 291 "$x is not set to $y" 292 } 293} 294