113546Sjulian# Copyright 2004-2023 Free Software Foundation, Inc. 235509Sjb# 313546Sjulian# This program is free software; you can redistribute it and/or modify 413546Sjulian# it under the terms of the GNU General Public License as published by 513546Sjulian# the Free Software Foundation; either version 3 of the License, or 613546Sjulian# (at your option) any later version. 713546Sjulian# 813546Sjulian# This program is distributed in the hope that it will be useful, 913546Sjulian# but WITHOUT ANY WARRANTY; without even the implied warranty of 1013546Sjulian# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1113546Sjulian# GNU General Public License for more details. 1213546Sjulian# 1313546Sjulian# You should have received a copy of the GNU General Public License 1413546Sjulian# along with this program. If not, see <http://www.gnu.org/licenses/>. 1513546Sjulian 1613546Sjulianload_lib "ada.exp" 1713546Sjulian 1813546Sjulianif { [skip_ada_tests] } { return -1 } 1913546Sjulian 2013546Sjulianstandard_ada_testfile fixed_points 2113546Sjulian 2213546Sjulianforeach_with_prefix scenario {all minimal} { 2313546Sjulian set flags [list debug additional_flags=-fgnat-encodings=$scenario] 2413546Sjulian if {[gdb_compile_ada "${srcfile}" "${binfile}-${scenario}" executable $flags] != ""} { 2513546Sjulian return -1 2613546Sjulian } 2713546Sjulian 2813546Sjulian clean_restart ${testfile}-${scenario} 2913546Sjulian 3013546Sjulian set bp_location [gdb_get_line_number "Set breakpoint here" ${testdir}/fixed_points.adb] 3113546Sjulian runto "fixed_points.adb:$bp_location" 3213546Sjulian 3317706Sjulian # Fixed point subtypes: 3413546Sjulian 3517706Sjulian gdb_test "print base_object" \ 3617706Sjulian "= -50" \ 3713546Sjulian "p on a fixed point type" 3813546Sjulian 3913546Sjulian gdb_test "print subtype_object" \ 4013546Sjulian "= -50" \ 4113546Sjulian "p on a subtype fixed point type" 4213546Sjulian 4313546Sjulian gdb_test "print new_type_object" \ 4417706Sjulian "= -50" \ 4517706Sjulian "p on a new fixed point type" 4617706Sjulian 4717706Sjulian # Overprecise delta: 4817706Sjulian 4917706Sjulian gdb_test "print Overprecise_Object" \ 5013546Sjulian "= 0.13579135791" 5117706Sjulian 5217706Sjulian gdb_test "ptype Overprecise_Object" \ 5317706Sjulian "type = <2-byte fixed point \\(small = 135791357913579/1000000000000000\\)>" 5417706Sjulian 5517706Sjulian # FP*_Var... 5617706Sjulian 5717706Sjulian gdb_test "print fp1_var" \ 5817706Sjulian " = 0.25" 5917706Sjulian 6017706Sjulian gdb_test "ptype fp1_var" "type = <1-byte fixed point \\(small = 1/16\\)>" 6117706Sjulian 6217706Sjulian gdb_test "print fp2_var" \ 6317706Sjulian " = -0.01" 6417706Sjulian 6517706Sjulian gdb_test "ptype fp2_var" "type = <8-byte fixed point \\(small = 1/100\\)>" 6617706Sjulian 6717706Sjulian gdb_test "print fp3_var" \ 6817706Sjulian " = 0.1" 6917706Sjulian 7017706Sjulian gdb_test "ptype fp3_var" "type = <1-byte fixed point \\(small = 1/30\\)>" 7117706Sjulian 7217706Sjulian gdb_test "print fp2_var + 0" \ 7317706Sjulian " = -0.01" 7417706Sjulian gdb_test "print 0 + fp2_var" \ 7517706Sjulian " = -0.01" 7617706Sjulian gdb_test "print fp2_var - 0" \ 7717706Sjulian " = -0.01" 7817706Sjulian 7917706Sjulian gdb_test "print + fp2_var" \ 8017706Sjulian " = -0.01" 8117706Sjulian gdb_test "print - fp2_var" \ 8213546Sjulian " = 0.01" 8317706Sjulian 8417706Sjulian set fp4 "= 2e-07" 8517706Sjulian gdb_test "print fp4_var" $fp4 8613546Sjulian gdb_test "print fp4_var * 1" $fp4 8713546Sjulian gdb_test "print 1 * fp4_var" $fp4 8813546Sjulian gdb_test "print fp4_var / 1" $fp4 8913546Sjulian 90 # This only started working in GCC 11. 91 if {$scenario == "minimal" && [test_compiler_info {gcc-11-*}]} { 92 gdb_test "print fp5_var" " = 3e-19" 93 } 94} 95