4931af25b8
Some tests expect the the target is aarch64, but checking target triplet is not accurate, because target triplet can be aarch64 but the program is in arm (or aarch32) state. This patch addes a new proc is_aarch64_target which returns true if the target is on aarch64 state. gdb/testsuite: 2015-07-07 Yao Qi <yao.qi@linaro.org> * gdb.arch/aarch64-atomic-inst.exp: Check is_aarch64_target instead of istarget "aarch64*-*-*". * gdb.arch/aarch64-fp.exp: Likewise. * gdb.base/float.exp: Likewise. * gdb.reverse/aarch64.exp: Likewise. * lib/gdb.exp (is_aarch64_target): New proc.
109 lines
3.6 KiB
Text
109 lines
3.6 KiB
Text
# Copyright 2003-2015 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/>.
|
|
|
|
# Please email any bugs, comments, and/or additions to this file to:
|
|
# bug-gdb@gnu.org
|
|
|
|
# This file is part of the gdb testsuite.
|
|
|
|
#
|
|
# Test floating-point related functionality.
|
|
#
|
|
|
|
|
|
if { [prepare_for_testing float.exp float float.c] } {
|
|
return -1
|
|
}
|
|
|
|
# Set it up at a breakpoint so we have its registers.
|
|
|
|
if ![runto_main] then {
|
|
perror "couldn't run to breakpoint"
|
|
continue
|
|
}
|
|
|
|
# Test "info float".
|
|
|
|
if { [is_aarch64_target] } then {
|
|
gdb_test "info float" "d0.*d1.*d31.*s0.*s1.*s31.*" "info float"
|
|
} elseif { [istarget "alpha*-*-*"] } then {
|
|
gdb_test "info float" "f0.*" "info float"
|
|
} elseif { [is_aarch32_target] } then {
|
|
gdb_test_multiple "info float" "info float" {
|
|
-re "Software FPU type.*mask:.*flags:.*$gdb_prompt $" {
|
|
pass "info float (FPA)"
|
|
}
|
|
-re "fpscr.*s0.*s1.*s31.*$gdb_prompt $" {
|
|
# Only check for single precision; d0 might be a vector register
|
|
# if we have NEON.
|
|
pass "info float (VFP)"
|
|
}
|
|
-re "No floating.point info available for this processor.*" {
|
|
pass "info float (without FPU)"
|
|
}
|
|
}
|
|
} elseif { [istarget "i?86-*-*"] || [istarget "x86_64-*-*"] } then {
|
|
gdb_test "info float" "R7:.*Status Word:.*Opcode:.*" "info float"
|
|
} elseif [istarget "ia64-*-*"] then {
|
|
gdb_test "info float" "f0.*f1.*f127.*" "info float"
|
|
} elseif [istarget "m68k-*-*"] then {
|
|
gdb_test_multiple "info float" "info_float" {
|
|
-re "fp0.*fp1.*fp7.*$gdb_prompt $" {
|
|
pass "info float (with FPU)"
|
|
}
|
|
-re "No floating.point info available for this processor.*" {
|
|
pass "info float (without FPU)"
|
|
}
|
|
}
|
|
} elseif [istarget "mips*-*-*"] then {
|
|
gdb_test_multiple "info float" "info float" {
|
|
-re "fpu type: none / unused\r\n$gdb_prompt $" {
|
|
pass "info float (without FPU)"
|
|
}
|
|
-re "fpu type:.*cause.*mask.*flags.*round.*flush.*f0:.*flt:.*dbl:.*$gdb_prompt $" {
|
|
pass "info float (with FPU)"
|
|
}
|
|
}
|
|
} elseif [istarget "powerpc*-*-*"] then {
|
|
gdb_test_multiple "info float" "info_float" {
|
|
-re "f0.*f1.*f31.*fpscr.*$gdb_prompt $" {
|
|
pass "info float (with FPU)"
|
|
}
|
|
-re "No floating.point info available for this processor.*" {
|
|
pass "info float (without FPU)"
|
|
}
|
|
}
|
|
} elseif [istarget "s390*-*-*"] then {
|
|
gdb_test "info float" "fpc.*f0.*f1.*f15.*" "info float"
|
|
} elseif [istarget "sh*-*"] then {
|
|
# SH may or may not have an FPU
|
|
gdb_test_multiple "info float" "info float" {
|
|
-re "fpul.*fr0.*fr1.*fr15.*$gdb_prompt $" {
|
|
pass "info float (with FPU)"
|
|
}
|
|
-re "No floating.point info available for this processor.*" {
|
|
pass "info float (without FPU)"
|
|
}
|
|
}
|
|
} elseif [istarget "hppa*-*"] then {
|
|
gdb_test "info float" "fr4.*fr4R.*fr31R.*" "info float"
|
|
} elseif [istarget "sparc*-*-*"] then {
|
|
gdb_test "info float" "f0.*f1.*f31.*d0.*d30.*" "info float"
|
|
} else {
|
|
gdb_test "info float" "No floating.point info available for this processor." "info float (unknown target)"
|
|
}
|
|
|
|
gdb_test "step"
|
|
gdb_test "finish" "Value returned is .* = (inf|nan).*"
|