# Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
# 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/>.

#
# Test essential Machine interface (MI) operations
#
# Verify that stack commands work.

# The goal is not to test gdb functionality, which is done by other tests,
# but to verify the correct output response to MI operations.
#

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

gdb_exit
if [mi_gdb_start] {
    continue
}

set testfile "mi-stack"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
     untested mi2-stack.exp
     return -1
}

mi_delete_breakpoints
mi_gdb_reinitialize_dir $srcdir/$subdir
mi_gdb_reinitialize_dir $srcdir/$subdir
mi_gdb_load ${binfile}

proc test_stack_frame_listing {} {
    global mi_gdb_prompt
    global hex fullname_syntax srcfile

    set line_callee4_head [gdb_get_line_number "callee4 ("]
    set line_callee4_body [expr $line_callee4_head + 2]

    # Obtain a stack trace
    # Tests:
    # -stack-list-frames
    # -stack-list-frames 1 1
    # -stack-list-frames 1 3
    # -stack-info-frame

    mi_gdb_test "231-stack-list-frames" \
	    "231\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"callee4\",file=\".*${srcfile}\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$line_callee4_body\"\},frame=\{level=\"1\",addr=\"$hex\",func=\"callee3\",.*\},frame=\{level=\"2\",addr=\"$hex\",func=\"callee2\",.*\},frame=\{level=\"3\",addr=\"$hex\",func=\"callee1\",.*\},frame=\{level=\"4\",addr=\"$hex\",func=\"main\",.*\}\\\]" \
                "stack frame listing"
    mi_gdb_test "232-stack-list-frames 1 1" \
	    "232\\^done,stack=\\\[frame=\{level=\"1\",addr=\"$hex\",func=\"callee3\",.*\}\\\]" \
                "stack frame listing 1 1"
    mi_gdb_test "233-stack-list-frames 1 3" \
	    "233\\^done,stack=\\\[frame=\{level=\"1\",addr=\"$hex\",func=\"callee3\",.*\},frame=\{level=\"2\",addr=\"$hex\",func=\"callee2\",.*\},frame=\{level=\"3\",addr=\"$hex\",func=\"callee1\",.*\}\\\]" \
                "stack frame listing 1 3"

    mi_gdb_test "234-stack-list-frames 1" \
	    "234\\^error,msg=\"mi_cmd_stack_list_frames: Usage.*FRAME_LOW FRAME_HIGH.*\"" \
	    "stack frame listing wrong"

    mi_gdb_test "235-stack-info-frame" \
            "235\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee4\",file=\".*${srcfile}\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$line_callee4_body\"\}" \
	       "selected frame listing"

    mi_gdb_test "236-stack-list-frames 1 300" \
	    "236\\^done,stack=\\\[frame=\{level=\"1\",addr=\"$hex\",func=\"callee3\",.*\},frame=\{level=\"2\",addr=\"$hex\",func=\"callee2\",.*\},frame=\{level=\"3\",addr=\"$hex\",func=\"callee1\",.*\}\\\]" \
                "stack frame listing 1 300"
}

proc test_stack_args_listing {} {
    global mi_gdb_prompt
    global hex

    # Obtain lists for args for the stack frames
    # Tests:
    # -stack-list-arguments 0
    # -stack-list-arguments 0 1 1
    # -stack-list-arguments 0 1 3
    # -stack-list-arguments 1
    # -stack-list-arguments 1 1 1
    # -stack-list-arguments 1 1 3
    # -stack-list-arguments 

    mi_gdb_test "231-stack-list-arguments 0" \
	    "231\\^done,stack-args=\\\[frame=\{level=\"0\",args=\\\[\\\]\},frame=\{level=\"1\",args=\\\[name=\"strarg\"\\\]\},frame=\{level=\"2\",args=\\\[name=\"intarg\",name=\"strarg\"\\\]\},frame=\{level=\"3\",args=\\\[name=\"intarg\",name=\"strarg\",name=\"fltarg\"\\\]\},frame=\{level=\"4\",args=\\\[\\\]\}\\\]" \
                "stack args listing 0"

    mi_gdb_test "232-stack-list-arguments 0 1 1" \
	    "232\\^done,stack-args=\\\[frame=\{level=\"1\",args=\\\[name=\"strarg\"\\\]\}\\\]" \
                "stack args listing 0 1 1"

    mi_gdb_test "233-stack-list-arguments 0 1 3" \
	    "233\\^done,stack-args=\\\[frame=\{level=\"1\",args=\\\[name=\"strarg\"\\\]\},frame=\{level=\"2\",args=\\\[name=\"intarg\",name=\"strarg\"\\\]\},frame=\{level=\"3\",args=\\\[name=\"intarg\",name=\"strarg\",name=\"fltarg\"\\\]\}\\\]" \
                "stack args listing 0 1 3"

    mi_gdb_test "231-stack-list-arguments 1" \
	    "231\\^done,stack-args=\\\[frame=\{level=\"0\",args=\\\[\\\]\},frame=\{level=\"1\",args=\\\[\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\\\]\},frame=\{level=\"2\",args=\\\[\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\\\]\},frame=\{level=\"3\",args=\\\[\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\},\{name=\"fltarg\",value=\"3.5\"\}\\\]\},frame=\{level=\"4\",args=\\\[\\\]\}\\\]" \
                "stack args listing 1"

    mi_gdb_test "232-stack-list-arguments 1 1 1" \
	    "232\\^done,stack-args=\\\[frame=\{level=\"1\",args=\\\[\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\\\]\}\\\]" \
                "stack args listing 1 1 1"

    mi_gdb_test "233-stack-list-arguments 1 1 3" \
	    "233\\^done,stack-args=\\\[frame=\{level=\"1\",args=\\\[\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\\\]\},frame=\{level=\"2\",args=\\\[\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\\\]\},frame=\{level=\"3\",args=\\\[\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\},\{name=\"fltarg\",value=\"3.5\"\}\\\]\}\\\]" \
                "stack args listing 1 1 3"

    mi_gdb_test "234-stack-list-arguments" \
	    "234\\^error,msg=\"mi_cmd_stack_list_args: Usage.*PRINT_VALUES.*FRAME_LOW FRAME_HIGH.*\"" \
	    "stack args listing wrong"

    mi_gdb_test "235-stack-list-arguments 1 1 300" \
	    "235\\^done,stack-args=\\\[frame=\{level=\"1\",args=\\\[\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\\\]\},frame=\{level=\"2\",args=\\\[\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\\\]\},frame=\{level=\"3\",args=\\\[\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\},\{name=\"fltarg\",value=\"3.5\"\}\\\]\},frame=\{level=\"4\",args=\\\[\\\]\}\\\]" \
                "stack args listing 1 1 300"
}

