Use fits_in_signed_long to check x32 addend overflow
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 10 May 2012 03:48:33 +0000 (03:48 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 10 May 2012 03:48:33 +0000 (03:48 +0000)
* config/tc-i386.c (tc_gen_reloc): Use fits_in_signed_long.

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

index 3b43ecd..f9a6e26 100644 (file)
@@ -1,5 +1,9 @@
 2012-05-09  H.J. Lu  <hongjiu.lu@intel.com>
 
+       * config/tc-i386.c (tc_gen_reloc): Use fits_in_signed_long.
+
+2012-05-09  H.J. Lu  <hongjiu.lu@intel.com>
+
        * config/tc-i386.c (tc_gen_reloc): Check x32 addend overflow
        for BFD_RELOC_64.
 
index 06f9764..ab5233d 100644 (file)
@@ -9175,8 +9175,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
          {
          case BFD_RELOC_64:
            /* Check addend overflow.  */
-           if ((long long) fixp->fx_offset > 0x7fffffffLL
-               || (long long) fixp->fx_offset < -0x80000000LL)
+           if (!fits_in_signed_long (fixp->fx_offset))
              {
                as_bad_where (fixp->fx_file, fixp->fx_line,
                              _("cannot represent relocation %s with addend %lld in x32 mode"),