# Copyright 1998, 1999, 2000 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 tests maintenance commands and help on those.

# source file used is break.c


#maintenance check-symtabs -- Check consistency of psymtabs and symtabs
#maintenance space -- Set the display of space usage
#maintenance time -- Set the display of time usage
#maintenance demangle -- Demangle a C++ mangled name
#maintenance dump-me -- Get fatal error; make debugger dump its core
#maintenance print -- Maintenance command for printing GDB internal state
#maintenance info -- Commands for showing internal info about the program being debugged
#maintenance internal-error -- Give GDB an internal error.
#
#maintenance print statistics -- Print statistics about internal gdb state
#maintenance print objfiles -- Print dump of current object file definitions
#maintenance print psymbols -- Print dump of current partial symbol definitions
#maintenance print msymbols -- Print dump of current minimal symbol definitions
#maintenance print symbols -- Print dump of current symbol definitions
#maintenance print type -- Print a type chain for a given symbol
#maintenance print unwind -- Print unwind table entry at given address
#
#
#maintenance info sections -- List the BFD sections of the exec and core files
#maintenance info breakpoints -- Status of all breakpoints
#



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 binfile ${objdir}/${subdir}/${testfile}
if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-w}] != ""
 } {
    gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}


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

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


# The commands we test here produce many lines of output; disable "press 
# <return> to continue" prompts.
send_gdb "set height 0\n"
gdb_expect -re "$gdb_prompt $"

# use a larger expect input buffer for long help outputs.
match_max 6000

#
# this command does not produce any output
# unless there is some problem with the symtabs and psymtabs
# so that branch will really never be covered in this tests here!!
#

# guo: on linux this command output is huge.  for some reason splitting up
# the regexp checks works.
#
send_gdb "maint check-symtabs\n"
gdb_expect  {
        -re "^maint check-symtabs" {
	    gdb_expect {
		-re "$gdb_prompt $" \
                          { pass "maint check-symtabs" }
		timeout { fail "(timeout) maint check-symtabs" }
	    }
	}
        -re ".*$gdb_prompt $"       { fail "maint check-symtabs" }
        timeout         { fail "(timeout) maint check-symtabs" }
        }

send_gdb "maint space\n"
gdb_expect  {
        -re "\"maintenance space\" takes a numeric argument\\..*$gdb_prompt $"\
                        { pass "maint space" }
        -re ".*$gdb_prompt $"       { fail "maint space" }
        timeout         { fail "(timeout) maint space" }
        }

send_gdb "maint space 1\n"
gdb_expect  {
        -re "Space used: $decimal \\(\\+$decimal for this command\\).*$gdb_prompt $"\
                        { pass "maint space 1" }
        -re ".*$gdb_prompt $"       { fail "maint space 1" }
        timeout         { fail "(timeout) maint space 1" }
        }


send_gdb "maint time\n"
gdb_expect  {
        -re "\"maintenance time\" takes a numeric argument\\..*Space used: $decimal \\(\\+$decimal for this command\\).*$gdb_prompt $"\
                        { pass "maint time" }
        -re ".*$gdb_prompt $"       { fail "maint time" }
        timeout         { fail "(timeout) maint time" }
        }

send_gdb "maint time 1\n"
gdb_expect  {
        -re "Command execution time: $decimal.*Space used: $decimal \\(\\+$decimal for this command\\).*$gdb_prompt $"\
                        { pass "maint time 1" }
        -re ".*$gdb_prompt $"       { fail "maint time 1" }
        timeout         { fail "(timeout) maint time 1" }
        }

send_gdb "maint time 0\n"
gdb_expect  {
        -re "Space used: $decimal \\(\\+$decimal for this command\\).*$gdb_prompt $"\
                        { pass "maint time 0" }
        -re ".*$gdb_prompt $"       { fail "maint time 0" }
        timeout         { fail "(timeout) maint time 0" }
        }


send_gdb "maint space 0\n"
gdb_expect  {
        -re "maint space 0\r\n$gdb_prompt $"\
                        { pass "maint space 0" }
        -re ".*$gdb_prompt $"       { fail "maint space 0" }
        timeout         { fail "(timeout) maint space 0" }
        }