proc test_stack_info_depth {} {
    global mi_gdb_prompt
    global hex

    # Obtain depth of stack
    # Tests:
    # -stack-info-depth
    # -stack-info-depth 3
    # -stack-info-depth 99

    mi_gdb_test "231-stack-info-depth" \
	    "231\\^done,depth=\"5\"" \
                "stack info-depth"

    mi_gdb_test "231-stack-info-depth 3" \
	    "231\\^done,depth=\"3\"" \
                "stack info-depth 3"

    mi_gdb_test "231-stack-info-depth 99" \
	    "231\\^done,depth=\"5\"" \
                "stack info-depth 99"

    mi_gdb_test "231-stack-info-depth 99 99" \
	    "231\\^error,msg=\"mi_cmd_stack_info_depth: Usage: .MAX_DEPTH.\"" \
                "stack info-depth wrong usage"
}

proc test_stack_locals_listing {} {
    global mi_gdb_prompt
    global hex fullname_syntax srcfile

    # Obtain lists for locals for the stack frames
    # Tests:
    # -stack-list-locals 0 (--no-values)
    # -stack-list-locals 1 (--all-values)
    # -stack-list-locals 2 (--simple-values)
    # -stack-list-arguments 

    mi_gdb_test "232-stack-list-locals 0" \
  "232\\^done,locals=\\\[name=\"A\",name=\"B\",name=\"C\",name=\"D\"\\\]" \
                "stack locals listing of names"

set line_callee4_return_0 [gdb_get_line_number "return 0;"]

# step until A, B, C, D have some reasonable values.
mi_execute_to "exec-next 4" "end-stepping-range" "callee4" "" ".*${srcfile}" $line_callee4_return_0 ""\
    "next's in callee4"

    mi_gdb_test "232-stack-list-locals 1" \
    "232\\^done,locals=\\\[\{name=\"A\",value=\"1\"\},\{name=\"B\",value=\"2\"\},\{name=\"C\",value=\"3\"\},\{name=\"D\",value=\"\\{0, 1, 2\\}\"\}\\\]" \
                "stack locals listing of names and values"

    mi_gdb_test "232-stack-list-locals 2" \
	    "232\\^done,locals=\\\[\{name=\"A\",type=\"int\",value=\"1\"\},\{name=\"B\",type=\"int\",value=\"2\"\},\{name=\"C\",type=\"int\",value=\"3\"\},\{name=\"D\",type=\"int \\\[3\\\]\"\}\\\]" \
  "stack locals listing, simple types: names and values, complex type: names and types"

    mi_gdb_test "234-stack-list-locals" \
	    "234\\^error,msg=\"mi_cmd_stack_list_locals: Usage.*PRINT_VALUES.*\"" \
	    "stack locals listing wrong"

    mi_gdb_test "232-stack-select-frame 1" \
	    "232\\^done" \
                "stack select frame 1"

    mi_gdb_test "232-stack-list-locals 1" \
	    "232\\^done,locals=\\\[\\\]" \
                "stack locals listing for new frame"

    mi_gdb_test "232-stack-list-locals 1" \
	    "232\\^done,locals=\\\[\\\]" \
                "stack locals for same frame (level 1)"
}

mi_runto callee4
test_stack_frame_listing
test_stack_args_listing
test_stack_locals_listing
test_stack_info_depth


mi_gdb_exit
return 0
