# Copyright 1998, 1999, 2001 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)

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 { fail "define tests suppressed" }

# Verify that GDB allows a user to define their very own commands.
#
send_gdb "define nextwhere\n"
gdb_expect {
  -re "Type commands for definition of \"nextwhere\".\r\nEnd with a line saying just \"end\".\r\n>$"\
          {send_gdb "next\nbt\nend\n"
           gdb_expect {
             -re "$gdb_prompt $"\
                     {pass "define user command: nextwhere"}
             timeout {fail "(timeout) define user command: nextwhere"}
           }
          }
  -re "$gdb_prompt $"\
          {fail "define user command: nextwhere"}
  timeout {fail "(timeout) define user command: nextwhere"}
}

# Verify that those commands work as gdb_expected.
#
send_gdb "nextwhere\n"
gdb_expect {
  -re ".*79\[ \t\]*printf.*#0\[ \t\]*main.*:79.*$gdb_prompt $"\
          {pass "use user command: nextwhere"}
  -re "$gdb_prompt $"\
          {fail "use user command: nextwhere"}
  timeout {fail "(timeout) use user command: nextwhere"}
}

# Verify that a user can define a command whose spelling is a
# proper substring of another user-defined command.
#
send_gdb "define nextwh\n"
gdb_expect {
  -re "Type commands for definition of \"nextwh\".\r\nEnd with a line saying just \"end\".\r\n>$"\
          {send_gdb "next 2\nbt\nend\n"
           gdb_expect {
             -re "$gdb_prompt $"\
                     {pass "define user command: nextwh"}
             timeout {fail "(timeout) define user command: nextwh"}
           }
          }
  -re "$gdb_prompt $"\
          {fail "define user command: nextwh"}
  timeout {fail "(timeout) define user command: nextwh"}
}

# Verify that a user can redefine their commands.  (Test both the
# confirmed and unconfirmed cases.)
#
send_gdb "define nextwhere\n"
gdb_expect {
  -re "Redefine command \"nextwhere\".*y or n. $"\
          {send_gdb "n\n"
           gdb_expect {
             -re "Command \"nextwhere\" not redefined.*$gdb_prompt $"\
                     {pass "redefine user command aborted: nextwhere"}
             -re "$gdb_prompt $"\
                     {fail "redefine user command aborted: nextwhere"}
             timeout {fail "(timeout) redefine user command aborted: nextwhere"}
           }
          }
  -re "$gdb_prompt $"\
          {fail "redefine user command aborted: nextwhere"}
  timeout {fail "(timeout) redefine user command aborted: nextwhere"}
}

send_gdb "define nextwhere\n"
gdb_expect {
  -re "Redefine command \"nextwhere\".*y or n. $"\
          {send_gdb "y\n"
           gdb_expect {
             -re "Type commands for definition of \"nextwhere\".\r\nEnd with a line saying just \"end\".\r\n>$"\
                     {send_gdb "bt\nnext\nend\n"
                      gdb_expect {
                        -re "$gdb_prompt $"\
                                {pass "redefine user command: nextwhere"}
                        timeout {fail "(timeout) redefine user command: nextwhere"}
                      }
                     }
             timeout {fail "(timeout) redefine user command: nextwhere"}
           }
          }
  -re "$gdb_prompt $"\
          {fail "redefine user command: nextwhere"}
  timeout {fail "(timeout) redefine user command: nextwhere"}
}

# Verify that GDB gracefully handles an attempt to redefine the
# help text for a builtin command.
#
send_gdb "document step\n"
gdb_expect {
  -re "Command \"step\" is built-in..*$gdb_prompt $"\
          {pass "redocumenting builtin command disallowed"}
  -re "$gdb_prompt $"\
          {fail "redocumenting builtin command disallowed"}
  timeout {fail "(timeout) redocumenting builtin command disallowed"}
}

# Verify that a user can document their own commands.  (And redocument
# them.)
#
send_gdb "document nextwhere\n"
gdb_expect {
  -re "Type documentation for \"nextwhere\".\r\nEnd with a line saying just \"end\".\r\n>$"\
          {send_gdb "A next command that frist shows you where you're stepping from.\nend\n"
           gdb_expect {
             -re "$gdb_prompt $"\
                     {pass "document user command: nextwhere"}
             timeout {fail "(timeout) document user command: nextwhere"}
           }
          }
  -re "$gdb_prompt $"\
          {fail "document user command: nextwhere"}
  timeout {fail "(timeout) document user command: nextwhere"}
}

