1# Copyright 1998, 1999, 2002, 2003, 2004, 2007 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# Please email any bugs, comments, and/or additions to this file to: 17# bug-gdb@prep.ai.mit.edu 18 19# This file was written by Elena Zannoni (ezannoni@cygnus.com) 20 21# This file is part of the gdb testsuite. 22 23# 24# tests for command completion 25# 26# Here are some useful test cases for completion. 27# They should be tested with both M-? and TAB. 28# 29# "show output-" "radix" 30# "show output" "-radix" 31# "p" ambiguous (commands starting with p--path, print, printf, etc.) 32# "p " ambiguous (all symbols) 33# "info t foo" no completions 34# "info t " no completions 35# "info t" ambiguous ("info target", "info terminal", etc.) 36# "info ajksdlfk" no completions 37# "info ajksdlfk " no completions 38# "info" " " 39# "info " ambiguous (all info commands) 40# "p \"break1" unambiguous (completes to filename "break1.c") 41# "p \"break1." unambiguous (should complete to "break1.c" but does not, 42# due to readline limitations) 43# "p 'a" ambiguous (all symbols starting with a) 44# "p b-a" ambiguous (all symbols starting with a) 45# "p b-" ambiguous (all symbols) 46# "file Make" "file" (word break hard to screw up here) 47# "file ../gdb.stabs/we" "ird" (needs to not break word at slash) 48# 49 50 51if $tracelevel then { 52 strace $tracelevel 53 } 54 55 56global usestubs 57 58# 59# test running programs 60# 61set prms_id 0 62set bug_id 0 63 64set testfile "break" 65set srcfile ${testfile}.c 66set srcfile1 ${testfile}1.c 67set binfile ${objdir}/${subdir}/${testfile} 68 69if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}0.o" object {debug nowarnings}] != "" } { 70 untested completion.exp 71 return -1 72} 73 74if { [gdb_compile "${srcdir}/${subdir}/${srcfile1}" "${binfile}1.o" object {debug nowarnings}] != "" } { 75 untested completion.exp 76 return -1 77} 78 79if { [gdb_compile "${binfile}0.o ${binfile}1.o" "${binfile}" executable {debug nowarnings}] != "" } { 80 untested completion.exp 81 return -1 82} 83 84if [get_compiler_info ${binfile}] { 85 return -1; 86} 87 88gdb_exit 89 90# Don't let a .inputrc file or an existing setting of INPUTRC mess up 91# the test results. Even if /dev/null doesn't exist on the particular 92# platform, the readline library will use the default setting just by 93# failing to open the file. OTOH, opening /dev/null successfully will 94# also result in the default settings being used since nothing will be 95# read from this file. 96global env 97if [info exists env(INPUTRC)] { 98 set old_inputrc $env(INPUTRC) 99} 100set env(INPUTRC) "/dev/null" 101 102gdb_start 103gdb_reinitialize_dir $srcdir/$subdir 104gdb_load ${binfile} 105 106if ![runto_main] then { 107 perror "tests suppressed" 108} 109 110set oldtimeout1 $timeout 111set timeout 30 112 113 114send_gdb "hfgfh\t" 115sleep 1 116gdb_expect { 117 -re "^hfgfh\\\x07$"\ 118 { send_gdb "\n" 119 gdb_expect { 120 -re "Undefined command: \"hfgfh\"\\. Try \"help\"\\..*$gdb_prompt $"\ 121 { pass "complete 'hfgfh'"} 122 -re ".*$gdb_prompt $" { fail "complete 'hfgfh'"} 123 timeout {fail "(timeout) complete 'hfgfh'"} 124 } 125 } 126 -re ".*$gdb_prompt $" { fail "complete 'hfgfh'" } 127 timeout { fail "(timeout) complete 'hfgfh'" } 128 } 129 130#exp_internal 0 131 132send_gdb "show output\t" 133sleep 1 134gdb_expect { 135 -re "^show output-radix $"\ 136 { send_gdb "\n" 137 gdb_expect { 138 -re "Default output radix for printing of values is 10\\..*$gdb_prompt $"\ 139 { pass "complete 'show output'"} 140 -re ".*$gdb_prompt $" { fail "complete 'show output'"} 141 timeout {fail "(timeout) complete 'show output'"} 142 } 143 } 144 -re "^show output$"\ 145 { send_gdb "\n" 146 gdb_expect { 147 -re "Default output radix for printing of values is 10\\..*$gdb_prompt $"\ 148 { fail "complete 'show output'"} 149 -re ".*$gdb_prompt $" { fail "complete 'show output'"} 150 timeout { fail "(timeout) complete 'show output'"} 151 } 152 153 } 154 155 -re ".*$gdb_prompt $" { fail "complete 'show output'" } 156 timeout { fail "(timeout) complete 'show output'" } 157 } 158 159 160send_gdb "show output-\t" 161sleep 1 162gdb_expect { 163 -re "^show output-radix $"\ 164 { send_gdb "\n" 165 gdb_expect { 166 -re "Default output radix for printing of values is 10\\..*$gdb_prompt $"\ 167 { pass "complete 'show output-'"} 168 -re ".*$gdb_prompt $" { fail "complete 'show output-'"} 169 timeout {fail "(timeout) complete 'show output-'"} 170 } 171 } 172 -re "^show output-$"\ 173 { send_gdb "\n" 174 gdb_expect { 175 -re "Default output radix for printing of values is 10\\..*$gdb_prompt $"\ 176 { fail "complete 'show output-'"} 177 -re ".*$gdb_prompt $" { fail "complete 'show output-'"} 178 timeout { fail "(timeout) complete 'show output-'"} 179 } 180 181 } 182 183 -re ".*$gdb_prompt $" { fail "complete 'show output-'" } 184 timeout { fail "(timeout) complete 'show output-'" } 185 } 186 187send_gdb "p\t" 188sleep 1 189gdb_expect { 190 -re "^p\\\x07$"\ 191 { send_gdb "\n" 192 sleep 1 193 gdb_expect { 194 -re "The history is empty\\..*$gdb_prompt $"\ 195 { pass "complete 'p'"} 196 -re ".*$gdb_prompt $" { fail "complete 'p'"} 197 timeout {fail "(timeout) complete 'p' 2"} 198 } 199 } 200 -re ".*$gdb_prompt $" { fail "complete 'p'" } 201 timeout { fail "(timeout) complete 'p' 1" } 202 } 203 204send_gdb "p \t" 205sleep 3 206gdb_expect { 207 -re "^p \\\x07$"\ 208 { send_gdb "\n" 209 sleep 1 210 gdb_expect { 211 -re "The history is empty\\..*$gdb_prompt $"\ 212 { pass "complete 'p '"} 213 -re ".*$gdb_prompt $" { fail "complete 'p '"} 214 timeout {fail "(timeout) complete 'p ' 1"} 215 } 216 } 217 -re ".*$gdb_prompt $" { fail "complete 'p '" } 218 timeout { fail "(timeout) complete 'p ' 2" } 219 } 220 221 222send_gdb "info t foo\t" 223sleep 1 224gdb_expect { 225 -re "^info t foo\\\x07$"\ 226 { send_gdb "\n" 227 gdb_expect { 228 -re "Ambiguous info command \"t foo\": target, terminal, threads, tp, tracepoints, types\\..*$gdb_prompt $"\ 229 { pass "complete 'info t foo'"} 230 -re ".*$gdb_prompt $" { fail "complete 'info t foo'"} 231 timeout {fail "(timeout) complete 'info t foo'"} 232 } 233 } 234 -re ".*$gdb_prompt $" { fail "complete 'info t foo'" } 235 timeout { fail "(timeout) complete 'info t foo'" } 236 } 237 238send_gdb "info t\t" 239sleep 1 240gdb_expect { 241 -re "^info t\\\x07$"\ 242 { send_gdb "\n" 243 gdb_expect { 244 -re "Ambiguous info command \"t\": target, terminal, threads, tp, tracepoints, types\\.. 245*$gdb_prompt $"\ 246 { pass "complete 'info t'"} 247 -re ".*$gdb_prompt $" { fail "complete 'info t'"} 248 timeout {fail "(timeout) complete 'info t'"} 249 } 250 } 251 -re ".*$gdb_prompt $" { fail "complete 'info t'" } 252 timeout { fail "(timeout) complete 'info t'" } 253 } 254 255 256send_gdb "info t \t" 257sleep 1 258gdb_expect { 259 -re "^info t \\\x07$"\ 260 { send_gdb "\n" 261 gdb_expect { 262 -re "Ambiguous info command \"t \": target, terminal, threads, tp, tracepoints, types\\.. 263*$gdb_prompt $"\ 264 { pass "complete 'info t '"} 265 -re ".*$gdb_prompt $" { fail "complete 'info t '"} 266 timeout {fail "(timeout) complete 'info t '"} 267 } 268 } 269 -re ".*$gdb_prompt $" { fail "complete 'info t '" } 270 timeout { fail "(timeout) complete 'info t '" } 271 } 272 273 274send_gdb "info asdfgh\t" 275sleep 1 276gdb_expect { 277 -re "^info asdfgh\\\x07$"\ 278 { send_gdb "\n" 279 gdb_expect { 280 -re "Undefined info command: \"asdfgh\". Try \"help info\"\\.. 281*$gdb_prompt $"\ 282 { pass "complete 'info asdfgh'"} 283 -re ".*$gdb_prompt $" { fail "complete 'info asdfgh'"} 284 timeout {fail "(timeout) complete 'info asdfgh'"} 285 } 286 } 287 -re ".*$gdb_prompt $" { fail "complete 'info asdfgh'" } 288 timeout { fail "(timeout) complete 'info asdfgh'" } 289 } 290 291 292send_gdb "info asdfgh \t" 293sleep 1 294gdb_expect { 295 -re "^info asdfgh \\\x07$"\ 296 { send_gdb "\n" 297 gdb_expect { 298 -re "Undefined info command: \"asdfgh \". Try \"help info\"\\.. 299*$gdb_prompt $"\ 300 { pass "complete 'info asdfgh '"} 301 -re ".*$gdb_prompt $" { fail "complete 'info asdfgh '"} 302 timeout {fail "(timeout) complete 'info asdfgh '"} 303 } 304 } 305 -re ".*$gdb_prompt $" { fail "complete 'info asdfgh '" } 306 timeout { fail "(timeout) complete 'info asdfgh '" } 307 } 308 309send_gdb "info\t" 310sleep 1 311gdb_expect { 312 -re "^info $"\ 313 { send_gdb "\n" 314 gdb_expect { 315 -re "\"info\" must be followed by the name of an info command\\.\r\nList of info subcommands.*$gdb_prompt $"\ 316 { pass "complete 'info'"} 317 -re ".*$gdb_prompt $" { fail "complete 'info'"} 318 timeout {fail "(timeout) complete 'info'"} 319 } 320 } 321 -re ".*$gdb_prompt $" { fail "complete 'info'" } 322 timeout { fail "(timeout) complete 'info'" } 323 } 324 325send_gdb "info \t" 326sleep 1 327gdb_expect { 328 -re "^info \\\x07$"\ 329 { send_gdb "\n" 330 gdb_expect { 331 -re "\"info\" must be followed by the name of an info command\\.\r\nList of info subcommands:\r\n\r\n.*$gdb_prompt $"\ 332 { pass "complete 'info '"} 333 -re ".*$gdb_prompt $" { fail "complete 'info '"} 334 timeout {fail "(timeout) complete 'info '"} 335 } 336 } 337 -re ".*$gdb_prompt $" { fail "complete 'info '" } 338 timeout { fail "(timeout) complete 'info '" } 339 } 340 341 342send_gdb "info \t" 343sleep 1 344gdb_expect { 345 -re "^info \\\x07$"\ 346 { send_gdb "\t" 347 gdb_expect { 348 -re "address.*types.*$gdb_prompt info $"\ 349 { send_gdb "\n" 350 gdb_expect { 351 -re "\"info\".*unambiguous\\..*$gdb_prompt $"\ 352 { pass "complete (2) 'info '"} 353 -re ".*$gdb_prompt $" { fail "complete (2) 'info '"} 354 timeout {fail "(timeout) complete (2) 'info '"} 355 } 356 } 357 -re ".*$gdb_prompt $" { fail "complete (2) 'info '"} 358 timeout {fail "(timeout) complete (2) 'info '"} 359 } 360 } 361 -re ".*$gdb_prompt $" { fail "complete (2) 'info '" } 362 timeout { fail "(timeout) complete (2) 'info '" } 363 } 364 365 366send_gdb "p \"break1\t" 367sleep 1 368gdb_expect { 369 -re "^p \"break1\\\x07$"\ 370 { send_gdb "\n" 371 gdb_expect { 372 -re ".*$gdb_prompt $" { fail "complete 'p \"break1'"} 373 timeout {fail "(timeout) complete 'p \"break1'"} 374 } 375 } 376 -re "^p \"break1\\.c\"$"\ 377 { send_gdb "\n" 378 gdb_expect { 379 -re ".*$gdb_prompt $" { pass "complete 'p \"break1'"} 380 timeout {fail "(timeout) complete 'p \"break1'"} 381 } 382 } 383 -re "^p \"break1.*$" 384 { send_gdb "\n" 385 gdb_expect { 386 -re ".*$gdb_prompt $" { fail "complete 'p \"break1'"} 387 timeout {fail "(timeout) complete 'p \"break1'"} 388 } 389 } 390 -re ".*$gdb_prompt $" { fail "complete 'p \"break1'" } 391 timeout { fail "(timeout) complete 'p \"break1'" } 392 } 393 394setup_xfail "*-*-*" 395send_gdb "p \"break1.\t" 396sleep 1 397gdb_expect { 398 -re "^p \"break1\\.\\\x07$"\ 399 { send_gdb "\n" 400 gdb_expect { 401 -re ".*$gdb_prompt $" { fail "complete 'p \"break1.'"} 402 timeout {fail "(timeout) complete 'p \"break1.'"} 403 } 404 } 405 -re "^p \"break1\\.c\"$"\ 406 { send_gdb "\n" 407 gdb_expect { 408 -re ".*$gdb_prompt $" { pass "complete 'p \"break1.'"} 409 timeout {fail "(timeout) complete 'p \"break1.'"} 410 } 411 } 412 -re "^p \"break1\\..*$" 413 { send_gdb "\n" 414 gdb_expect { 415 -re ".*$gdb_prompt $" { fail "complete 'p \"break1.'"} 416 timeout {fail "(timeout) complete 'p \"break1.'"} 417 } 418 } 419 -re ".*$gdb_prompt $" { fail "complete 'p \"break1.'" } 420 timeout { fail "(timeout) complete 'p \"break1.'" } 421 } 422 423send_gdb "p 'a\t" 424sleep 1 425gdb_expect { 426 -re "^p 'a\\\x07$"\ 427 { send_gdb "\n" 428 gdb_expect { 429 -re "(Invalid character constant\\.|Unmatched single quote\\.).*$gdb_prompt $"\ 430 { pass "complete 'p \'a'"} 431 -re ".*$gdb_prompt $" { fail "complete 'p \'a'"} 432 timeout {fail "(timeout) complete 'p \'a'"} 433 } 434 } 435 -re ".*$gdb_prompt $" { fail "complete 'p \'a'" } 436 timeout { fail "(timeout) complete 'p \'a'" } 437 } 438 439send_gdb "p 'a\t" 440sleep 1 441gdb_expect { 442 -re "^p 'a\\\x07$" { 443 send_gdb "\t" 444 gdb_expect { 445 -re ".*argv.*$gdb_prompt p .a$" { 446 send_gdb "\n" 447 gdb_expect { 448 -re "(Invalid character constant\\.|Unmatched single quote\\.).*$gdb_prompt $" { 449 pass "complete (2) 'p \'a'" 450 } 451 -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" } 452 timeout { fail "(timeout) complete (2) 'p \'a'" } 453 } 454 } 455 -re "(There are $decimal possibilities\\. Do you really\r\nwish to see them all.|Display all $decimal possibilities.) \\(y or n\\)$" { 456 send_gdb "n" 457 gdb_expect { 458 -re "\\(gdb\\) p 'a$" { 459 send_gdb "\n" 460 gdb_expect { 461 -re "(Invalid character constant\\.|Unmatched single quote\\.).*$gdb_prompt $" { 462 pass "complete (2) 'p \'a'" 463 } 464 -re ".*$gdb_prompt $" { 465 fail "complete (2) 'p \'a'" 466 } 467 timeout { fail "(timeout) complete (2) 'p \'a'" } 468 } 469 } 470 -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" } 471 timeout { fail "(timeout) complete (2) 'p \'a'" } 472 } 473 } 474 -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" } 475 timeout { fail "(timeout) complete (2) 'p \'a'" } 476 } 477 } 478 -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" } 479 timeout { fail "(timeout) complete (2) 'p \'a'" } 480} 481 482 483# These tests used to try completing the shorter "p b-a". 484# Unfortunately, on some systems, there are .o files in system 485# libraries which declare static variables named `b'. Of course, 486# those variables aren't really in scope, as far as the compiler is 487# concerned. But GDB deliberately tries to be more liberal: if you 488# enter an identifier that doesn't have any binding in scope, GDB will 489# search all the program's compilation units for a static variable of 490# the given name. 491# 492# This behavior can help avoid a lot of pedantry, so it's usually a 493# good thing. But in this test case, it causes GDB to print the value 494# of some random variable, instead of giving us the "No symbol..." 495# error we were expecting. 496# 497# For example, on S/390 linux, the file s_atan.c in libm.a declares a 498# `b', which is a structure containing an int and a float, so GDB says 499# ``Argument to arithmetic operation not a number or boolean'' instead 500# of ``No symbol ...''. 501# 502# So, I'm hoping that there is no system with a static library variable named 503# `no_var_by_this_name'. 504send_gdb "p no_var_named_this-a\t" 505sleep 1 506gdb_expect { 507 -re "^p no_var_named_this-a\\\x07$" { 508 send_gdb "\n" 509 gdb_expect { 510 -re "No symbol \"no_var_named_this\" in current context\\..*$gdb_prompt $" { 511 pass "complete 'p no_var_named_this-a'" 512 } 513 -re ".*$gdb_prompt $" { 514 fail "complete 'p no_var_named_this-a'" 515 } 516 timeout { 517 fail "(timeout) complete 'p no_var_named_this-a'" 518 } 519 } 520 } 521 -re ".*$gdb_prompt $" { 522 fail "complete 'p no_var_named_this-a'" 523 } 524 timeout { 525 fail "(timeout) complete 'p no_var_named_this-a'" 526 } 527} 528 529send_gdb "p no_var_named_this-a\t" 530sleep 1 531gdb_expect { 532 -re "^p no_var_named_this-a\\\x07$" { 533 send_gdb "\t" 534 gdb_expect { 535 -re ".*argv.*$gdb_prompt p no_var_named_this-a$" { 536 send_gdb "\n" 537 gdb_expect { 538 -re "No symbol \"no_var_named_this\" in current context\\..*$gdb_prompt $" { 539 pass "complete (2) 'p no_var_named_this-a'" 540 } 541 -re ".*$gdb_prompt $" { 542 fail "complete (2) 'p no_var_named_this-a'" 543 } 544 timeout { 545 fail "(timeout) complete (2) 'p no_var_named_this-a'" 546 } 547 } 548 } 549 -re "(There are $decimal possibilities\\. Do you really\r\nwish to see them all.|Display all $decimal possibilities.) \\(y or n\\)$" { 550 send_gdb "n" 551 gdb_expect { 552 -re "\\(gdb\\) p no_var_named_this-a$" { 553 send_gdb "\n" 554 gdb_expect { 555 -re "No symbol \"no_var_named_this\" in current context\\..*$gdb_prompt $" { 556 pass "complete (2) 'p no_var_named_this-a'" 557 } 558 -re ".*$gdb_prompt $" { 559 fail "complete (2) 'p no_var_named_this-a'" 560 } 561 timeout { 562 fail "(timeout) complete (2) 'p no_var_named_this-a'" 563 } 564 } 565 } 566 -re ".*$gdb_prompt $" { 567 fail "complete (2) 'p no_var_named_this-a'" 568 } 569 timeout { 570 fail "(timeout) complete (2) 'p no_var_named_this-a'" 571 } 572 } 573 } 574 -re ".*$gdb_prompt $" { 575 fail "complete (2) 'p no_var_named_this-a'" 576 } 577 timeout { fail "(timeout) complete (2) 'p no_var_named_this-a'" } 578 } 579 } 580 -re ".*$gdb_prompt $" { fail "complete (2) 'p no_var_named_this-a'" } 581 timeout { fail "(timeout) complete (2) 'p no_var_named_this-a'" } 582} 583 584send_gdb "p no_var_named_this-\t" 585sleep 1 586gdb_expect { 587 -re "^p no_var_named_this-\\\x07$" { 588 send_gdb "\t" 589 gdb_expect { 590 -re "(There are $decimal possibilities\\. Do you really\r\nwish to see them all.|Display all $decimal possibilities.) \\(y or n\\)$" { 591 send_gdb "n" 592 gdb_expect { 593 -re "\\(gdb\\) p no_var_named_this-$" { 594 send_gdb "\n" 595 gdb_expect { 596 -re "No symbol \"no_var_named_this\" in current context\\..*$gdb_prompt $" { 597 pass "complete (2) 'p no_var_named_this-'" 598 } 599 -re ".*$gdb_prompt $" { 600 fail "complete (2) 'p no_var_named_this-'" 601 } 602 timeout { 603 fail "(timeout) complete (2) 'p no_var_named_this-'" 604 } 605 } 606 } 607 -re ".*$gdb_prompt $" { 608 fail "complete (2) 'p no_var_named_this-'" 609 } 610 timeout { 611 fail "(timeout) complete (2) 'p no_var_named_this-'" 612 } 613 } 614 } 615 -re ".*$gdb_prompt $" { 616 fail "complete (2) 'p no_var_named_this-'" 617 } 618 timeout { fail "(timeout) complete (2) 'p no_var_named_this-'" } 619 } 620 } 621 -re ".*$gdb_prompt $" { fail "complete (2) 'p no_var_named_this-'" } 622 timeout { fail "(timeout) complete (2) 'p no_var_named_this-'" } 623} 624 625 626# The following tests used to simply try to complete `${objdir}/file', 627# and so on. The problem is that ${objdir} can be very long; the 628# completed filename may be more than eighty characters wide. When 629# this happens, readline tries to manage things, producing output that 630# may make sense on the screen, but is rather hard for our script to 631# recognize. 632# 633# In the case that motivated this change, the (gdb) prompt occupied 634# the leftmost six columns, and `${objdir}/' was seventy-four 635# characters long --- eighty in all. After printing the slash, 636# readline emitted a space, a carriage return, and then `Makefile' 637# (the tab character being received as input after `Make'. 638# 639# Basically, you have to let readline do whatever it's going to do to 640# make the screen look right. If it happens to use a different 641# strategy on Tuesdays to get the cursor in the right place, that's 642# not something the testsuite should care about. 643# 644# So, we avoid long lines. We `cd' to ${objdir} first, and then do 645# the completion relative to the current directory. 646 647# ${srcdir} may be a relative path. We want to make sure we end up 648# in the right directory - so make sure we know where it is. 649set mydir [pwd] 650cd ${srcdir} 651set fullsrcdir [pwd] 652cd ${mydir} 653 654# If the directory name contains a '+' we must escape it, adding a backslash. 655# If not, the test below will fail because it will interpret the '+' as a 656# regexp operator. We use string_to_regexp for this purpose. 657 658gdb_test "cd ${fullsrcdir}" \ 659 "Working directory [string_to_regexp ${fullsrcdir}].*" \ 660 "cd to \${srcdir}" 661 662send_gdb "complete file ./gdb.base/compl\n" 663sleep 1 664gdb_expect { 665 -re "file ./gdb.base/completion\\.exp.*$gdb_prompt $" 666 { pass "complete-command 'file ./gdb.base/compl'"} 667 -re ".*$gdb_prompt $" { fail "complete-command 'file ./gdb.base/compl'" } 668 timeout { fail "(timeout) complete-command 'file ./gdb.base/compl'" } 669} 670 671send_gdb "file ./gdb.base/complet\t" 672sleep 1 673gdb_expect { 674 -re "^file ./gdb.base/completion\\.exp $"\ 675 { send_gdb "\n" 676 # Ignore the exact error message. 677 gdb_test_multiple "" "complete 'file ./gdb.base/complet'" { 678 -re "\r\nA program is being debugged already\\.\[\r\n\]+Are you sure you want to change the file\\? \\(y or n\\) $" { 679 send_gdb "n\n" 680 exp_continue 681 } 682 -re ".*$gdb_prompt $" { pass "complete 'file ./gdb.base/complet'" } 683 } 684 } 685 -re ".*$gdb_prompt $" { fail "complete 'file ./gdb.base/complet'" } 686 timeout { fail "(timeout) complete 'file ./gdb.base/complet'" } 687 } 688 689send_gdb "info func marke\t" 690sleep 1 691gdb_expect { 692 -re "^info func marke.*r$"\ 693 { 694 send_gdb "\t\t" 695 sleep 3 696 gdb_expect { 697 -re "marker1.*$gdb_prompt info func marker$"\ 698 { send_gdb "\n" 699 gdb_expect { 700 -re "All functions matching regular expression \"marker\":.*File.*break1.c:\r\nint marker1\\((void|)\\);\r\nint marker2\\(int\\).*marker3\\(char.*char.*\\).*marker4\\(long int\\);.*$gdb_prompt $"\ 701 { pass "complete 'info func marke'"} 702 -re ".*$gdb_prompt $" { fail "complete 'info func marke'"} 703 timeout {fail "(timeout) complete 'info func marke'"} 704 } 705 } 706 -re ".*$gdb_prompt $" { fail "complete 'info func marke'"} 707 timeout {fail "(timeout) complete 'info func marke'"} 708 } 709 } 710 -re ".*$gdb_prompt $" { fail "complete 'info func marke'" } 711 timeout { fail "(timeout) complete 'info func marke'" } 712 } 713 714 715send_gdb "set follow-fork-mode \t\t" 716sleep 1 717gdb_expect { 718 -re "child.*parent.*$gdb_prompt set follow-fork-mode $"\ 719 { send_gdb "\n" 720 gdb_expect { 721 -re "Requires an argument.*child.*parent.*$gdb_prompt $"\ 722 { pass "complete 'set follow-fork-mode'"} 723 -re "Ambiguous item \"\"\\..*$gdb_prompt $"\ 724 { pass "complete 'set follow-fork-mode'"} 725 -re ".*$gdb_prompt $" { fail "complete 'set follow-fork-mode'"} 726 timeout {fail "(timeout) complete 'set follow-fork-mode'"} 727 } 728 } 729 -re ".*$gdb_prompt $" { fail "complete 'set follow-fork-mode'" } 730 timeout { fail "(timeout) complete 'set follow-fork-mode'" } 731 } 732 733# Restore globals modified in this test... 734if [info exists old_inputrc] { 735 set env(INPUTRC) $old_inputrc 736} else { 737 unset env(INPUTRC) 738} 739set timeout $oldtimeout1 740 741return 0 742