# Copyright 1998, 1999, 2002, 2003, 2004 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  

# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu

# This file was written by Elena Zannoni (ezannoni@cygnus.com)

# This file is part of the gdb testsuite.

#
# tests for command completion
#
# Here are some useful test cases for completion.  
# They should be tested with both M-? and TAB.
#
#   "show output-" "radix"
#   "show output" "-radix"
#   "p" ambiguous (commands starting with p--path, print, printf, etc.)
#   "p "  ambiguous (all symbols)
#   "info t foo" no completions
#   "info t " no completions
#   "info t" ambiguous ("info target", "info terminal", etc.)
#   "info ajksdlfk" no completions
#   "info ajksdlfk " no completions
#   "info" " "
#   "info " ambiguous (all info commands)
#   "p \"break1" unambiguous (completes to filename "break1.c")
#   "p \"break1." unambiguous (should complete to "break1.c" but does not,
#	due to readline limitations)
#   "p 'a" ambiguous (all symbols starting with a)
#   "p b-a" ambiguous (all symbols starting with a)
#   "p b-" ambiguous (all symbols)
#   "file Make" "file" (word break hard to screw up here)
#   "file ../gdb.stabs/we" "ird" (needs to not break word at slash)
#


if $tracelevel then {
        strace $tracelevel
        }


global usestubs

#
# test running programs
#
set prms_id 0
set bug_id 0

set testfile "break"
set srcfile ${testfile}.c
set srcfile1 ${testfile}1.c
set binfile ${objdir}/${subdir}/${testfile}

if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}0.o" object {debug additional_flags=-w}] != "" } {
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}

if  { [gdb_compile "${srcdir}/${subdir}/${srcfile1}" "${binfile}1.o" object {debug additional_flags=-w}] != "" } {
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}

if  { [gdb_compile "${binfile}0.o ${binfile}1.o" "${binfile}" executable {debug additional_flags=-w}] != "" } {
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}

if [get_compiler_info ${binfile}] {
    return -1;
}

gdb_exit

# Don't let a .inputrc file or an existing setting of INPUTRC mess up
# the test results.  Even if /dev/null doesn't exist on the particular
# platform, the readline library will use the default setting just by
# failing to open the file.  OTOH, opening /dev/null successfully will
# also result in the default settings being used since nothing will be
# read from this file.
global env
if [info exists env(INPUTRC)] {
    set old_inputrc $env(INPUTRC)
}
set env(INPUTRC) "/dev/null"

gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}

if ![runto_main] then {
        perror "tests suppressed"
}

set oldtimeout1 $timeout
set timeout 30


