[binutils-gdb] x86: don't truncate values in diagnostics and alike

Jan Beulich jbeulich@sourceware.org
Fri Apr 23 07:18:57 GMT 2021


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

commit 7b025ee8c81312ea0c1a7fd44b7813f59df871ef
Author: Jan Beulich <jbeulich@suse.com>
Date:   Fri Apr 23 09:15:45 2021 +0200

    x86: don't truncate values in diagnostics and alike
    
    Truncating an expression's X_add_number to just "long" can result in
    confusing output (e.g. an apparently in-range number claimed to be out
    of range). Use the abstraction that bfd provides for this.
    
    Take the opportunity and also insert a missing "of".

Diff:
---
 gas/ChangeLog        | 5 +++++
 gas/config/tc-i386.c | 8 ++++----
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index bada40220ac..a820eab5122 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2021-04-23  Jan Beulich  <jbeulich@suse.com>
+
+	* config/tc-i386.c (pe): Don't truncate expression value.
+	(i386_finalize_displacement): Likewise.
+
 2021-04-21  Nick Clifton  <nickc@redhat.com>
 
 	* testsuite/gas/aarch64/dwarf.d: Adjust expected output to allow
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index e49d0f53f0b..007d774203a 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -3297,8 +3297,8 @@ static void
 pe (expressionS *e)
 {
   fprintf (stdout, "    operation     %d\n", e->X_op);
-  fprintf (stdout, "    add_number    %ld (%lx)\n",
-	   (long) e->X_add_number, (long) e->X_add_number);
+  fprintf (stdout, "    add_number    %" BFD_VMA_FMT "d (%" BFD_VMA_FMT "x)\n",
+	   e->X_add_number, e->X_add_number);
   if (e->X_add_symbol)
     {
       fprintf (stdout, "    add_symbol    ");
@@ -10922,8 +10922,8 @@ i386_finalize_displacement (segT exp_seg ATTRIBUTE_UNUSED, expressionS *exp,
 	  i.types[this_operand].bitfield.disp32s = 0;
 	  if (i.types[this_operand].bitfield.baseindex)
 	    {
-	      as_bad (_("0x%lx out range of signed 32bit displacement"),
-		      (long) exp->X_add_number);
+	      as_bad (_("0x%" BFD_VMA_FMT "x out of range of signed 32bit displacement"),
+		      exp->X_add_number);
 	      ret = 0;
 	    }
 	}


More information about the Binutils-cvs mailing list