# Copyright 2002, 2003, 2004, 2005 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.  

# This file tests that GDB's console can be accessed via the MI.
# Specifically, we are testing the "interpreter-exec" command and that
# the commands that are executed via this command are properly executed.
# Console commands executed via MI should use MI output wrappers, MI event
# handlers, etc.

load_lib mi-support.exp
set MIFLAGS "-i=mi2"

gdb_exit
if [mi_gdb_start] {
    continue
}

# APPLE LOCAL: The FSF version of the interpreter code doesn't really switch interpreters, and instead
# fakes a quoted console UI.  We don't do that, so to match the output, we need to use console-quoted.
# Minimize the diffs by defining this here.

set console console-quoted

set testfile "basics"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}

mi_gdb_reinitialize_dir $srcdir/$subdir

mi_gdb_test "-interpreter-exec" \
  {\^error,msg="mi_cmd_interpreter_exec: Usage: -interpreter-exec interp command"} \
  "-interpreter-exec with no arguments"

mi_gdb_test "-interpreter-exec $console" \
  {\^error,msg="mi_cmd_interpreter_exec: Usage: -interpreter-exec interp command"} \
  "-interpreter-exec with one argument"

mi_gdb_test "-interpreter-exec bogus command" \
  {\^error,msg="mi_cmd_interpreter_exec: could not find interpreter \\\"bogus\\\""} \
  "-interpreter-exec with bogus interpreter"

set msg {Undefined command: \\\"bogus\\\"\.  Try \\\"help\\\"\.}
mi_gdb_test "-interpreter-exec $console bogus" \
    ".*\\^error,msg=\\\"$msg\\\".*" \
  "-interpreter-exec $console bogus"

# NOTE: cagney/2003-02-03: Not yet.
# mi_gdb_test "-interpreter-exec $console \"file $binfile\"" \
#   {(=.*)+\^done} \
#   "-interpreter-exec $console \"file \$binfile\""
mi_gdb_test "-interpreter-exec $console \"file $binfile\"" \
  {\^done.*} \
  "-interpreter-exec $console \"file \$binfile\""

mi_run_to_main

set line_main_head   [gdb_get_line_number "main ("]
set line_main_body   [expr $line_main_head + 2]
set line_main_hello  [gdb_get_line_number "Hello, World!"]
set line_main_return [expr $line_main_hello + 2]

mi_gdb_test "-interpreter-exec $console \"set args foobar\"" \
  {\^done.*} \
  "-interpreter-exec $console \"set args foobar\""

mi_gdb_test "-interpreter-exec $console \"show args\"" \
  {\~"Argument list to give program being debugged when it is started is \\\"foobar\\\"\.\\n".*\^done} \
  "-interpreter-exec $console \"show args\""

# NOTE: cagney/2003-02-03: Not yet.
# mi_gdb_test "-interpreter-exec $console \"break callee4\"" \
#   {(&.*)*.*~"Breakpoint 2 at.*\\n".*=breakpoint-create,number="2".*\^done} \
#   "-interpreter-exec $console \"break callee4\""
mi_gdb_test "-interpreter-exec $console \"break callee4\"" \
  {(&.*)*.*~"Breakpoint 2 at.*\\n".*\^done.*} \
  "-interpreter-exec $console \"break callee4\""

mi_gdb_test "-interpreter-exec $console \"info break\"" \
  {\~"Num[ \t]*Type[ \t]*Disp[ \t]*Enb[ \t]*Address[ \t]*What\\n".*~"2[ \t]*breakpoint[ \t]*keep[ \t]*y[ \t]*0x[0-9A-Fa-f]+[ \t]*in callee4 at .*basics.c:[0-9]+\\n".*\^done} \
  "-interpreter-exec $console \"info break\""

mi_gdb_test "-interpreter-exec $console \"set listsize 1\"" \
  {\^done} \
  "-interpreter-exec $console \"set listsize 1\""

# {.*\~"32[ \t(\\t)]*callee1.*\\n".*\^done }
mi_gdb_test "-interpreter-exec $console \"list\"" \
  {.*\~"$line_main_body[ \t(\\t)]*callee1.*\\n".*\^done} \
  "-interpreter-exec $console \"list\""

# # NOTE: cagney/2003-02-03: Not yet.
# mi_gdb_test "-exec-continue" \
#    {.*\*stopped,reason="breakpoint-hit",.*func="callee4".*file=".*basics.c",line="8"\}} \
#    "-interpreter-exec $console \"continue to callee4\""
send_gdb "999-exec-continue\n"
gdb_expect {
    -re "999\\^running\[\r\n\]+$mi_gdb_prompt.*999\\*stopped,reason=.breakpoint-hit.*$mi_gdb_prompt$" {
	pass "continue to callee4"
    }
    timeout {
	fail "continue to callee4 (timeout)"
    }
}

# NOTE: cagney/2003-02-03: Not yet.
# mi_gdb_test "100-interpreter-exec $console \"delete 2\"" \
#   {.*=breakpoint-delete,number=\"2\".*\^done.*} \
#   "-interpreter-exec $console \"delete 2\""
mi_gdb_test "100-interpreter-exec $console \"delete 2\"" \
  {100\^done.*} \
  "-interpreter-exec $console \"delete 2\""

# NOTE: cagney/2003-02-03: Not yet.
# mi_gdb_test "200-interpreter-exec $console \"up\"" \
#   {.*=selected-frame-level-changed,level="1".*\^done.*} \
#   "-interpreter-exec $console \"up\""
mi_gdb_test "200-interpreter-exec $console \"up\"" \
  {200\^done.*} \
  "-interpreter-exec $console \"up\""

# NOTE: cagney/2003-02-03: Not yet.
# mi_gdb_test "300-interpreter-exec $console \"down\"" \
#   {.*=selected-frame-level-changed,level="0".*\^done.*} \
#   "-interpreter-exec $console \"down\""
mi_gdb_test "300-interpreter-exec $console \"down\"" \
  {300\^done.*} \
  "-interpreter-exec $console \"down\""

# NOTE: cagney/2003-02-03: Not yet.
# mi_gdb_test "-interpreter-exec $console \"frame 2\"" \
#   {.*=selected-frame-level-changed,level="2".*\^done.*} \
#   "-interpreter-exec $console \"frame 2\""
mi_gdb_test "400-interpreter-exec $console \"frame 2\"" \
  {400\^done.*} \
  "-interpreter-exec $console \"frame 2\""

# NOTE: cagney/2003-02-03: Not yet.
# mi_gdb_test "-stack-select-frame 0" \
#   {.*=selected-frame-level-changed,level="0".*\^done.*} \
#   "-stack-select-frame 0"
mi_gdb_test "500-stack-select-frame 0" \
  {500\^done.*} \
  "-stack-select-frame 0"

# NOTE: cagney/2003-02-03: Not yet.
# mi_gdb_test "-break-insert -t basics.c:$line_main_hello" \
#   {.*=breakpoint-create,number="3".*\^done.*} \
#   "-break-insert -t basics.c:$line_main_hello"
mi_gdb_test "600-break-insert -t basics.c:$line_main_hello" \
	{600\^done,bkpt=.number="3",type="breakpoint".*\}} \
	"-break-insert -t basics.c:\$line_main_hello"

