diff options
author | Alan Modra <amodra@gmail.com> | 2020-09-02 10:20:53 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2020-09-02 16:30:43 +0930 |
commit | 7697028a6cff4ba5465c0b3256697df48bd2c60e (patch) | |
tree | 72749520572296c65e90c4c5e6f6e6ea40e89e04 /gas | |
parent | 602e9f0ae74cb349005d259ae50527fb72803f54 (diff) | |
download | gdb-7697028a6cff4ba5465c0b3256697df48bd2c60e.zip gdb-7697028a6cff4ba5465c0b3256697df48bd2c60e.tar.gz gdb-7697028a6cff4ba5465c0b3256697df48bd2c60e.tar.bz2 |
ubsan: tc-mips.c:9606 shift exponent 32 is too large
* config/tc-mips.c (load_register): Avoid too large shift.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 4 | ||||
-rw-r--r-- | gas/config/tc-mips.c | 7 |
2 files changed, 9 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 052c954..fece8b5 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,9 @@ 2020-09-02 Alan Modra <amodra@gmail.com> + * config/tc-mips.c (load_register): Avoid too large shift. + +2020-09-02 Alan Modra <amodra@gmail.com> + * config/tc-d30v.c (parallel_ok): Use 1UL for left shift expression. 2020-09-02 Alan Modra <amodra@gmail.com> diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 7d0d5a1..81e2370 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -9603,8 +9603,11 @@ load_register (int reg, expressionS *ep, int dbl) lo >>= 1; ++bit; } - lo |= (hi & (((unsigned long) 1 << bit) - 1)) << (32 - bit); - hi >>= bit; + if (bit != 0) + { + lo |= (hi & ((2UL << (bit - 1)) - 1)) << (32 - bit); + hi >>= bit; + } } else { |