| 1 | # Copyright 1992-2014 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 | |
| 19 | standard_testfile .c |
| 20 | |
| 21 | if { [gdb_compile ${srcdir}/${subdir}/${srcfile} ${binfile} executable {debug}] != "" } { |
| 22 | untested setshow.exp |
| 23 | return -1 |
| 24 | } |
| 25 | |
| 26 | # Start with a fresh gdb |
| 27 | |
| 28 | clean_restart ${binfile} |
| 29 | |
| 30 | # make sure $pc is sane, in case we're talking to a board. |
| 31 | if { ![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 |
| 45 | gdb_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. |
| 50 | set old_gdb_prompt $gdb_prompt |
| 51 | set gdb_prompt "\r\n\032\032pre-prompt\r\n$gdb_prompt \r\n\032\032prompt\r\n" |
| 52 | |
| 53 | gdb_test_multiple "set annotate 2" "set annotate 2" { |
| 54 | -re "\r\n$gdb_prompt$" { |
| 55 | pass "set annotate 2" |
| 56 | } |
| 57 | } |
| 58 | |
| 59 | gdb_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 |
| 66 | gdb_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. |
| 73 | set gdb_prompt $old_gdb_prompt |
| 74 | |
| 75 | #test set annotate 1 |
| 76 | gdb_test "set annotate 1" ".*post-prompt.*" "set annotate 1" |
| 77 | gdb_test "show annotate" "Annotation_level is 1..*" "show annotate (1)" |
| 78 | #test annotation_level 1 |
| 79 | gdb_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 |
| 81 | gdb_test_no_output "set annotate 0" "set annotate 0" |
| 82 | gdb_test "show annotate" "Annotation_level is 0..*" "show annotate (0)" |
| 83 | #test annotation_level 0 |
| 84 | gdb_test "info line 1" "Line 1 of .* is at address .* but contains no code.*" "annotation_level 0" |
| 85 | |
| 86 | gdb_test_no_output "set args ~" |
| 87 | gdb_test "show args" "Argument list to give program being debugged when it is started is \"~\"..*" \ |
| 88 | "show args ~" |
| 89 | #test set args |
| 90 | gdb_test_no_output "set args foo bar blup baz bubble" "set args" |
| 91 | #test show args |
| 92 | gdb_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. |
| 95 | if { !$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 |
| 102 | gdb_test "set check range on" ".*" "set check range on" |
| 103 | #test show check range on |
| 104 | gdb_test "show check range" "Range checking is \"on\"\..*" "show check range (on)" |
| 105 | #test set check range off with trailing space |
| 106 | gdb_test_no_output "set check range off " "set check range off" |
| 107 | #test show check range off |
| 108 | gdb_test "show check range" "Range checking is \"off\"\..*" "show check range (off)" |
| 109 | #test set check range auto |
| 110 | gdb_test_no_output "set check range auto" "set check range auto" |
| 111 | #test show check range auto |
| 112 | gdb_test "show check range" "Range checking is \"auto; currently .*" "show check range (auto)" |
| 113 | |
| 114 | # Test set check type on |
| 115 | gdb_test "set check type on" ".*" "set check type on" |
| 116 | |
| 117 | # Test show check type on |
| 118 | gdb_test "show check type" "Strict type checking is on\..*" \ |
| 119 | "show check type (on)" |
| 120 | |
| 121 | # Test set check type off with trailing space |
| 122 | gdb_test_no_output "set check type off " "set check type off" |
| 123 | |
| 124 | # Test show check type off |
| 125 | gdb_test "show check type" "Strict type checking is off\..*" \ |
| 126 | "show check type (off)" |
| 127 | |
| 128 | #test set complaints 100 |
| 129 | gdb_test_no_output "set complaints 100" "set complaints 100" |
| 130 | #test show complaints 100 |
| 131 | gdb_test "show complaints" "Max number of complaints about incorrect symbols is 100..*" "show complaints (100)" |
| 132 | #test set complaints 0 |
| 133 | gdb_test_no_output "set complaints 0" "set complaints 0" |
| 134 | #test show complaints 0 |
| 135 | gdb_test "show complaints" "Max number of complaints about incorrect symbols is 0..*" "show complaints (0)" |
| 136 | #test set confirm off |
| 137 | gdb_test_no_output "set confirm off" "set confirm off" |
| 138 | #test show confirm off |
| 139 | gdb_test "show confirm" "Whether to confirm potentially dangerous operations is off..*" "show confirm (off)" |
| 140 | #test set confirm on |
| 141 | gdb_test_no_output "set confirm on" "set confirm on" |
| 142 | #test show confirm on |
| 143 | gdb_test "show confirm" "Whether to confirm potentially dangerous operations is on..*" "show confirm (on)" |
| 144 | #test set editing off |
| 145 | gdb_test_no_output "set editing off" "set editing off" |
| 146 | #test show editing off |
| 147 | gdb_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 |
| 153 | gdb_test_no_output "set environment FOOBARBAZ = grbxgrbxgrbx" \ |
| 154 | "set environment FOOBARBAZ" |
| 155 | #test show environment FOOBARBAZ |
| 156 | gdb_test "show environment FOOBARBAZ" "FOOBARBAZ = grbxgrbxgrbx.*" "show environment FOOBARBAZ" |
| 157 | #test set height 100 |
| 158 | gdb_test_no_output "set height 100" "set height 100" |
| 159 | #test show height 100 |
| 160 | gdb_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. |
| 163 | gdb_test_no_output "set height unlimited" |
| 164 | #test set history expansion on |
| 165 | gdb_test_no_output "set history expansion on" "set history expansion on" |
| 166 | #test show history expansion on |
| 167 | gdb_test "show history expansion on" "History expansion on command input is on.*" "show history expansion" |
| 168 | #get home directory path |
| 169 | set HOME "" |
| 170 | set test "show environment HOME" |
| 171 | gdb_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 |
| 178 | gdb_test_no_output "set history filename ~/foobar.baz" \ |
| 179 | "set history filename ~/foobar.baz" |
| 180 | #test show history filename ~/foobar.baz |
| 181 | gdb_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 |
| 185 | set PWD "" |
| 186 | set test "show working directory" |
| 187 | gdb_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 |
| 194 | gdb_test_no_output "set history filename foobar.baz" \ |
| 195 | "set history filename foobar.baz" |
| 196 | #test show history filename foobar.baz |
| 197 | gdb_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 |
| 201 | gdb_test_no_output "set history save on" "set history save on" |
| 202 | #test show history save on |
| 203 | gdb_test "show history save" "Saving of the history record on exit is on..*" "show history save (on)" |
| 204 | #history saving should stay disabled |
| 205 | gdb_test_no_output "set history save off" "set history save off" |
| 206 | #test set history size 100 |
| 207 | gdb_test_no_output "set history size 100" "set history size 100" |
| 208 | #test show history size 100 |
| 209 | gdb_test "show history size" "The size of the command history is 100..*" "show history size (100)" |
| 210 | #test set language asm |
| 211 | gdb_test "set language asm" ".*" "set language asm" |
| 212 | #test show language asm |
| 213 | gdb_test "show language" "The current source language is \"asm\"..*" "show language (asm)" |
| 214 | #test set language java, with a trailing space |
| 215 | gdb_test_no_output "set language java " "set language java" |
| 216 | #test show language java |
| 217 | gdb_test "show language" "The current source language is \"java\"..*" "show language (java)" |
| 218 | #test completion for set language. |
| 219 | gdb_test "complete set language min" "set language minimal" \ |
| 220 | "complete set language minimal" |
| 221 | #test set language auto |
| 222 | gdb_test_no_output "set language auto" "set language auto" |
| 223 | #test show language |
| 224 | gdb_test "show language" "The current source language is \"auto.*\"..*" "show language (auto)" |
| 225 | #test set listsize 100 |
| 226 | gdb_test_no_output "set listsize 100" "set listsize 100" |
| 227 | #test show listsize 100 |
| 228 | gdb_test "show listsize" "Number of source lines gdb will list by default is 100..*" "show listsize (100)" |
| 229 | |
| 230 | if ![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 |
| 258 | gdb_test "set radix 11" "Unsupported output radix ``decimal 11''; output radix unchanged..*" "set radix 11" |
| 259 | #test set radix 16 |
| 260 | gdb_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 |
| 262 | gdb_test "show radix" "Input and output radices set to decimal 16, hex 10, octal 20..*" "show radix (16)" |
| 263 | #test set radix 10 |
| 264 | gdb_test "set radix" "Input and output radices now set to decimal 10, hex a, octal 12..*" "set radix 10" |
| 265 | #test show radix 10 |
| 266 | gdb_test "show radix" "Input and output radices set to decimal 10, hex a, octal 12..*" "show radix (10)" |
| 267 | #test set width 90 |
| 268 | gdb_test_no_output "set width 90" "set width 90" |
| 269 | #test show width 90 |
| 270 | gdb_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. |
| 273 | gdb_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. |
| 276 | gdb_test "show write" "Writing into executable and core files is on..*" "show write (on)" |
| 277 | #test show user |
| 278 | gdb_test_no_output "show user" "show user" |
| 279 | #test set verbose on |
| 280 | gdb_test_no_output "set verbose on" "set verbose on" |
| 281 | #test show verbose on |
| 282 | gdb_test "show verbose" "Verbose printing of informational messages is on..*" "show verbose (on)" |
| 283 | #test set verbose off |
| 284 | gdb_test_no_output "set verbose off" "set verbose off" |
| 285 | #test show verbose off |
| 286 | gdb_test "show verbose" "Verbosity is off..*" "show verbose (off)" |
| 287 | #test argument must be preceded by space |
| 288 | foreach 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 | } |