# mi_gdb_test "-exec-continue" \
#   {.*\*stopped.*,file=".*basics.c",line="$line_main_hello"\}} \
#   "-exec-continue to line $line_main_hello"
mi_continue_to 3 {.*} {} {.*basics.c} $line_main_hello {-exec-continue to line $line_main_hello}

# NOTE: cagney/2003-02-03: Not yet.
# mi_gdb_test "-exec-next" \
#   {.*\*stopped,reason="end-stepping-range",.*,file=".*basics.c",line="$line_main_return"\}} \
#   "-exec-next to line $line_main_return"
mi_execute_to exec-next end-stepping-range {.*} {} {.*basics.c} $line_main_return {} {-exec-next to line $line_main_return}

mi_gdb_test "-interpreter-exec $console \"list\"" \
  {\~"$line_main_return[ \t(\\t)]*return 0;\\n".*\^done} \
  "-interpreter-exec $console \"list\" at basics.c:$line_main_return"

mi_gdb_test "-interpreter-exec $console \"help set args\"" \
  {\~"Set argument list to give program being debugged when it is started\.\\nFollow this command with any number of args, to be passed to the program\.".*\^done} \
  "-interpreter-exec $console \"help set args\""

# NOTE: cagney/2003-02-03: Not yet.
# mi_gdb_test "-interpreter-exec $console \"set \$pc=0x0\"" \
#   {.*=target-changed.*\^done} \
#   "-interpreter-exec $console \"set \$pc=0x0\""
mi_gdb_test "888-interpreter-exec $console \"set \$pc=0x0\"" \
  {888\^done.*} \
  "-interpreter-exec $console \"set \$pc=0x0\""

#mi_gdb_test "-interpreter-exec $console \"\"" \
  {} \
  "-interpreter-exec $console \"\""

mi_gdb_exit
return 0