send_gdb "maint demangle\n"
gdb_expect  {
        -re "\"maintenance demangle\" takes an argument to demangle\\..*$gdb_prompt $"\
                        { pass "maint demangle" }
        -re ".*$gdb_prompt $"       { fail "maint demangle" }
        timeout         { fail "(timeout) maint demangle" }
        }

send_gdb "maint demangle main\n"
gdb_expect  {
        -re "Can't demangle \"main\".*$gdb_prompt $"\
                        { pass "maint demangle" }
        -re ".*$gdb_prompt $"       { fail "maint demangle" }
        timeout         { fail "(timeout) maint demangle" }
        }


send_gdb "maint print statistics\n"
gdb_expect  {
        -re "Statistics for.*break.*Number of \"minimal\" symbols read.*Number of \"partial\" symbols read.*Number of \"types\" defined.*Total memory used for psymbol obstack.*Total memory used for psymbol cache.*Total memory used for symbol obstack.*Total memory used for type obstack.*$gdb_prompt $"\
                        { pass "maint print statistics" }
        -re ".*$gdb_prompt $"       { fail "maint print statistics" }
        timeout         { fail "(timeout) maint print statistics" }
        }

send_gdb "maint print objfiles\n"

# To avoid timeouts, we avoid expects with many .* patterns that match
# many lines.  Instead, we keep track of which milestones we've seen
# in the output, and stop when we've seen all of them.

set header 0
set psymtabs 0
set symtabs 0
set keep_looking 1

while {$keep_looking} {
    gdb_expect  {

	-re ".*Object file.*break$EXEEXT:  Objfile at $hex, bfd at $hex, \[0-9\]* minsyms\[\r\t \]+\n" { set header 1 }
	-re ".*Psymtabs:\[\r\t \]+\n" { set psymtabs 1 }
	-re ".*Symtabs:\[\r\t \]+\n" { set symtabs 1 }

	-re ".*$gdb_prompt $" { 
	    set keep_looking 0
	}
	timeout { 
	    fail "(timeout) maint print objfiles" 
	    set keep_looking 0
	}
    }
}

proc maint_pass_if {val name} {
    if $val { pass $name } else { fail $name }
}

maint_pass_if $header   "maint print objfiles: header"
maint_pass_if $psymtabs "maint print objfiles: psymtabs"
maint_pass_if $symtabs  "maint print objfiles: symtabs"

send_gdb "maint print psymbols\n"
gdb_expect  {
        -re "print-psymbols takes an output file name and optional symbol file name.*$gdb_prompt $"\
                        { pass "maint print psymbols w/o args" }
        -re ".*$gdb_prompt $"       { fail "maint print psymbols w/o args" }
        timeout         { fail "(timeout) maint print psymbols w/o args" }
        }

send_gdb "maint print psymbols psymbols_output\n"
gdb_expect  {
        -re "^maint print psymbols psymbols_output\r\n$gdb_prompt $"\
         {
          send_gdb "shell ls psymbols_output\n"
          gdb_expect {
                -re "psymbols_output\r\n$gdb_prompt $"\
                 {
	          # We want this grep to be as specific as possible,
	          # so it's less likely to match symbol file names in
	          # psymbols_output.  Yes, this actually happened;
	          # poor expect got tons of output, and timed out
	          # trying to match it.   --- Jim Blandy <jimb@cygnus.com>
                  send_gdb "shell grep 'main.*function' psymbols_output\n"
                  gdb_expect {
                        -re ".main., function, $hex.*$gdb_prompt $"\
                                               { pass "maint print psymbols 1" }
                        -re ".*main.  .., function, $hex.*$gdb_prompt $"\
                                               { pass "maint print psymbols 2" }
                        -re ".*$gdb_prompt $"       { fail "maint print psymbols" }
                         timeout         { fail "(timeout) maint print psymbols" }
                         }
                  gdb_test "shell rm -f psymbols_output" ""
                   
                  }
                 -re ".*$gdb_prompt $"       { fail "maint print psymbols" }
                  timeout         { fail "(timeout) maint print psymbols" }
                  }
         }
        -re ".*$gdb_prompt $"       { fail "maint print psymbols" }
        timeout         { fail "(timeout) maint print psymbols" }
        }


