# Copyright 2000-2021 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
}

standard_testfile

if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
     untested "failed to compile"
     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 any "\[^\"\]+"

    set callee4_begin [gdb_get_line_number "callee4 begin"]
    mi_continue_to_line $callee4_begin "continue to callee4 begin"

    # 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=\"$callee4_begin\",arch=\"$any\"\},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=\"$callee4_begin\",arch=\"$any\"\}" \
	"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
