]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
Fix 64-bit shifts where long only has 32-bit size
authorHannes Domani <ssbssa@yahoo.de>
Tue, 11 Jun 2024 18:36:51 +0000 (20:36 +0200)
committerHannes Domani <ssbssa@yahoo.de>
Fri, 5 Jul 2024 19:43:03 +0000 (21:43 +0200)
commit2de28d2f451e378069662d6a65f4129fd939cff9
tree9853a3319570da99196dbaf496c5a008f3a56ddb
parentcec2e207d08127bf5458a220f741020aff4148da
Fix 64-bit shifts where long only has 32-bit size

On systems where long has 32-bit size you get these failures:

print 1 << (unsigned long long) 0xffffffffffffffff
Cannot export value 18446744073709551615 as 32-bits unsigned integer (must be between 0 and 4294967295)
(gdb) FAIL: gdb.base/bitshift.exp: lang=c: max-uint64: print 1 << (unsigned long long) 0xffffffffffffffff
print 1 >> (unsigned long long) 0xffffffffffffffff
Cannot export value 18446744073709551615 as 32-bits unsigned integer (must be between 0 and 4294967295)
(gdb) FAIL: gdb.base/bitshift.exp: lang=c: max-uint64: print 1 >> (unsigned long long) 0xffffffffffffffff
print -1 << (unsigned long long) 0xffffffffffffffff
Cannot export value 18446744073709551615 as 32-bits unsigned integer (must be between 0 and 4294967295)
(gdb) FAIL: gdb.base/bitshift.exp: lang=c: max-uint64: print -1 << (unsigned long long) 0xffffffffffffffff
print -1 >> (unsigned long long) 0xffffffffffffffff
Cannot export value 18446744073709551615 as 32-bits unsigned integer (must be between 0 and 4294967295)
(gdb) FAIL: gdb.base/bitshift.exp: lang=c: max-uint64: print -1 >> (unsigned long long) 0xffffffffffffffff

Fixed by changing the number-of-bits variable to ULONGEST.

Approved-By: Tom Tromey <tom@tromey.com>
gdb/testsuite/gdb.base/bitshift.exp
gdb/valarith.c