send_gdb  "maint print msymbols\n"
gdb_expect  {
        -re "print-msymbols takes an output file name and optional symbol file name.*$gdb_prompt $"\
                        { pass "maint print msymbols w/o args" }
        -re ".*$gdb_prompt $"       { fail "maint print msymbols w/o args" }
        timeout         { fail "(timeout) maint print msymbols w/o args" }
        }

send_gdb "maint print msymbols msymbols_output\n"
gdb_expect  {
        -re "^maint print msymbols msymbols_output\r\n$gdb_prompt $"\
         {
          send_gdb "shell ls msymbols_output\n"
          gdb_expect {
                -re "msymbols_output\r\n$gdb_prompt $"\
                 {
                  send_gdb "shell grep factorial msymbols_output\n"
                  gdb_expect {
                        -re "\\\[ *$decimal\\\] T\[ \t\]+$hex factorial.*$gdb_prompt $"\
                                               { pass "maint print msymbols" }
                        -re ".*$gdb_prompt $"       { fail "maint print msymbols" }
                         timeout         { fail "(timeout) maint print msymbols" }
                         }
                  gdb_test "shell rm -f msymbols_output" ""

                  }
                 -re ".*$gdb_prompt $"       { fail "maint print msymbols" }
                  timeout         { fail "(timeout) maint print msymbols" }
                  }
         }
        -re ".*$gdb_prompt $"       { fail "maint print msymbols" }
        timeout         { fail "(timeout) maint print msymbols" }
        }


send_gdb "maint print symbols\n"
gdb_expect  {
        -re "Arguments missing: an output file name and an optional symbol file name.*$gdb_prompt $"\
                        { pass "maint print symbols w/o args" }
        -re ".*$gdb_prompt $"       { fail "maint print symbols w/o args" }
        timeout         { fail "(timeout) maint print symbols w/o args" }
        }

# This command can legitimately take many minutes to execute.  If the
# executable is dynamically linked, then you get all the debugging
# info for the entire library --- 89Mb on my system.  -jimb

set old_timeout $timeout
set timeout 600

send_gdb "maint print symbols symbols_output\n"
gdb_expect  {
        -re "^maint print symbols symbols_output\r\n$gdb_prompt $"\
         {
          send_gdb "shell ls symbols_output\n"
          gdb_expect {
                -re "symbols_output\r\n$gdb_prompt $"\
                 {
	          # See comments for `maint print psymbols'.
                  send_gdb "shell grep 'main(.*block' symbols_output\n"
                  gdb_expect {
                        -re "int main\\(int, char \\*\\*, char \\*\\*\\); block.*$gdb_prompt $"\
                                               { pass "maint print symbols" }
                        -re ".*$gdb_prompt $"       { fail "maint print symbols" }
                         timeout         { fail "(timeout) maint print symbols" }
                         }
                  gdb_test "shell rm -f symbols_output" ""

                  }
                 -re ".*$gdb_prompt $"       { fail "maint print symbols" }
                  timeout         { fail "(timeout) maint print symbols" }
                  }
         }
        -re ".*$gdb_prompt $"       { fail "maint print symbols" }
        timeout         { fail "(timeout) maint print symbols" }
        }

set timeout $old_timeout

send_gdb "maint print type argc\n"
gdb_expect  {
        -re "type node $hex\r\nname .int. \\($hex\\)\r\ncode $hex \\(TYPE_CODE_INT\\)\r\nlength 4\r\nobjfile $hex\r\ntarget_type $hex\r\npointer_type $hex\r\nreference_type $hex\r\nflags $hex\r\nnfields 0 $hex\r\nvptr_basetype $hex\r\nvptr_fieldno -1\r\ntype_specific $hex\r\n$gdb_prompt $"\
                        { pass "maint print type" }
        -re ".*$gdb_prompt $"       { fail "maint print type" }
        timeout         { fail "(timeout) maint print type" }
        }