send_gdb "document nextwhere\n"
gdb_expect {
  -re "Type documentation for \"nextwhere\".\r\nEnd with a line saying just \"end\".\r\n>$"\
          {send_gdb "A next command that first shows you where you're stepping from.\nend\n"
           gdb_expect {
             -re "$gdb_prompt $"\
                     {pass "re-document user command: nextwhere"}
             timeout {fail "(timeout) re-document user command: nextwhere"}
           }
          }
  -re "$gdb_prompt $"\
          {fail "re-document user command: nextwhere"}
  timeout {fail "(timeout) re-document user command: nextwhere"}
}

send_gdb "help nextwhere\n"
gdb_expect {
  -re "A next command that first shows you where you're stepping from.\r\n$gdb_prompt $"\
          {pass "help user command: nextwhere"}
  -re "$gdb_prompt $"\
          {fail "help user command: nextwhere"}
  timeout {fail "(timeout) help user command: nextwhere"}
}

# Verify that the user can "hook" a builtin command.  We choose to
# hook the "stop" pseudo command, and we'll define it to use a user-
# define command.
#
send_gdb "define user-bt\n"
gdb_expect {
  -re "Type commands for definition of \"user-bt\".\r\nEnd with a line saying just \"end\".\r\n>$"\
          {send_gdb "bt\nend\n"
           gdb_expect {
             -re "$gdb_prompt $"\
                       {pass "define user command: user-bt"}
             timeout {fail "(timeout) define user command: user-bt"}
           }
          }
  -re "$gdb_prompt $"\
          {fail "define user command: user-bt"}
  timeout {fail "(timeout) define user command: user-bt"}
}

send_gdb "define hook-stop\n"
gdb_expect {
  -re "Type commands for definition of \"hook-stop\".\r\nEnd with a line saying just \"end\".\r\n>$"\
          {send_gdb "user-b\nend\n"
           gdb_expect {
             -re "$gdb_prompt $"\
                       {pass "define hook-stop command"}
             timeout {fail "(timeout) define hook-stop command"}
           }
          }
  -re "$gdb_prompt $"\
          {fail "define hook-stop command"}
  timeout {fail "(timeout) define hook-stop command"}
}

send_gdb "next\n"
gdb_expect {
  -re "#0\[ \t\]*main.*:81.*$gdb_prompt $"\
          {pass "use hook-stop command"}
  -re "$gdb_prompt $"\
          {fail "use hook-stop command"}
  timeout {fail "(timeout) use hook-stop command"}
}

# Verify that GDB responds gracefully to an attempt to define a "hook
# command" which doesn't exist.  (Test both the confirmed and unconfirmed
# cases.)
#
send_gdb "define hook-bar\n"
gdb_expect {
  -re "warning: Your new `hook-bar' command does not hook any existing command.\r\nProceed.*y or n. $"\
          {send_gdb "n\n"
           gdb_expect {
             -re "Not confirmed.*$gdb_prompt $"\
                     {pass "define hook undefined command aborted: bar"}
             -re "$gdb_prompt $"\
                     {fail "define hook undefined command aborted: bar"}
             timeout {fail "(timeout) define hook undefined command aborted: bar"}
           }
          }
  -re "$gdb_prompt $"\
          {fail "define hook undefined command aborted: bar"}
  timeout {fail "(timeout) define hook undefined command aborted: bar"}
}

send_gdb "define hook-bar\n"
gdb_expect {
  -re "warning: Your new `hook-bar' command does not hook any existing command.\r\nProceed.*y or n. $"\
          {send_gdb "y\n"
           gdb_expect {
             -re "Type commands for definition of \"hook-bar\".\r\nEnd with a line saying just \"end\".\r\n>$"\
                     {send_gdb "nextwhere\nend\n"
                      gdb_expect {
                        -re "$gdb_prompt $"\
                                {pass "define hook undefined command: bar"}
                        timeout {fail "(timeout) define hook undefined command: bar"}
                      }
                     }
             -re "$gdb_prompt $"\
                     {fail "define hook undefined command: bar"}
             timeout {fail "(timeout) define hook undefined command: bar"}
           }
          }
  -re "$gdb_prompt $"\
          {fail "define hook undefined command: bar"}
  timeout {fail "(timeout) define hook undefined command: bar"}
}

# This is a quasi-define command: Verify that the user can redefine
# GDB's gdb_prompt.
#
send_gdb "set prompt \\(blah\\) \n"
gdb_expect {
  -re "\\(blah\\) $"\
          {pass "set gdb_prompt"}
  -re "$gdb_prompt $"\
          {fail "set gdb_prompt"}
  timeout {fail "(timeout) set gdb_prompt"}
}

send_gdb "set prompt \\(gdb\\) \n"
gdb_expect {
  -re "$gdb_prompt $"\
          {pass "reset gdb_prompt"}
  timeout {fail "(timeout) reset gdb_prompt"}
}

gdb_exit
return 0






