gas: fix overflow diagnostics
[deliverable/binutils-gdb.git] / gas / write.c
index 682e28f3834658a0eeff211770b559bf6ae8a666..7dc78b7fe19f42c172d386dd62583c6078b5dd28 100644 (file)
@@ -1107,7 +1107,10 @@ fixup_segment (fixS *fixP, segT this_segment)
              mask = 0;
              mask--;           /* Set all bits to one.  */
              mask <<= fixP->fx_size * 8 - (fixP->fx_signed ? 1 : 0);
-             if ((add_number & mask) != 0 && (add_number & mask) != mask)
+             if ((add_number & mask) != 0
+                 && (fixP->fx_signed
+                     ? (add_number & mask) != mask
+                     : (-add_number & mask) != 0))
                {
                  char buf[50], buf2[50];
                  bfd_sprintf_vma (stdoutput, buf, fragP->fr_address + fixP->fx_where);
This page took 0.028149 seconds and 4 git commands to generate.