if [istarget "hppa*-*-11*"] {
    setup_xfail hppa*-*-*11* CLLbs14860
    send "maint print unwind &main\n"
    expect  {
        -re ".*unwind_table_entry \\($hex\\):\r\n\tregion_start = $hex <main>\r\n\tregion_end = $hex <main\\+\[0-9\]*>\r\n\tflags = Args_stored Save_RP\r\n\tRegion_description = $hex\r\n\tEntry_FR = $hex\r\n\tEntry_GR = $hex\r\n\tTotal_frame_size = $hex\r\n$gdb_prompt $"\
	    { pass "maint print unwind" }
        -re ".*unwind_table_entry \\($hex\\):\r\n\tregion_start = $hex <main>\r\n\tregion_end = $hex <main\\+\[0-9\]*>\r\n\tflags = Args_stored Save_RP\r\n\tFLD = $hex\r\n\tFLD = $hex\r\n\tFLD = $hex\r\n\tFLD = $hex\r\n$gdb_prompt $"\
	    { xfail "maint print unwind" }
        -re ".*$gdb_prompt $"       { xfail "maint info unwind" }
        timeout         { fail "(timeout) maint print unwind" }
    }
}

set oldtimeout $timeout
set timeout [expr $timeout + 300]

# It'd be nice to check for every possible section.  However, that's
# problematic, since the relative ordering wanders from release to
# release of the compilers.  Instead, we'll just check for two
# sections which appear to always come out in the same relative
# order.  (If that changes, then we should just check for one
# section.)
#
# And by the way: This testpoint will break for PA64, where a.out's
# are ELF files.
#
send_gdb "maint info sections\n"
gdb_expect  {
        -re "Exec file:\r\n.*break$EXEEXT., file type.*$gdb_prompt $"\
                        { pass "maint info sections" }
        -re ".*$gdb_prompt $"       { fail "maint info sections" }
        timeout         { fail "(timeout) maint info sections" }
        }

send_gdb "maint info breakpoints\n"
gdb_expect {
    -re "Num\[ \t\]+Type\[ \t\]+Disp\[ \t\]+Enb\[ \t\]+Address\[ \t\]+What\r\n1\[ \t\]+breakpoint\[ \t\]+keep\[ \t\]+y\[ \t\]+$hex in main at.*break.c:75\r\n\[ \t\]+breakpoint already hit 1 time\r\n.*$gdb_prompt $"\
				{ pass "maint info breakpoints" }
    -re ".*$gdb_prompt $"       { fail "maint info breakpoints" }
    timeout			{ fail "(timeout) maint info breakpoints" }
}

# Try it again, and check for shlib event info.  Not supported everywhere.
if {! ([istarget "hppa*-*-hpux*"] 
       || [istarget "*-*-linux*"]
       || [istarget "*-*-solaris*"])} then {
    setup_xfail "*-*-*"
}
send_gdb "maint info breakpoints\n"
gdb_expect  {
        -re "Num\[ \t\]+Type\[ \t\]+Disp\[ \t\]+Enb\[ \t\]+Address\[ \t\]+What\r\n1\[ \t\]+breakpoint\[ \t\]+keep\[ \t\]+y\[ \t\]+$hex in main at.*break.c:75\r\n\[ \t\]+breakpoint already hit 1 time\r\n.*$gdb_prompt $"\
                        { pass "maint info breakpoints" }
    -re "Num\[ \t\]+Type\[ \t\]+Disp\[ \t\]+Enb\[ \t\]+Address\[ \t\]+What\r\n1\[ \t\]+breakpoint\[ \t\]+keep\[ \t\]+y\[ \t\]+$hex in main at.*break.c:75\r\n\[ \t\]+breakpoint already hit 1 time\r\n-1\[ \t\]+shlib events\[ \t\]+keep\[ \t\]+y\[ \t\]+$hex.*breakpoint already hit.*$gdb_prompt $"\
	    { pass "maint info breakpoints: shlib events" }
    -re ".*$gdb_prompt $" {
	fail "maint info breakpoints: shlib events"
    }
    timeout {
	fail "(timeout) maint info breakpoints: shlib events"
    }
}


send_gdb "maint print\n"
gdb_expect  {
        -re "\"maintenance print\" must be followed by the name of a print command\\.\r\nList.*unambiguous\\..*$gdb_prompt $"\
                        { pass "maint print w/o args" }
        -re ".*$gdb_prompt $"       { fail "maint print w/o args" }
        timeout         { fail "(timeout) maint print w/o args" }
        }

send_gdb "maint info\n"
gdb_expect  {
        -re "\"maintenance info\" must be followed by the name of an info command\\.\r\nList.*unambiguous\\..*$gdb_prompt $"\
                        { pass "maint info w/o args" }
        -re ".*$gdb_prompt $"       { fail "maint info w/o args" }
        timeout         { fail "(timeout) maint info w/o args" }
        }

