Commit | Line | Data |
---|---|---|
e2882c85 | 1 | # Copyright 2003-2018 Free Software Foundation, Inc. |
dabf8a35 MK |
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 | |
e22f8b7c | 5 | # the Free Software Foundation; either version 3 of the License, or |
dabf8a35 MK |
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 | |
e22f8b7c | 14 | # along with this program. If not, see <http://www.gnu.org/licenses/>. |
dabf8a35 MK |
15 | |
16 | # Please email any bugs, comments, and/or additions to this file to: | |
17 | # bug-gdb@gnu.org | |
18 | ||
19 | # This file is part of the gdb testsuite. | |
20 | ||
dabf8a35 MK |
21 | # |
22 | # Test floating-point related functionality. | |
23 | # | |
24 | ||
dabf8a35 | 25 | |
5b362f04 | 26 | if { [prepare_for_testing "failed to prepare" float float.c] } { |
b60f0898 | 27 | return -1 |
dabf8a35 MK |
28 | } |
29 | ||
dabf8a35 MK |
30 | # Set it up at a breakpoint so we have its registers. |
31 | ||
32 | if ![runto_main] then { | |
33 | perror "couldn't run to breakpoint" | |
34 | continue | |
35 | } | |
36 | ||
37 | # Test "info float". | |
38 | ||
4931af25 | 39 | if { [is_aarch64_target] } then { |
3772b53f MR |
40 | gdb_test "info float" "d0.*d1.*d31.*s0.*s1.*s31.*" "info float" |
41 | } elseif { [istarget "alpha*-*-*"] } then { | |
d80dbb52 | 42 | gdb_test "info float" "f0.*" "info float" |
9fcf688e | 43 | } elseif { [is_aarch32_target] } then { |
bd5ddfe8 DJ |
44 | gdb_test_multiple "info float" "info float" { |
45 | -re "Software FPU type.*mask:.*flags:.*$gdb_prompt $" { | |
46 | pass "info float (FPA)" | |
47 | } | |
58d6951d DJ |
48 | -re "fpscr.*s0.*s1.*s31.*$gdb_prompt $" { |
49 | # Only check for single precision; d0 might be a vector register | |
50 | # if we have NEON. | |
51 | pass "info float (VFP)" | |
52 | } | |
3e3e7fae | 53 | -re "No floating.point info available for this processor.*$gdb_prompt $" { |
bd5ddfe8 DJ |
54 | pass "info float (without FPU)" |
55 | } | |
56 | } | |
7b34ad4e | 57 | } elseif { [istarget "i?86-*-*"] || [istarget "x86_64-*-*"] } then { |
dabf8a35 | 58 | gdb_test "info float" "R7:.*Status Word:.*Opcode:.*" "info float" |
21c38304 JJ |
59 | } elseif [istarget "ia64-*-*"] then { |
60 | gdb_test "info float" "f0.*f1.*f127.*" "info float" | |
83876b3b | 61 | } elseif [istarget "m68k-*-*"] then { |
d8f82aba DJ |
62 | gdb_test_multiple "info float" "info_float" { |
63 | -re "fp0.*fp1.*fp7.*$gdb_prompt $" { | |
64 | pass "info float (with FPU)" | |
65 | } | |
3e3e7fae | 66 | -re "No floating.point info available for this processor.*$gdb_prompt $" { |
d8f82aba DJ |
67 | pass "info float (without FPU)" |
68 | } | |
69 | } | |
caeb605f | 70 | } elseif [istarget "mips*-*-*"] then { |
1bab7383 YQ |
71 | gdb_test_multiple "info float" "info float" { |
72 | -re "fpu type: none / unused\r\n$gdb_prompt $" { | |
73 | pass "info float (without FPU)" | |
74 | } | |
75 | -re "fpu type:.*cause.*mask.*flags.*round.*flush.*f0:.*flt:.*dbl:.*$gdb_prompt $" { | |
76 | pass "info float (with FPU)" | |
77 | } | |
78 | } | |
a28d8e50 YTL |
79 | } elseif [istarget "nds32*-*-*"] then { |
80 | gdb_test_multiple "info float" "info_float" { | |
81 | -re "fd0.*fd3.*$gdb_prompt $" { | |
82 | pass "info float (with FPU)" | |
83 | } | |
3e3e7fae | 84 | -re "No floating.point info available for this processor.*$gdb_prompt $" { |
a28d8e50 YTL |
85 | pass "info float (without FPU)" |
86 | } | |
87 | } | |
384e1a61 | 88 | } elseif [istarget "powerpc*-*-*"] then { |
d8f82aba DJ |
89 | gdb_test_multiple "info float" "info_float" { |
90 | -re "f0.*f1.*f31.*fpscr.*$gdb_prompt $" { | |
91 | pass "info float (with FPU)" | |
92 | } | |
3e3e7fae | 93 | -re "No floating.point info available for this processor.*$gdb_prompt $" { |
d8f82aba DJ |
94 | pass "info float (without FPU)" |
95 | } | |
96 | } | |
d0f54f9d JB |
97 | } elseif [istarget "s390*-*-*"] then { |
98 | gdb_test "info float" "fpc.*f0.*f1.*f15.*" "info float" | |
c99c59c3 MS |
99 | } elseif [istarget "sh*-*"] then { |
100 | # SH may or may not have an FPU | |
101 | gdb_test_multiple "info float" "info float" { | |
102 | -re "fpul.*fr0.*fr1.*fr15.*$gdb_prompt $" { | |
103 | pass "info float (with FPU)" | |
104 | } | |
3e3e7fae | 105 | -re "No floating.point info available for this processor.*$gdb_prompt $" { |
c99c59c3 MS |
106 | pass "info float (without FPU)" |
107 | } | |
108 | } | |
c892bb64 RC |
109 | } elseif [istarget "hppa*-*"] then { |
110 | gdb_test "info float" "fr4.*fr4R.*fr31R.*" "info float" | |
880da185 DM |
111 | } elseif [istarget "sparc*-*-*"] then { |
112 | gdb_test "info float" "f0.*f1.*f31.*d0.*d30.*" "info float" | |
dabf8a35 | 113 | } else { |
c892bb64 | 114 | gdb_test "info float" "No floating.point info available for this processor." "info float (unknown target)" |
dabf8a35 | 115 | } |
fbe12357 PP |
116 | |
117 | gdb_test "step" | |
118 | gdb_test "finish" "Value returned is .* = (inf|nan).*" |