ubsan: expr.c:1725,1741 signed integer overflow

Alan Modra amodra@gmail.com
Wed Sep 2 08:42:56 GMT 2020


	* expr.c (add_to_result, subtract_from_result): Use unsigned
	addition and subtraction.

diff --git a/gas/expr.c b/gas/expr.c
index da4fbcf8cd..6f74de786d 100644
--- a/gas/expr.c
+++ b/gas/expr.c
@@ -1722,7 +1722,7 @@ add_to_result (expressionS *resultP, offsetT amount, int rhs_highbit)
   valueT ures = resultP->X_add_number;
   valueT uamount = amount;
 
-  resultP->X_add_number += amount;
+  resultP->X_add_number += uamount;
 
   resultP->X_extrabit ^= rhs_highbit;
 
@@ -1738,7 +1738,7 @@ subtract_from_result (expressionS *resultP, offsetT amount, int rhs_highbit)
   valueT ures = resultP->X_add_number;
   valueT uamount = amount;
 
-  resultP->X_add_number -= amount;
+  resultP->X_add_number -= uamount;
 
   resultP->X_extrabit ^= rhs_highbit;
 
-- 
Alan Modra
Australia Development Lab, IBM



More information about the Binutils mailing list