| # Copyright 1999, 2007, 2008, 2009, 2010 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/>. |
| |
| if $tracelevel then { |
| strace $tracelevel |
| } |
| |
| load_lib "java.exp" |
| |
| if { [skip_java_tests] } { continue } |
| |
| |
| # Set the current language to Java. This counts as a test. If it |
| # fails, then we skip the other tests. |
| |
| proc set_lang_java {} { |
| global gdb_prompt |
| |
| if [gdb_test "set language java" "" "set language java"] { |
| return 0 |
| } |
| |
| if [gdb_test "show language" ".* source language is \"java\".*"] { |
| return 0 |
| } |
| return 1; |
| } |
| |
| proc test_integer_literals_accepted {} { |
| global gdb_prompt |
| |
| # Test various decimal values. |
| |
| gdb_test "p 123" " = 123" |
| gdb_test "p -123" " = -123" |
| gdb_test "p/d 123" " = 123" |
| |
| # Test various octal values. |
| |
| gdb_test "p 0123" " = 83" |
| gdb_test "p 00123" " = 83" |
| gdb_test "p -0123" " = -83" |
| gdb_test "p/o 0123" " = 0123" |
| |
| # Test various hexadecimal values. |
| |
| gdb_test "p 0x123" " = 291" |
| gdb_test "p -0x123" " = -291" |
| gdb_test "p 0x0123" " = 291" |
| gdb_test "p -0x0123" " = -291" |
| gdb_test "p 0xABCDEF" " = 11259375" |
| gdb_test "p 0xabcdef" " = 11259375" |
| gdb_test "p 0xAbCdEf" " = 11259375" |
| gdb_test "p/x 0x123" " = 0x123" |
| } |
| |
| proc test_character_literals_accepted {} { |
| global gdb_prompt |
| |
| gdb_test "p 'a'" " = 'a'" |
| gdb_test "p/c 'a'" " = 'a'" |
| gdb_test "p/c 70" " = 'F'" |
| gdb_test "p/x 'a'" " = 0x61" |
| gdb_test "p/d 'a'" " = 97" |
| gdb_test "p/t 'a'" " = 1100001" |
| gdb_test "p/x '\\377'" " = 0xff" |
| gdb_test "p '\\''" " = '\\\\''" |
| # Note "p '\\'" => "= 92 '\\'" |
| gdb_test "p '\\\\'" " = '\\\\\\\\'" |
| |
| # Test the /c print format. |
| } |
| |
| proc test_integer_literals_rejected {} { |
| global gdb_prompt |
| |
| test_print_reject "p 0x" |
| gdb_test "p ''" "Empty character constant" |
| gdb_test "p '''" "Empty character constant" |
| test_print_reject "p '\\'" |
| |
| # Note that this turns into "p '\\\'" at gdb's input. |
| test_print_reject "p '\\\\\\'" |
| |
| # Test various decimal values. |
| |
| test_print_reject "p DEADBEEF" |
| |
| test_print_reject "p 123DEADBEEF" |
| test_print_reject "p 123foobar.bazfoo3" |
| test_print_reject "p 123EEEEEEEEEEEEEEEEE33333k333" |
| gdb_test "p 123.4+56.7" "180.(099\[0-9]*|100\[0-9\]*)" "check for floating addition" |
| |
| # Test various octal values. |
| |
| test_print_reject "p 09" |
| test_print_reject "p 079" |
| |
| # Test various hexadecimal values. |
| |
| test_print_reject "p 0xG" |
| test_print_reject "p 0xAG" |
| } |
| |
| |
| |
| # Start with a fresh gdb. |
| |
| gdb_exit |
| gdb_start |
| gdb_reinitialize_dir $srcdir/$subdir |
| |
| gdb_test "print \$pc" "No registers\\." |
| # FIXME: should also test "print $pc" when there is an execfile but no |
| # remote debugging target, process or corefile. |
| |
| gdb_test "set print sevenbit-strings" "" |
| gdb_test "set print address off" "" "" |
| gdb_test "set width 0" "" |
| |
| if [set_lang_java] then { |
| test_integer_literals_accepted |
| test_character_literals_accepted |
| test_integer_literals_rejected |
| } else { |
| fail "Java print command tests suppressed" |
| } |