2009-09-15 H.J. Lu <hongjiu.lu@intel.com>
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 15 Sep 2009 17:47:26 +0000 (17:47 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 15 Sep 2009 17:47:26 +0000 (17:47 +0000)
* config/tc-i386.c (offset_in_range): Sign extend offset only
for 32bit address mode.

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

index a044a5c670ed580d870bba7418a56a63957105fc..9a9026e12823063790a28aefc5f8de5ad72f1a4c 100644 (file)
@@ -1,3 +1,8 @@
+2009-09-15  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/tc-i386.c (offset_in_range): Sign extend offset only
+       for 32bit address mode.
+
 2009-09-15  Tristan Gingold  <gingold@adacore.com>
 
        * makefile.vms (OBJS): Compile te-vms.c only on Itanium.
index bf756b85b8e49f2962127054b906d4a1d937016b..e5ff75f18c31060feecd640ba6da00b73ed5718b 100644 (file)
@@ -1762,8 +1762,11 @@ offset_in_range (offsetT val, int size)
     default: abort ();
     }
 
-  /* If BFD64, sign extend val.  */
-  if (!use_rela_relocations)
+#ifdef BFD64
+  /* If BFD64, sign extend val for 32bit address mode.  */
+  if (flag_code != CODE_64BIT
+      || i.prefix[ADDR_PREFIX])
+#endif
     if ((val & ~(((addressT) 2 << 31) - 1)) == 0)
       val = (val ^ ((addressT) 1 << 31)) - ((addressT) 1 << 31);