send_gdb "maint\n"
gdb_expect  {
        -re "\"maintenance\" must be followed by the name of a maintenance command\\.\r\nList.*unambiguous\\..*$gdb_prompt $"\
                        { pass "maint w/o args" }
        -re ".*$gdb_prompt $"       { fail "maint w/o args" }
        timeout         { fail "(timeout) maint w/o args" }
        }


set timeout $oldtimeout

#============test help on maint commands

send_gdb "help maint\n"
gdb_expect  {
        -re "Commands for use by GDB maintainers\\..*Includes commands to dump specific internal GDB structures in.*a human readable form, to cause GDB to deliberately dump core,.*to test internal functions such as the C.. demangler, etc\\..*List of maintenance subcommands:.*maintenance check-symtabs.*maintenance demangle.*(maintenance dump-me.*)?maintenance info.*maintenance internal-error.*maintenance print.*maintenance space.*maintenance time.*Type.*help maintenance.*followed by maintenance subcommand name for full documentation\\..*Command name abbreviations are allowed if unambiguous\\..*$gdb_prompt $"\
 { pass "help maint" }
        -re ".*$gdb_prompt $"       { fail "help maint" }
        timeout         { fail "(timeout) help maint" }
        }


send_gdb "help maint check-symtabs\n"
gdb_expect  {
        -re "Check consistency of psymtabs and symtabs\\..*$gdb_prompt $"\
                        { pass "help maint check-symtabs" }
        -re ".*$gdb_prompt $"       { fail "help maint check-symtabs" }
        timeout         { fail "(timeout) help maint check-symtabs" }
        }

send_gdb "help maint space\n"
gdb_expect  {
        -re "Set the display of space usage\\.\r\nIf nonzero, will cause the execution space for each command to be\r\ndisplayed, following the command's output\\..*$gdb_prompt $"\
                        { pass "help maint space" }
        -re ".*$gdb_prompt $"       { fail "help maint space" }
        timeout         { fail "(timeout) help maint space" }
        }

send_gdb "help maint time\n"
gdb_expect  {
        -re "Set the display of time usage\\.\r\nIf nonzero, will cause the execution time for each command to be\r\ndisplayed, following the command's output\\..*$gdb_prompt $"\
                        { pass "help maint time" }
        -re ".*$gdb_prompt $"       { fail "help maint time" }
        timeout         { fail "(timeout) help maint time" }
        }

send_gdb "help maint demangle\n"
gdb_expect  {
        -re "Demangle a C\\+\\+ mangled name\\.\r\nCall internal GDB demangler routine to demangle a C\\+\\+ link name\r\nand prints the result\\..*$gdb_prompt $"\
                        { pass "help maint demangle" }
        -re ".*$gdb_prompt $"       { fail "help maint demangle" }
        timeout         { fail "(timeout) help maint demangle" }
        }

# dump-me is disabled ifdef _WIN32.
if [ishost *cygwin*] {
    setup_xfail "*-*-*"
}
send_gdb "help maint dump-me\n"
gdb_expect  {
        -re "Get fatal error; make debugger dump its core\\.\r\nGDB sets it's handling of SIGQUIT back to SIG_DFL and then sends\r\nitself a SIGQUIT signal\\..*$gdb_prompt $"\
                        { pass "help maint dump-me" }
        -re ".*$gdb_prompt $"       { fail "help maint dump-me" }
        timeout         { fail "(timeout) help maint dump-me" }
        }

send_gdb "help maint internal-error\n"
gdb_expect  {
        -re "Give GDB an internal error\\.\r\nCause GDB to behave as if an internal error was detected\\..*$gdb_prompt $"\
                        { pass "help maint internal-error" }
        -re ".*$gdb_prompt $"       { fail "help maint internal-error" }
        timeout         { fail "(timeout) help maint internal-error" }
        }

send_gdb "help maint print statistics\n"
gdb_expect  {
        -re "Print statistics about internal gdb state\\..*$gdb_prompt $"\
                        { pass "help maint print statistics" }
        -re ".*$gdb_prompt $"       { fail "help maint print statistics" }
        timeout         { fail "(timeout) help maint print statistics" }
        }

