[binutils-gdb] ubsan: tc-sparc.c:1146 left shift cannot be represented

Alan Modra amodra@sourceware.org
Wed Sep 2 08:46:39 GMT 2020


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=6228e2790a72b3335e12d7604ba60f0d3fa1c880

commit 6228e2790a72b3335e12d7604ba60f0d3fa1c880
Author: Alan Modra <amodra@gmail.com>
Date:   Wed Sep 2 10:24:31 2020 +0930

    ubsan: tc-sparc.c:1146 left shift cannot be represented
    
            * config/tc-sparc.c (in_signed_range): Use an unsigned type for
            sign mask.

Diff:
---
 gas/ChangeLog         | 5 +++++
 gas/config/tc-sparc.c | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index b6bc2099cd7..d6b58b48527 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2020-09-02  Alan Modra  <amodra@gmail.com>
+
+	* config/tc-sparc.c (in_signed_range): Use an unsigned type for
+	sign mask.
+
 2020-09-02  Alan Modra  <amodra@gmail.com>
 
 	* config/tc-nios2.c (md_apply_fix): Avoid too large shift.
diff --git a/gas/config/tc-sparc.c b/gas/config/tc-sparc.c
index d48112ec0af..d728d26531f 100644
--- a/gas/config/tc-sparc.c
+++ b/gas/config/tc-sparc.c
@@ -1143,7 +1143,7 @@ in_signed_range (bfd_signed_vma val, bfd_signed_vma max)
      0xffffffff is always considered -1 on sparc32.  */
   if (sparc_arch_size == 32)
     {
-      bfd_signed_vma sign = (bfd_signed_vma) 1 << 31;
+      bfd_vma sign = (bfd_vma) 1 << 31;
       val = ((val & U0xffffffff) ^ sign) - sign;
     }
   if (val > max)


More information about the Binutils-cvs mailing list