# Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2007, 2008, 2009, 2010
# 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 3 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, see <http://www.gnu.org/licenses/>.

# 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 set -- Set GDB internal variables used by the GDB maintainer
#maintenance show -- Show GDB internal variables used by the GDB maintainer
#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 dummy-frames -- Print the dummy frame stack
#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 srcfile1 ${testfile}1.c
set binfile ${objdir}/${subdir}/${testfile}

if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}0.o" object {debug nowarnings}] != "" } {
     untested maint.exp
     return -1
}

if  { [gdb_compile "${srcdir}/${subdir}/${srcfile1}" "${binfile}1.o" object {debug nowarnings}] != "" } {
     untested maint.exp
     return -1
}

if  { [gdb_compile "${binfile}0.o ${binfile}1.o" "${binfile}" executable {debug nowarnings}] != "" } {
     untested maint.exp
     return -1
}


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 $"


#
# 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" }
        }

# The timeout value is raised, because printing all the symbols and
# statistical information about Cygwin and Windows libraries takes a lot
# of time.
if [istarget "*-*-cygwin*"] {
	set oldtimeout $timeout
	set timeout [expr $timeout + 500]
}

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.*Number of psym tables \\(not yet expanded\\).*Number of symbol tables.*Number of symbol tables with line tables.*Number of symbol tables with blockvectors.*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 $"\
                        { 
			    # Old output for gdb 6.0 and earlier
			    pass "maint print statistics" 
			}
        -re "Statistics for.*break.*Number of \"minimal\" symbols read.*Number of \"partial\" symbols read.*Number of \"types\" defined.*Number of psym tables \\(not yet expanded\\).*Number of symbol tables.*Number of symbol tables with line tables.*Number of symbol tables with blockvectors.*Total memory used for objfile obstack.*Total memory used for psymbol cache.*Total memory used for macro cache.*$gdb_prompt $"\
                        { pass "maint print statistics" }
        -re ".*$gdb_prompt $"       { fail "maint print statistics" }
        timeout         { fail "(timeout) maint print statistics" }
        }

# There aren't any ...
gdb_test "maint print dummy-frames" ""

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 ${srcdir}/${subdir}/${srcfile}\n"
gdb_expect  {
        -re "^maint print psymbols psymbols_output \[^\n\]*\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 ${binfile}\n"
gdb_expect  {
        -re "^maint print msymbols msymbols_output \[^\n\]*\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" }
        }

