# Copyright 2000-2002, 2004-2005, 2007-2012 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=mi"

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 mi-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=\"-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 --all-values 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=\"-stack-list-arguments: 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=\"-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 --simple-values" \
	    "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=\"-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
