# Copyright 1998, 1999, 2001, 2003 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 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."
}

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

set bp_location1 [gdb_get_line_number "set breakpoint 1 here"]
set bp_location11 [gdb_get_line_number "set breakpoint 11 here"]

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 ".*$bp_location1\[ \t\]*printf.*#0\[ \t\]*main.*:$bp_location1.*$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.*:$bp_location11.*$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






