x86: don't truncate values in diagnostics and alike
authorJan Beulich <jbeulich@suse.com>
Fri, 23 Apr 2021 07:15:45 +0000 (09:15 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 23 Apr 2021 07:15:45 +0000 (09:15 +0200)
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".

gas/ChangeLog
gas/config/tc-i386.c

index bada40220ac214c9e001dc99e8516e58d286defb..a820eab5122290853587de65b4159f2967d5ad86 100644 (file)
@@ -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
index e49d0f53f0b929483ba0657d2eb1de90eed0dc81..007d774203a417b691e9fcd0e28db28eeef09856 100644 (file)
@@ -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;
            }
        }