]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
* write.h (struct fix <fx_pcrel_adjust>): Make it a signed char.
authorAlan Modra <amodra@gmail.com>
Mon, 5 Nov 2012 07:10:37 +0000 (07:10 +0000)
committerAlan Modra <amodra@gmail.com>
Mon, 5 Nov 2012 07:10:37 +0000 (07:10 +0000)
* config/tc-m68k.c (tc_gen_reloc, md_pcrel_from): Remove explicit
sign extendion of fx_pxrel_adjust.

gas/ChangeLog
gas/config/tc-m68k.c
gas/write.h

index ed0f297699138c9e7f17613f7a88c78740e8009e..082dfd60164b42064f2c19046c4d0a753608bc3c 100644 (file)
@@ -1,3 +1,9 @@
+2012-11-05  Alan Modra  <amodra@gmail.com>
+
+       * write.h (struct fix <fx_pcrel_adjust>): Make it a signed char.
+       * config/tc-m68k.c (tc_gen_reloc, md_pcrel_from): Remove explicit
+       sign extendion of fx_pxrel_adjust.
+
 2012-11-01  Maciej W. Rozycki  <macro@codesourcery.com>
 
        * config/tc-mips.c (is_delay_slot_valid): Simplify expression.
index 21accf605b22ebc5af491e173faeef93888b6667..ea47ba402fd4bb00a849469354ef1ac688475ef5 100644 (file)
@@ -1377,9 +1377,7 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixp)
     reloc->addend = fixp->fx_addnumber;
   else
     reloc->addend = (section->vma
-                    /* Explicit sign extension in case char is
-                       unsigned.  */
-                    + ((fixp->fx_pcrel_adjust & 0xff) ^ 0x80) - 0x80
+                    + fixp->fx_pcrel_adjust
                     + fixp->fx_addnumber
                     + md_pcrel_from (fixp));
 #endif
@@ -7911,9 +7909,7 @@ md_pcrel_from (fixS *fixP)
 {
   int adjust;
 
-  /* Because fx_pcrel_adjust is a char, and may be unsigned, we explicitly
-     sign extend the value here.  */
-  adjust = ((fixP->fx_pcrel_adjust & 0xff) ^ 0x80) - 0x80;
+  adjust = fixP->fx_pcrel_adjust;
   if (adjust == 64)
     adjust = -1;
   return fixP->fx_where + fixP->fx_frag->fr_address - adjust;
index 8303f1be98b6548e4e30a326f042f78e07aed7f5..d7215816da92767089117d62c7767dc75096464b 100644 (file)
@@ -64,8 +64,8 @@ struct fix
   /* The value is signed when checking for overflow.  */
   unsigned fx_signed : 1;
 
-  /* pc-relative offset adjust (only used by m68k and m68hc11) */
-  char fx_pcrel_adjust;
+  /* pc-relative offset adjust (only used by some CPU specific code) */
+  signed char fx_pcrel_adjust;
 
   /* How many bytes are involved? */
   unsigned char fx_size;