# Check that maint print msymbols allows relative pathnames
set mydir [pwd]
gdb_test "cd ${objdir}" "Working directory [string_to_regexp ${objdir}]\..*" "cd to objdir"
gdb_test_multiple "maint print msymbols msymbols_output2 ${subdir}/${testfile}" "maint print msymbols" {
    -re "^maint print msymbols msymbols_output2 \[^\n\]*\r\n$gdb_prompt $" {
    	gdb_test_multiple "shell ls msymbols_output2" "maint print msymbols" {
	    -re "msymbols_output2\r\n$gdb_prompt $" {
	    	gdb_test_multiple "shell grep factorial msymbols_output2" "maint print msymbols" {
		    -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_output2" ""
	    }
	    -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"
    }
}
gdb_test "cd ${mydir}" "Working directory [string_to_regexp ${mydir}]\..*" "cd to mydir"

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" }
        }

# Request symbols for one particular source file so that we don't try to
# dump the symbol information for the entire C library - over 500MB nowadays
# for GNU libc.

send_gdb "maint print symbols symbols_output ${srcdir}/${subdir}/${srcfile}\n"
gdb_expect  {
        -re "^maint print symbols symbols_output \[^\n\]*\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 msg "maint print type"
gdb_test_multiple "maint print type argc" $msg {
    -re "type node $hex\r\nname .int. \\($hex\\)\r\ntagname .<NULL>. \\($hex\\)\r\ncode $hex \\(TYPE_CODE_INT\\)\r\nlength \[24\]\r\nobjfile $hex\r\ntarget_type $hex\r\npointer_type $hex\r\nreference_type $hex\r\ntype_chain $hex\r\ninstance_flags $hex\r\nflags\r\nnfields 0 $hex\r\nvptr_basetype $hex\r\nvptr_fieldno -1\r\n$gdb_prompt $" {
        pass $msg
    }
}

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" }
        }

# Test for new option: maint info sections <section name>
# If you don't have a .text section, this will require tweaking.
send_gdb "maint info sections .text\n"
gdb_expect {
    -re ".* \\.bss .*$gdb_prompt $"      { fail "maint info sections .text" }
    -re ".* \\.data .*$gdb_prompt $"     { fail "maint info sections .text" }
    -re ".* \\.text .*$gdb_prompt $"  { pass "maint info sections .text" }
    -re ".*$gdb_prompt $"           { fail "maint info sections .text" }
    timeout               { fail "(timeout) maint info sections .text" }
}

# Test for new option: CODE section flag
# If your data section is tagged CODE, xfail this test.
send_gdb "maint info sections CODE\n"
gdb_expect {
    -re ".* \\.data .*$gdb_prompt $" { fail "maint info sections CODE" }
    -re ".* \\.text .*$gdb_prompt $" { pass "maint info sections CODE" }
    -re ".*$gdb_prompt $"          { fail "maint info sections CODE" }
    timeout              { fail "(timeout) maint info sections CODE" }
}

# Test for new option: DATA section flag
# If your text section is tagged DATA, xfail this test.
#
# The "maint info sections DATA" test is marked for XFAIL on Cygwin,
# because Windows has text sections marked DATA.
setup_xfail "*-*-*cygwin*"
send_gdb "maint info sections DATA\n"
gdb_expect {
    -re ".* \\.text .*$gdb_prompt $" { fail "maint info sections DATA" }
    -re ".* \\.data .*$gdb_prompt $" { pass "maint info sections DATA" }
    -re ".*$gdb_prompt $"          { fail "maint info sections DATA" }
    timeout              { fail "(timeout) maint info sections DATA" }
}

set bp_location6 [gdb_get_line_number "set breakpoint 6 here"]

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\[ \t\]+in main at.*break.c:$bp_location6 inf 1\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:$bp_location6 sspace 1\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 (with shlib events)" }
	-re ".*$gdb_prompt $"       { fail "maint info breakpoints" }
	timeout         { fail "(timeout) maint info breakpoints" }
}

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../ObjC demangler, etc\\..*List of maintenance subcommands:.*maintenance check-symtabs.*maintenance demangle.*(maintenance dump-me.*)?maintenance info.*maintenance internal-error.*maintenance print.*maintenance set.*maintenance show.*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\\+\\+/ObjC 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" }
        }

send_gdb "help maint dump-me\n"
gdb_expect  {
        -re "Get fatal error; make debugger dump its core\\.\r\nGDB sets its 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 internal-warning\n"
gdb_expect  {
        -re "Give GDB an internal warning\\.\r\nCause GDB to behave as if an internal warning was reported\\..*$gdb_prompt $"\
                        { pass "help maint internal-warning" }
        -re ".*$gdb_prompt $"       { fail "help maint internal-warning" }
        timeout         { fail "(timeout) help maint internal-warning" }
        }

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" }
        }

gdb_test "help maint print dummy-frames" \
	"Print the contents of the internal dummy-frame stack."

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" }
        }

test_prefix_command_help {"maint print" "maintenance print"} {
    "Maintenance command for printing GDB internal state\\.\[\r\n\]+"
}

test_prefix_command_help {"maint" "maintenance"} {
    "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\\+\\+/ObjC demangler, etc\\.\[\r\n\]+"
}

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

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 "A problem internal to GDB has been detected" {
	pass "maint internal-error"
	if [gdb_internal_error_resync] {
	    pass "internal-error resync"
	} else {
	    fail "internal-error resync"
	}
    }
    -re ".*$gdb_prompt $" {
	fail "maint internal-error"
	untested "internal-error resync"
    }
    timeout {
	fail "maint internal-error (timeout)"
	untested "internal-error resync"
    }
}

#set timeout $oldtimeout


gdb_exit
return 0
