projects
/
binutils-gdb.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
602e9f0
)
ubsan: tc-mips.c:9606 shift exponent 32 is too large
author
Alan Modra
<amodra@gmail.com>
Wed, 2 Sep 2020 00:50:53 +0000
(10:20 +0930)
committer
Alan Modra
<amodra@gmail.com>
Wed, 2 Sep 2020 07:00:43 +0000
(16:30 +0930)
* config/tc-mips.c (load_register): Avoid too large shift.
gas/ChangeLog
patch
|
blob
|
history
gas/config/tc-mips.c
patch
|
blob
|
history
diff --git
a/gas/ChangeLog
b/gas/ChangeLog
index 052c9541ff9ca45e5484e6344eeab8c8b845a970..fece8b594120e4bfa1b1b03b977dcbddc10bfd76 100644
(file)
--- a/
gas/ChangeLog
+++ b/
gas/ChangeLog
@@
-1,3
+1,7
@@
+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.
diff --git
a/gas/config/tc-mips.c
b/gas/config/tc-mips.c
index 7d0d5a1991845bef354ac01cfbe96df5968787ef..81e2370eee6826b161b0673a3573da5f76072586 100644
(file)
--- 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
{