#   Copyright 2010-2023 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/>.

# Tests of agent expression handling.

# The tests that use the maintenance command do not need tracepoint
# support on the target, but they do want a live program.

load_lib "trace-support.exp"

standard_testfile actions.c

require gdb_trace_common_supports_arch

if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
	  executable {debug nowarnings}] != "" } {
    untested "failed to compile"
    return -1
}

clean_restart $binfile
runto_main

gdb_test "maint agent 12" ".*const8 12.*pop.*end.*"

gdb_test "maint agent gdb_char_test" ""

gdb_test "maint agent gdb_arr_test\[12\]" ""

gdb_test "maint agent gdb_arr_test\[gdb_short_test\]" ""

gdb_test "maint agent gdb_struct1_test" ""

gdb_test "maint agent gdb_struct1_test.s" ""

gdb_test "maint agent gdb_struct1_test.arr\[gdb_struct1_test.c\]" ""

gdb_test "maint agent gdb_structp_test" ""

gdb_test "maint agent gdb_structp_test->l" ""

gdb_test "maint agent gdb_structp_test->bfield" ""

gdb_test "maint agent gdb_long_test + gdb_short_test" ""

gdb_test "maint agent gdb_long_test - gdb_short_test" ""

gdb_test "maint agent gdb_long_test * gdb_short_test" ""

gdb_test "maint agent gdb_long_test / gdb_short_test" ""

gdb_test "maint agent gdb_structp_test + 1" ""

gdb_test "maint agent gdb_long_test == gdb_short_test" ""

gdb_test "maint agent gdb_long_test != gdb_short_test" ""

gdb_test "maint agent gdb_long_test < gdb_short_test" ""

gdb_test "maint agent gdb_long_test <= gdb_short_test" ""

gdb_test "maint agent gdb_long_test > gdb_short_test" ""

gdb_test "maint agent gdb_long_test >= gdb_short_test" ""

gdb_test "maint agent &gdb_long_test == &gdb_short_test" ""

gdb_test "maint agent &gdb_long_test < &gdb_short_test" ""

gdb_test "maint agent (unsigned char)1L" ".*const.* 1.*"

# Now test eval version of agent expressions.

gdb_test "maint agent-eval 12" ".*const8 12.*end.*"

gdb_test "maint agent-eval gdb_char_test" ""

gdb_test "maint agent-eval gdb_arr_test\[12\]" ""

gdb_test "maint agent-eval gdb_arr_test\[gdb_short_test\]" ""

gdb_test "maint agent-eval gdb_struct1_test" ""

gdb_test "maint agent-eval gdb_struct1_test.s" ""

gdb_test "maint agent-eval gdb_struct1_test.arr\[gdb_struct1_test.c\]" ""

gdb_test "maint agent-eval gdb_structp_test" ""

gdb_test "maint agent-eval gdb_structp_test->l" ""

gdb_test "maint agent-eval gdb_structp_test->bfield" ""

gdb_test "maint agent-eval gdb_long_test + gdb_short_test" ""

gdb_test "maint agent-eval gdb_long_test - gdb_short_test" ""

gdb_test "maint agent-eval gdb_long_test * gdb_short_test" ""

gdb_test "maint agent-eval gdb_long_test / gdb_short_test" ""

gdb_test "maint agent-eval gdb_structp_test + 1" ""

gdb_test "maint agent-eval gdb_long_test == gdb_short_test" ""

gdb_test "maint agent-eval gdb_long_test != gdb_short_test" ""

gdb_test "maint agent-eval gdb_long_test < gdb_short_test" ""

gdb_test "maint agent-eval gdb_long_test <= gdb_short_test" ""

gdb_test "maint agent-eval gdb_long_test > gdb_short_test" ""

gdb_test "maint agent-eval gdb_long_test >= gdb_short_test" ""

gdb_test "maint agent-eval &gdb_long_test == &gdb_short_test" ".*equal.*end.*"

gdb_test "maint agent-eval &gdb_long_test < &gdb_short_test" ""

