summaryrefslogtreecommitdiff
path: root/gdb/testsuite
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2022-06-04 13:17:33 +0200
committerTom de Vries <tdevries@suse.de>2022-06-04 13:17:33 +0200
commita2c0d041fdbf9d661099e31629c96cdd666e8b83 (patch)
treefd57bbce38c965858a10bf155ec18832f3e2d5fc /gdb/testsuite
parent1d8c0dfae79a5183e9e3311fb867afd679bc8e84 (diff)
[gdb/fortran] Fix literal truncation
As mentioned in commit 5b758627a18 ("Make gdb.base/parse_number.exp test all architectures"): ... There might be a bug that 32-bit fortran truncates 64-bit values to 32-bit, given "p/x 0xffffffffffffffff" returns "0xffffffff". ... More concretely, we have: ... $ for arch in i386:x86-64 i386; do \ gdb -q -batch -ex "set arch $arch" -ex "set lang fortran" \ -ex "p /x 0xffffffffffffffff"; \ done The target architecture is set to "i386:x86-64". $1 = 0xffffffffffffffff The target architecture is set to "i386". $1 = 0xffffffff ... Fix this by adding a range check in parse_number in gdb/f-exp.y. Furthermore, make sure we error out on overflow instead of truncating in all other cases. Tested on x86_64-linux.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r--gdb/testsuite/gdb.base/parse_number.exp4
1 files changed, 1 insertions, 3 deletions
diff --git a/gdb/testsuite/gdb.base/parse_number.exp b/gdb/testsuite/gdb.base/parse_number.exp
index 638ea34238..87554ccf99 100644
--- a/gdb/testsuite/gdb.base/parse_number.exp
+++ b/gdb/testsuite/gdb.base/parse_number.exp
@@ -176,9 +176,7 @@ proc parse_number { lang n } {
return [list "unsigned long" $n]
} else {
# Overflow.
- # Some truncated value or re_overflow, should be re_overflow.
- return [list "((unsigned )?(int|long)|$re_overflow)" \
- ($any|$re_overflow)]
+ return [list $re_overflow $re_overflow]
}
} else {
if { [c_like $lang] } {