-# Copyright (C) 1992, 1997, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright (C) 1992-2019 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
# This file was written by Fred Fish. (fnf@cygnus.com)
-if $tracelevel then {
- strace $tracelevel
-}
-
-set testfile "gdbvars"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
+standard_testfile
-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
- untested gdbvars.exp
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} {
return -1
}
proc test_convenience_variables {} {
global gdb_prompt
- gdb_test "set \$foo = 101" "" \
+ gdb_test_no_output "set \$foo = 101" \
"Set a new convenience variable"
gdb_test "print \$foo" " = 101" \
"Print contents of new convenience variable"
- gdb_test "set \$foo = 301" "" \
+ gdb_test_no_output "set \$foo = 301" \
"Set convenience variable to a new value"
gdb_test "print \$foo" " = 301" \
"Print new contents of convenience variable"
- gdb_test "set \$_ = 11" "" \
+ gdb_test_no_output "set \$_ = 11" \
"Set convenience variable \$_"
gdb_test "print \$_" " = 11" \
gdb_test "print \$bar" " = void" \
"Print contents of uninitialized convenience variable"
+
+
+ gdb_test "print \$str = \"some string\"" \
+ " = \"some string\"" \
+ "Set convenience variable to string value"
+ gdb_test "print \$str = \"some other string\"" \
+ " = \"some other string\"" \
+ "Change convenience variable to different string value"
+
+ gdb_test "print \$arr = {1, 2, 3}" \
+ " = \\{1, 2, 3\\}" \
+ "Set convenience variable to array value"
+ gdb_test "print \$arr = {0, 1, 2, 3}" \
+ " = \\{0, 1, 2, 3\\}" \
+ "Set convenience variable to different array value"
+}
+
+proc test_convenience_functions {} {
+ gdb_test "print \$_isvoid" " = <internal function _isvoid>" \
+ "Print internal function \$_isvoid"
+
+ gdb_test "print \$isvoid_foo" " = void" \
+ "Print void convenience variable"
+
+ gdb_test "print \$_isvoid (\$isvoid_foo)" " = 1" \
+ "Check whether void convenience variable is void"
+
+ gdb_test_no_output "set \$isvoid_foo = 1" \
+ "Set void convenience variable to 1"
+
+ gdb_test "print \$_isvoid (\$isvoid_foo)" " = 0" \
+ "Check whether non-void convenience variable is void"
+
+ # For the next test, we need the inferior to be running.
+ if { ![runto_main] } {
+ return -1
+ }
+
+ gdb_test "print \$_isvoid (foo_void ())" " = 1" \
+ "Check whether void function is void"
+
+ gdb_test "print \$_isvoid (foo_int ())" " = 0" \
+ "Check whether non-void function is void"
}
proc test_value_history {} {
proc test_with_program {} {
global hex
- gdb_test "set \$prog_var = p" "" \
+ gdb_test_no_output "set \$prog_var = p" \
"Set a new convenience variable to a program variable"
gdb_test "print /x \$prog_var" " = $hex" \
"Print contents of new convenience variable of program variable"
}
-# Start with a fresh gdb.
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${binfile}
-
gdb_test_no_output "set print sevenbit-strings"
test_value_history
test_convenience_variables
+test_convenience_functions
test_with_program