send_gdb "help maint print objfiles\n"
gdb_expect  {
        -re "Print dump of current object file definitions\\..*$gdb_prompt $"\
                        { pass "help maint print objfiles" }
        -re ".*$gdb_prompt $"       { fail "help maint print objfiles" }
        timeout         { fail "(timeout) help maint print objfiles" }
        }

send_gdb "help maint print psymbols\n"
gdb_expect  {
        -re "Print dump of current partial symbol definitions\\.\r\nEntries in the partial symbol table are dumped to file OUTFILE\\.\r\nIf a SOURCE file is specified, dump only that file's partial symbols\\..*$gdb_prompt $"\
                        { pass "help maint print psymbols" }
        -re ".*$gdb_prompt $"       { fail "help maint print psymbols" }
        timeout         { fail "(timeout) help maint print psymbols" }
        }

send_gdb "help maint print msymbols\n"
gdb_expect  {
        -re "Print dump of current minimal symbol definitions\\.\r\nEntries in the minimal symbol table are dumped to file OUTFILE\\.\r\nIf a SOURCE file is specified, dump only that file's minimal symbols\\..*$gdb_prompt $"\
                        { pass "help maint print msymbols" }
        -re ".*$gdb_prompt $"       { fail "help maint print msymbols" }
        timeout         { fail "(timeout) help maint print msymbols" }
        }

send_gdb "help maint print symbols\n"
gdb_expect  {
        -re "Print dump of current symbol definitions\\.\r\nEntries in the full symbol table are dumped to file OUTFILE\\.\r\nIf a SOURCE file is specified, dump only that file's symbols\\..*$gdb_prompt $"\
                        { pass "help maint print symbols" }
        -re ".*$gdb_prompt $"       { fail "help maint print symbols" }
        timeout         { fail "(timeout) help maint print symbols" }
        }


send_gdb "help maint print type\n"
gdb_expect  {
        -re "Print a type chain for a given symbol\\.\r\nFor each node in a type chain, print the raw data for each member of\r\nthe type structure, and the interpretation of the data\\..*$gdb_prompt $"\
                        { pass "help maint print type" }
        -re ".*$gdb_prompt $"       { fail "help maint print type" }
        timeout         { fail "(timeout) help maint print type" }
        }

if [istarget "hppa*-*-*"] {
    send_gdb "help maint print unwind\n"
    gdb_expect  {
        -re "Print unwind table entry at given address\\..*$gdb_prompt $"\
	    { pass "help maint print unwind" }
        -re ".*$gdb_prompt $"       { fail "help maint print unwind" }
        timeout         { fail "(timeout) help maint print unwind" }
    }
}

send_gdb "help maint info sections\n"
gdb_expect  {
        -re "List the BFD sections of the exec and core files\\..*$gdb_prompt $"\
                        { pass "help maint info sections" }
        -re ".*$gdb_prompt $"       { fail "help maint info sections" }
        timeout         { fail "(timeout) help maint info sections" }
        }


send_gdb "help maint info breakpoints\n"
gdb_expect  {
-re "Status of all breakpoints, or breakpoint number NUMBER.*$gdb_prompt $" { pass "help maint info breakpoints" }
        -re ".*$gdb_prompt $"       { fail "help maint info breakpoints" }
        timeout         { fail "(timeout) help maint info breakpoints" }
        }

#send_gdb "help maint info breakpoints\n"
#expect  {
#        -re "Status of all breakpoints, or breakpoint number NUMBER\\.\[ \r\n\t\]+The \"Type\" column indicates one of:\[ \r\n\t\]+breakpoint\[ \t\]+- normal breakpoint\[ \r\n\t\]+watchpoint\[ \t\]+- watchpoint\[ \r\n\t\]+longjmp\[ \t\]+- internal breakpoint used to step through longjmp\\(\\)\[ \r\n\t\]+longjmp resume - internal breakpoint at the target of longjmp\\(\\)\[ \r\n\t\]+until\[ \t\]+- internal breakpoint used by the \"until\" command\[ \r\n\t\]+finish\[ \t\]+- internal breakpoint used by the \"finish\" command\[ \r\n\t\]+The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\[ \r\n\t\]+the disposition of the breakpoint after it gets hit\\.  \"dis\" means that the\[ \r\n\t\]+breakpoint will be disabled\\.  The \"Address\" and \"What\" columns indicate the\[ \r\n\t\]+address and file.line number respectively\\.\[ \r\n\t\]+Convenience variable \".*\" and default examine address for \"x\"\[ \r\n\t\]+are set to the address of the last breakpoint listed\\.\[ \r\n\t\]+Convenience variable \".bpnum\" contains the number of the last\[ \r\n\t\]+breakpoint set\\..*$gdb_prompt $"\
#                        { pass "help maint info breakpoints" }
#        -re ".*$gdb_prompt $"       { fail "help maint info breakpoints" }
#        timeout         { fail "(timeout) help maint info breakpoints" }
#        }

