]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
x86: Remove 32-bit sign extension in offset_in_range
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 13 Jul 2020 17:18:39 +0000 (10:18 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 15 Jul 2020 14:15:33 +0000 (07:15 -0700)
When encoding a 32-bit offset, there is no need to sign-extend it to 64
bits since only the lower 32 bits are used.

PR gas/26237
* config/tc-i386.c (offset_in_range): Remove 32-bit sign
extension.

(cherry picked from commit 7a705315596cf5effe01de8c3ac2535687c5663d)

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

index 5f6d5b2d6932797b30ea3063d5464befa8cad136..0b1ac57e6105a436679afc092825f3280f5fd09b 100644 (file)
@@ -1,3 +1,9 @@
+2020-07-15  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gas/26237
+       * config/tc-i386.c (offset_in_range): Remove 32-bit sign
+       extension.
+
 2020-07-15  Nick Clifton  <nickc@redhat.com>
 
        * write.c (create_note_reloc): Add desc2_size parameter.  Zero out
index 2e0eb24753595f516e120810fd559af4b3a9f692..c0c8a291e7410fa190a628e0ea6d4c14602cf20e 100644 (file)
@@ -2522,14 +2522,6 @@ offset_in_range (offsetT val, int size)
     default: abort ();
     }
 
-#ifdef BFD64
-  /* If BFD64, sign extend val for 32bit address mode.  */
-  if (flag_code != CODE_64BIT
-      || i.prefix[ADDR_PREFIX])
-    if ((val & ~(((addressT) 2 << 31) - 1)) == 0)
-      val = (val ^ ((addressT) 1 << 31)) - ((addressT) 1 << 31);
-#endif
-
   if ((val & ~mask) != 0 && (val & ~mask) != ~mask)
     {
       char buf1[40], buf2[40];