send_gdb "hfgfh\t"
sleep 1
gdb_expect  {
        -re "^hfgfh\\\x07$"\
            { send_gdb "\n"
              gdb_expect {
                      -re "Undefined command: \"hfgfh\"\\.  Try \"help\"\\..*$gdb_prompt $"\
                                        { pass "complete 'hfgfh'"}
                      -re ".*$gdb_prompt $" { fail "complete 'hfgfh'"}
                      timeout           {fail "(timeout) complete 'hfgfh'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'hfgfh'" }
        timeout         { fail "(timeout) complete 'hfgfh'" }
        }

#exp_internal 0

send_gdb "show output\t"
sleep 1
gdb_expect  {
        -re "^show output-radix $"\
            { send_gdb "\n"
              gdb_expect {
                      -re "Default output radix for printing of values is 10\\..*$gdb_prompt $"\
                                        { pass "complete 'show output'"}
                      -re ".*$gdb_prompt $" { fail "complete 'show output'"}
                      timeout           {fail "(timeout) complete 'show output'"}
                     }
            }
        -re "^show output$"\
            { send_gdb "\n"
               gdb_expect {
                      -re "Default output radix for printing of values is 10\\..*$gdb_prompt $"\
                                        { fail "complete 'show output'"}
                      -re ".*$gdb_prompt $" { fail "complete 'show output'"}
                      timeout           { fail "(timeout) complete 'show output'"}
                     }

             }

        -re ".*$gdb_prompt $"       { fail "complete 'show output'" }
        timeout         { fail "(timeout) complete 'show output'" }
        }


send_gdb "show output-\t"
sleep 1
gdb_expect  {
        -re "^show output-radix $"\
            { send_gdb "\n"
              gdb_expect {
                      -re "Default output radix for printing of values is 10\\..*$gdb_prompt $"\
                                        { pass "complete 'show output-'"}
                      -re ".*$gdb_prompt $" { fail "complete 'show output-'"}
                      timeout           {fail "(timeout) complete 'show output-'"}
                     }
            }
        -re "^show output-$"\
            { send_gdb "\n"
               gdb_expect {
                      -re "Default output radix for printing of values is 10\\..*$gdb_prompt $"\
                                        { fail "complete 'show output-'"}
                      -re ".*$gdb_prompt $" { fail "complete 'show output-'"}
                      timeout           { fail "(timeout) complete 'show output-'"}
                     }

             }

        -re ".*$gdb_prompt $"       { fail "complete 'show output-'" }
        timeout         { fail "(timeout) complete 'show output-'" }
        }

send_gdb "p\t"
sleep 1
gdb_expect  {
        -re "^p\\\x07$"\
            { send_gdb "\n"
	      sleep 1
              gdb_expect {
                      -re "The history is empty\\..*$gdb_prompt $"\
                                        { pass "complete 'p'"}
                      -re ".*$gdb_prompt $" { fail "complete 'p'"}
                      timeout           {fail "(timeout) complete 'p' 2"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'p'" }
        timeout         { fail "(timeout) complete 'p' 1" }
        }

send_gdb "p \t"
sleep 3
gdb_expect  {
        -re "^p \\\x07$"\
            { send_gdb "\n"
	      sleep 1
              gdb_expect {
                      -re "The history is empty\\..*$gdb_prompt $"\
                                        { pass "complete 'p '"}
                      -re ".*$gdb_prompt $" { fail "complete 'p '"}
                      timeout           {fail "(timeout) complete 'p ' 1"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'p '" }
        timeout         { fail "(timeout) complete 'p ' 2" }
        }


send_gdb "info t foo\t"
sleep 1
gdb_expect  {
        -re "^info t foo\\\x07$"\
            { send_gdb "\n"
              gdb_expect {
                      -re "Ambiguous info command \"t foo\": target, terminal, threads, tp, tracepoints, types\\..*$gdb_prompt $"\
                                        { pass "complete 'info t foo'"}
                      -re ".*$gdb_prompt $" { fail "complete 'info t foo'"}
                      timeout           {fail "(timeout) complete 'info t foo'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'info t foo'" }
        timeout         { fail "(timeout) complete 'info t foo'" }
        }

send_gdb "info t\t"
sleep 1
gdb_expect  {
        -re "^info t\\\x07$"\
            { send_gdb "\n"
              gdb_expect {
                      -re "Ambiguous info command \"t\": target, terminal, threads, tp, tracepoints, types\\..
*$gdb_prompt $"\
                                        { pass "complete 'info t'"}
                      -re ".*$gdb_prompt $" { fail "complete 'info t'"}
                      timeout           {fail "(timeout) complete 'info t'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'info t'" }
        timeout         { fail "(timeout) complete 'info t'" }
        }


send_gdb "info t \t"
sleep 1
gdb_expect  {
        -re "^info t \\\x07$"\
            { send_gdb "\n"
              gdb_expect {
                      -re "Ambiguous info command \"t \": target, terminal, threads, tp, tracepoints, types\\..
*$gdb_prompt $"\
                                        { pass "complete 'info t '"}
                      -re ".*$gdb_prompt $" { fail "complete 'info t '"}
                      timeout           {fail "(timeout) complete 'info t '"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'info t '" }
        timeout         { fail "(timeout) complete 'info t '" }
        }


send_gdb "info asdfgh\t"
sleep 1
gdb_expect  {
        -re "^info asdfgh\\\x07$"\
            { send_gdb "\n"
              gdb_expect {
                      -re "Undefined info command: \"asdfgh\".  Try \"help info\"\\..
*$gdb_prompt $"\
                                        { pass "complete 'info asdfgh'"}
                      -re ".*$gdb_prompt $" { fail "complete 'info asdfgh'"}
                      timeout           {fail "(timeout) complete 'info asdfgh'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'info asdfgh'" }
        timeout         { fail "(timeout) complete 'info asdfgh'" }
        }


send_gdb "info asdfgh \t"
sleep 1
gdb_expect  {
        -re "^info asdfgh \\\x07$"\
            { send_gdb "\n"
              gdb_expect {
                      -re "Undefined info command: \"asdfgh \".  Try \"help info\"\\..
*$gdb_prompt $"\
                                        { pass "complete 'info asdfgh '"}
                      -re ".*$gdb_prompt $" { fail "complete 'info asdfgh '"}
                      timeout           {fail "(timeout) complete 'info asdfgh '"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'info asdfgh '" }
        timeout         { fail "(timeout) complete 'info asdfgh '" }
        }

send_gdb "info\t"
sleep 1
gdb_expect  {
        -re "^info $"\
            { send_gdb "\n"
              gdb_expect {
                      -re "\"info\" must be followed by the name of an info command\\.\r\nList of info subcommands:\r\n\r\n.*info address.*info watchpoints.*\r\n\r\nType \"help info\" followed by info subcommand name for full documentation.\r\nCommand name abbreviations are allowed if unambiguous\\..*$gdb_prompt $"\
                                        { pass "complete 'info'"}
                      -re ".*$gdb_prompt $" { fail "complete 'info'"}
                      timeout           {fail "(timeout) complete 'info'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'info'" }
        timeout         { fail "(timeout) complete 'info'" }
        }

send_gdb "info \t"
sleep 1
gdb_expect  {
        -re "^info \\\x07$"\
            { send_gdb "\n"
              gdb_expect {
                      -re "\"info\" must be followed by the name of an info command\\.\r\nList of info subcommands:\r\n\r\n.*info address.*Type \"help info\" followed by info subcommand name for full documentation.\r\nCommand name abbreviations are allowed if unambiguous\\..*$gdb_prompt $"\
                                        { pass "complete 'info '"}
                      -re ".*$gdb_prompt $" { fail "complete 'info '"}
                      timeout           {fail "(timeout) complete 'info '"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'info '" }
        timeout         { fail "(timeout) complete 'info '" }
        }


send_gdb "info \t"
sleep 1
gdb_expect  {
        -re "^info \\\x07$"\
            { send_gdb "\t"
              gdb_expect {
                      -re "address.*types.*$gdb_prompt info $"\
                          { send_gdb "\n"
                            gdb_expect {
                                     -re "\"info\".*unambiguous\\..*$gdb_prompt $"\
                                        { pass "complete (2) 'info '"}
                                     -re ".*$gdb_prompt $" { fail "complete (2) 'info '"}
                                     timeout           {fail "(timeout) complete (2) 'info '"}
                                    }
                           }
                      -re ".*$gdb_prompt $" { fail "complete (2) 'info '"}
                      timeout           {fail "(timeout) complete (2) 'info '"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete (2) 'info '" }
        timeout         { fail "(timeout) complete (2) 'info '" }
        }


send_gdb "p \"break1\t"
sleep 1
gdb_expect  {
        -re "^p \"break1\\\x07$"\
            { send_gdb "\n"
              gdb_expect {
                      -re ".*$gdb_prompt $" { fail "complete 'p \"break1'"}
                      timeout           {fail "(timeout) complete 'p \"break1'"}
                     }
            }
	-re "^p \"break1\\.c\"$"\
	    {	send_gdb "\n"
		gdb_expect {
		    -re ".*$gdb_prompt $" { pass "complete 'p \"break1'"}
		    timeout           {fail "(timeout) complete 'p \"break1'"}
		}
	    }
	-re "^p \"break1.*$"
	    {	send_gdb "\n"
		gdb_expect {
		    -re ".*$gdb_prompt $" { fail "complete 'p \"break1'"}
		    timeout           {fail "(timeout) complete 'p \"break1'"}
		}
	    }
        -re ".*$gdb_prompt $"       { fail "complete 'p \"break1'" }
        timeout         { fail "(timeout) complete 'p \"break1'" }
        }

setup_xfail "*-*-*"
send_gdb "p \"break1.\t"
sleep 1
gdb_expect  {
        -re "^p \"break1\\.\\\x07$"\
            { send_gdb "\n"
              gdb_expect {
                      -re ".*$gdb_prompt $" { fail "complete 'p \"break1.'"}
                      timeout           {fail "(timeout) complete 'p \"break1.'"}
                     }
            }
	-re "^p \"break1\\.c\"$"\
	    {	send_gdb "\n"
		gdb_expect {
		    -re ".*$gdb_prompt $" { pass "complete 'p \"break1.'"}
		    timeout           {fail "(timeout) complete 'p \"break1.'"}
		}
	    }
	-re "^p \"break1\\..*$"
	    {	send_gdb "\n"
		gdb_expect {
		    -re ".*$gdb_prompt $" { fail "complete 'p \"break1.'"}
		    timeout           {fail "(timeout) complete 'p \"break1.'"}
		}
	    }
        -re ".*$gdb_prompt $"       { fail "complete 'p \"break1.'" }
        timeout         { fail "(timeout) complete 'p \"break1.'" }
        }

send_gdb "p 'a\t"
sleep 1
gdb_expect  {
        -re "^p 'a\\\x07$"\
            { send_gdb "\n"
              gdb_expect {
                      -re "(Invalid character constant\\.|Unmatched single quote\\.).*$gdb_prompt $"\
                                        { pass "complete 'p \'a'"}
                      -re ".*$gdb_prompt $" { fail "complete 'p \'a'"}
                      timeout           {fail "(timeout) complete 'p \'a'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'p \'a'" }
        timeout         { fail "(timeout) complete 'p \'a'" }
        }

send_gdb "p 'a\t"
sleep 1
gdb_expect {
    -re "^p 'a\\\x07$" {
	send_gdb "\t"
	gdb_expect {
	    -re ".*argv.*$gdb_prompt p .a$" {
		send_gdb "\n"
		gdb_expect {
		    -re "(Invalid character constant\\.|Unmatched single quote\\.).*$gdb_prompt $" {
			pass "complete (2) 'p \'a'"
		    }
		    -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" }
		    timeout { fail "(timeout) complete (2) 'p \'a'" }
		}
	    }
	    -re "(There are $decimal possibilities\\.  Do you really\r\nwish to see them all.|Display all $decimal possibilities.) \\(y or n\\)$" {
		send_gdb "n"
		gdb_expect {
		    -re "\\(gdb\\) p 'a$" {
			send_gdb "\n"
			gdb_expect {
			    -re "(Invalid character constant\\.|Unmatched single quote\\.).*$gdb_prompt $" {
				pass "complete (2) 'p \'a'"
			    }
			    -re ".*$gdb_prompt $" { 
				fail "complete (2) 'p \'a'"
			    }
			    timeout { fail "(timeout) complete (2) 'p \'a'" }
			}
		    }
		    -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" }
		    timeout { fail "(timeout) complete (2) 'p \'a'" }
		}
	    }
	    -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" }
	    timeout { fail "(timeout) complete (2) 'p \'a'" }
	}
    }
    -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" }
    timeout { fail "(timeout) complete (2) 'p \'a'" }
}


# These tests used to try completing the shorter "p b-a".
# Unfortunately, on some systems, there are .o files in system
# libraries which declare static variables named `b'.  Of course,
# those variables aren't really in scope, as far as the compiler is
# concerned.  But GDB deliberately tries to be more liberal: if you
# enter an identifier that doesn't have any binding in scope, GDB will
# search all the program's compilation units for a static variable of
# the given name.
#
# This behavior can help avoid a lot of pedantry, so it's usually a
# good thing.  But in this test case, it causes GDB to print the value
# of some random variable, instead of giving us the "No symbol..."
# error we were expecting.
#
# For example, on S/390 linux, the file s_atan.c in libm.a declares a
# `b', which is a structure containing an int and a float, so GDB says
# ``Argument to arithmetic operation not a number or boolean'' instead
# of ``No symbol ...''.
#
# So, I'm hoping that there is no system with a static library variable named
# `no_var_by_this_name'.
send_gdb "p no_var_named_this-a\t"
sleep 1
gdb_expect {
    -re "^p no_var_named_this-a\\\x07$" {
        send_gdb "\n"
        gdb_expect {
            -re "No symbol \"no_var_named_this\" in current context\\..*$gdb_prompt $" {
                pass "complete 'p no_var_named_this-a'"
            }
            -re ".*$gdb_prompt $" {
                fail "complete 'p no_var_named_this-a'"
            }
            timeout {
                fail "(timeout) complete 'p no_var_named_this-a'"
            }
        }
    }
    -re ".*$gdb_prompt $" {
        fail "complete 'p no_var_named_this-a'"
    }
    timeout {
        fail "(timeout) complete 'p no_var_named_this-a'"
    }
}

send_gdb "p no_var_named_this-a\t"
sleep 1
gdb_expect {
    -re "^p no_var_named_this-a\\\x07$" {
	send_gdb "\t"
	gdb_expect {
	    -re ".*argv.*$gdb_prompt p no_var_named_this-a$" {
		send_gdb "\n"
		gdb_expect {
		    -re "No symbol \"no_var_named_this\" in current context\\..*$gdb_prompt $" {
			pass "complete (2) 'p no_var_named_this-a'"
		    }
		    -re ".*$gdb_prompt $" {
                        fail "complete (2) 'p no_var_named_this-a'"
                    }
		    timeout {
                        fail "(timeout) complete (2) 'p no_var_named_this-a'"
                    }
		}
	    }
	    -re "(There are $decimal possibilities\\.  Do you really\r\nwish to see them all.|Display all $decimal possibilities.) \\(y or n\\)$" {
		send_gdb "n"
		gdb_expect {
		    -re "\\(gdb\\) p no_var_named_this-a$" {
			send_gdb "\n"
			gdb_expect {
			    -re "No symbol \"no_var_named_this\" in current context\\..*$gdb_prompt $" {
				pass "complete (2) 'p no_var_named_this-a'"
			    }
			    -re ".*$gdb_prompt $" {
				fail "complete (2) 'p no_var_named_this-a'"
			    }
			    timeout {
                                fail "(timeout) complete (2) 'p no_var_named_this-a'"
                            }
			}
		    }
		    -re ".*$gdb_prompt $" {
                        fail "complete (2) 'p no_var_named_this-a'"
                    }
		    timeout {
                        fail "(timeout) complete (2) 'p no_var_named_this-a'"
                    }
		}
	    }
	    -re ".*$gdb_prompt $" {
                fail "complete (2) 'p no_var_named_this-a'"
            }
	    timeout { fail "(timeout) complete (2) 'p no_var_named_this-a'" }
        }
    }
    -re ".*$gdb_prompt $" { fail "complete (2) 'p no_var_named_this-a'" }
    timeout { fail "(timeout) complete (2) 'p no_var_named_this-a'" }
}

send_gdb "p no_var_named_this-\t"
sleep 1
gdb_expect  {
    -re "^p no_var_named_this-\\\x07$" {
	send_gdb "\t"
	gdb_expect {
	    -re "(There are $decimal possibilities\\.  Do you really\r\nwish to see them all.|Display all $decimal possibilities.) \\(y or n\\)$" {
		send_gdb "n"
		gdb_expect {
		    -re "\\(gdb\\) p no_var_named_this-$" {
			send_gdb "\n"
			gdb_expect {
			    -re "No symbol \"no_var_named_this\" in current context\\..*$gdb_prompt $" {
				pass "complete (2) 'p no_var_named_this-'"
			    }
			    -re ".*$gdb_prompt $" {
				fail "complete (2) 'p no_var_named_this-'"
			    }
			    timeout {
                                fail "(timeout) complete (2) 'p no_var_named_this-'"
                            }
			}
		    }
		    -re ".*$gdb_prompt $" {
                        fail "complete (2) 'p no_var_named_this-'"
                    }
		    timeout {
                        fail "(timeout) complete (2) 'p no_var_named_this-'"
                    }
		}
	    }
	    -re ".*$gdb_prompt $" {
                fail "complete (2) 'p no_var_named_this-'"
            }
	    timeout { fail "(timeout) complete (2) 'p no_var_named_this-'" }
	}
    }
    -re ".*$gdb_prompt $" { fail "complete (2) 'p no_var_named_this-'" }
    timeout { fail "(timeout) complete (2) 'p no_var_named_this-'" }
}


# The following tests used to simply try to complete `${objdir}/file',
# and so on.  The problem is that ${objdir} can be very long; the
# completed filename may be more than eighty characters wide.  When
# this happens, readline tries to manage things, producing output that
# may make sense on the screen, but is rather hard for our script to
# recognize.
#
# In the case that motivated this change, the (gdb) prompt occupied
# the leftmost six columns, and `${objdir}/' was seventy-four
# characters long --- eighty in all.  After printing the slash,
# readline emitted a space, a carriage return, and then `Makefile'
# (the tab character being received as input after `Make'.
#
# Basically, you have to let readline do whatever it's going to do to
# make the screen look right.  If it happens to use a different
# strategy on Tuesdays to get the cursor in the right place, that's
# not something the testsuite should care about.
#
# So, we avoid long lines.  We `cd' to ${objdir} first, and then do
# the completion relative to the current directory.

# ${srcdir} may be a relative path.  We want to make sure we end up
# in the right directory - so make sure we know where it is.
set mydir [pwd]
cd ${srcdir}
set fullsrcdir [pwd]
cd ${mydir}

# If the directory name contains a '+' we must escape it, adding a backslash.
# If not, the test below will fail because it will interpret the '+' as a 
# regexp operator. We use string_to_regexp for this purpose.

gdb_test "cd ${fullsrcdir}" \
         "Working directory [string_to_regexp ${fullsrcdir}].*" \
         "cd to \${srcdir}"

send_gdb "complete file ./gdb.base/compl\n"
sleep 1
gdb_expect  {
    -re "file ./gdb.base/completion\\.exp.*$gdb_prompt $"
	{ pass "complete-command 'file ./gdb.base/compl'"}
    -re ".*$gdb_prompt $"       { fail "complete-command 'file ./gdb.base/compl'" }
    timeout         { fail "(timeout) complete-command 'file ./gdb.base/compl'" }
}

send_gdb "file ./gdb.base/complet\t"
sleep 1
gdb_expect  {
        -re "^file ./gdb.base/completion\\.exp $"\
            { send_gdb "\n"
              gdb_expect {
                      -re "\r\nA program is being debugged already\\.  Kill it\\? \\(y or n\\) $"
                      { send_gdb "n\n"
                        gdb_expect {
                                -re "\r\nProgram not killed\\.\r\n$gdb_prompt $"\
                                        { pass "complete 'file ./gdb.base/complet'"}
                                -re ".*$gdb_prompt $" { fail "complete 'file ./gdb.base/complet'"}
                                timeout           {fail "(timeout) complete 'file ./gdb.base/complet'"}
                               }
                      }
                      -re ".*$gdb_prompt $" { fail "complete 'file ./gdb.base/complet'"}
                      timeout           {fail "(timeout) complete 'file ./gdb.base/complet'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'file ./gdb.base/complet'" }
        timeout         { fail "(timeout) complete 'file ./gdb.base/complet'" }
        }

send_gdb "info func marke\t"
sleep 1
gdb_expect  {
        -re "^info func marke.*r$"\
            {
	      send_gdb "\t\t"
              sleep 3
              gdb_expect {
                      -re "marker1.*$gdb_prompt info func marker$"\
                      { send_gdb "\n"
                        gdb_expect {
                                -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 $"\
                                                  { pass "complete 'info func marke'"}
                                -re ".*$gdb_prompt $" { fail "complete 'info func marke'"}
                                timeout           {fail "(timeout) complete 'info func marke'"}
                               }
                      }
                      -re ".*$gdb_prompt $" { fail "complete 'info func marke'"}
                      timeout           {fail "(timeout) complete 'info func marke'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'info func marke'" }
        timeout         { fail "(timeout) complete 'info func marke'" }
        }


send_gdb "set follow-fork-mode \t\t"
sleep 1
gdb_expect  {
        -re "child.*parent.*$gdb_prompt set follow-fork-mode $"\
            { send_gdb "\n"
              gdb_expect {
                      -re "Requires an argument.*child.*parent.*$gdb_prompt $"\
                                        { pass "complete 'set follow-fork-mode'"}
                      -re "Ambiguous item \"\"\\..*$gdb_prompt $"\
                                        { pass "complete 'set follow-fork-mode'"}
                      -re ".*$gdb_prompt $" { fail "complete 'set follow-fork-mode'"}
                      timeout           {fail "(timeout) complete 'set follow-fork-mode'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'set follow-fork-mode'" }
        timeout         { fail "(timeout) complete 'set follow-fork-mode'" }
        }

# Restore globals modified in this test...
if [info exists old_inputrc] {
    set env(INPUTRC) $old_inputrc
} else {
    unset env(INPUTRC)
}
set timeout $oldtimeout1

return 0
