1# Copyright 2005, 2007 Free Software Foundation, Inc. 2 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16# This file is part of the gdb testsuite. It is intended to test that 17# gdb could correctly handle floating point constant with a suffix. 18 19if $tracelevel { 20 strace $tracelevel 21} 22 23set testfile "bfp-test" 24set srcfile ${testfile}.c 25set binfile ${objdir}/${subdir}/${testfile} 26if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { 27 untested "Couldn't compile ${srcfile}" 28 return -1 29} 30 31gdb_exit 32gdb_start 33gdb_reinitialize_dir $srcdir/$subdir 34gdb_load ${binfile} 35 36if ![runto_main] then { 37 perror "couldn't run to breakpoint" 38 continue 39} 40 41# Run to the breakpoint at return. 42gdb_breakpoint [gdb_get_line_number "return"] 43gdb_continue_to_breakpoint "return" 44 45# Print the original value of b32, b64 and b128. 46gdb_test "print b32" ".*1 = 1\.5.*" "The original value of b32 is 1.5" 47gdb_test "print b64" ".*2 = 2\.25.*" "The original value of b64 is 2.25" 48gdb_test "print b128" ".*3 = 3\.375.*" "The original value of b128 is 3.375" 49 50# Test that gdb could correctly recognize float constant expression with a suffix. 51gdb_test "print b32=-1.5f" ".*4 = -1\.5.*" "Try to change b32 to -1.5 with 'print b32=-1.5f'" 52gdb_test "print b64=-2.25f" ".*5 = -2\.25.*" "Try to change b64 to -2.25 with 'print b64=-2.25f'" 53gdb_test "print b128=-3.375l" ".*6 = -3\.375.*" "Try to change b128 to -3.375 with 'print b128=-3.375l'" 54 55# Test that gdb could handle the above correctly with "set var" command. 56set test "set variable b32 = 10.5f" 57gdb_test_multiple "set var b32=10.5f" "$test" { 58 -re "$gdb_prompt $" { 59 pass "$test" 60 } 61 -re "Invalid number.*$gdb_prompt $" { 62 fail "$test (do not recognize 10.5f)" 63 } 64} 65 66set test "set variable b64 = 20.25f" 67gdb_test_multiple "set var b64=20.25f" "$test" { 68 -re "$gdb_prompt $" { 69 pass "$test" 70 } 71 -re "Invalid number.*$gdb_prompt $" { 72 fail "$test (do not recognize 20.25f)" 73 } 74} 75 76set test "set variable b128 = 30.375l" 77gdb_test_multiple "set var b128=30.375l" "$test" { 78 -re "$gdb_prompt $" { 79 pass "$test" 80 } 81 -re "Invalid number.*$gdb_prompt $" { 82 fail "$test (do not recognize 30.375l)" 83 } 84} 85 86gdb_test "print b32" ".*7 = 10\.5.*" "The value of b32 is changed to 10.5" 87gdb_test "print b64" ".*8 = 20\.25.*" "The value of b64 is changed to 20.25" 88gdb_test "print b128" ".*9 = 30\.375.*" "The value of b128 is changed to 30.375" 89 90# Test that gdb could handle invalid suffix correctly. 91 92set test "set variable b32 = 100.5a" 93gdb_test_multiple "set var b32=100.5a" "$test" { 94 -re "Invalid number.*$gdb_prompt $" { 95 pass "$test" 96 } 97 -re "$gdb_prompt $" { 98 fail "$test (do not report error on invalid suffix)" 99 } 100} 101 102set test "set variable b64 = 200.25x" 103gdb_test_multiple "set var b64=200.25x" "$test" { 104 -re "Invalid number.*$gdb_prompt $" { 105 pass "$test" 106 } 107 -re "$gdb_prompt $" { 108 fail "$test (do not report error on invalid suffix)" 109 } 110} 111 112set test "set variable b128 = 300.375fl" 113gdb_test_multiple "set var b128=300.375fl" "$test" { 114 -re "Invalid number.*$gdb_prompt $" { 115 pass "$test" 116 } 117 -re "$gdb_prompt $" { 118 fail "$test (do not report error on invalid suffix)" 119 } 120} 121 122set test "set variable b128 = 300.375fff" 123gdb_test_multiple "set var b128=300.375fff" "$test" { 124 -re "Invalid number.*$gdb_prompt $" { 125 pass "$test" 126 } 127 -re "$gdb_prompt $" { 128 fail "$test (do not report error on invalid suffix)" 129 } 130} 131