send_gdb "help maint info\n"
gdb_expect  {
        -re "Commands for showing internal info about the program being debugged.*unambiguous\\..*$gdb_prompt $"\
                        { pass "help maint info" }
        -re ".*$gdb_prompt $"       { fail "help maint info" }
        timeout         { fail "(timeout) help maint info" }
        }

send_gdb "help maint print\n"
gdb_expect  {
        -re "Maintenance command for printing GDB internal state\\.\[\r\n\]+List of maintenance print subcommands:\[\r\n\]+maintenance print architecture -- Print the internal architecture configuration.*maintenance print msymbols -- Print dump of current minimal symbol definitions.*maintenance print objfiles -- Print dump of current object file definitions.*maintenance print psymbols -- Print dump of current partial symbol definitions.*maintenance print statistics -- Print statistics about internal gdb state.*maintenance print symbols -- Print dump of current symbol definitions.*maintenance print type -- Print a type chain for a given symbol.*Type .help maintenance print. followed by maintenance print subcommand name for full documentation\\.\[\r\n\]+Command name abbreviations are allowed if unambiguous\\..*$gdb_prompt $"\
                        { pass "help maint print" }
        -re ".*$gdb_prompt $"       { fail "help maint print" }
        timeout         { fail "(timeout) help maint print" }
        }

send_gdb "help maint\n"
gdb_expect  {
        -re "Commands for use by GDB maintainers\\.\[\r\n\]+Includes commands to dump specific internal GDB structures in\[\r\n\]+a human readable form, to cause GDB to deliberately dump core,\[\r\n\]+to test internal functions such as the C\\+\\+ demangler, etc\\..*Type.*help maintenance.*followed by maintenance subcommand name for full documentation\\.\[\r\n\]+Command name abbreviations are allowed if unambiguous\\..*$gdb_prompt $"\
                        { pass "help maint" }
        -re ".*$gdb_prompt $"       { fail "help maint" }
        timeout         { fail "(timeout) help maint" }
        }

#set oldtimeout $timeout
#set timeout [expr $timeout + 300]

if [ishost *cygwin*] {
    setup_xfail "*-*-*"
}
send_gdb "maint dump-me\n"
gdb_expect  {
        -re "Should GDB dump core.*\\(y or n\\) $"\
          { send_gdb "n\n"
            gdb_expect {
                    -re ".*$gdb_prompt $"       { pass "maint dump-me" }
                    timeout         { fail "(timeout)  maint dump-me" }
                   }
          }
        -re ".*$gdb_prompt $"       { fail "maint dump-me" }
        timeout         { fail "(timeout) maint dump-me" }
        }

send_gdb "maint internal-error\n"
gdb_expect  {
    -re "Continue this debugging session.*\\(y or n\\) $" {
	send_gdb "y\n"
	gdb_expect {
	    -re "Create a core file.*\\(y or n\\) $" {
		send_gdb "n\n"
		gdb_expect {
		    -re ".*$gdb_prompt $" {
			pass "maint internal-error"
		    }
		    timeout {
			fail "(timeout)  maint internal-error"
		    }
		}
	    }
	    -re ".*$gdb_prompt $" {
		fail "maint internal-error"
	    }
	    timeout {
		fail "(timeout)  maint internal-error"
	    }
	}
    }
    -re ".*$gdb_prompt $" {
	fail "maint internal-error"
    }
    timeout {
	fail "(timeout) maint internal-error"
    }
}

#set timeout $oldtimeout


gdb_exit
return 0
