* write.c (fixup_segment): When handling an expression involving
authorAlan Modra <amodra@gmail.com>
Sat, 16 Aug 2003 13:35:08 +0000 (13:35 +0000)
committerAlan Modra <amodra@gmail.com>
Sat, 16 Aug 2003 13:35:08 +0000 (13:35 +0000)
the subtraction of two symbols in the same segment, don't clear
fx_pcrel except for TC_M68K.

gas/ChangeLog
gas/write.c

index 9643180e1561be63b33b219b84b878a5aead5344..80ae7bd04f2cd649d501812eeb3fdad82ed19c12 100644 (file)
@@ -1,3 +1,9 @@
+2003-08-16  Alan Modra  <amodra@bigpond.net.au>
+
+       * write.c (fixup_segment): When handling an expression involving
+       the subtraction of two symbols in the same segment, don't clear
+       fx_pcrel except for TC_M68K.
+
 2003-08-14  Alan Modra  <amodra@bigpond.net.au>
 
        * config/tc-i386.h: Remove BFD_ASSEMBLER tests and all !BFD_ASSEMBLER
index 1419ab564eb9ca2c3898d9863ee5819f75dcd5bd..9eb17c6597f42e337faf1b61ff3c7dd48517db44 100644 (file)
@@ -2642,18 +2642,12 @@ fixup_segment (fixP, this_segment)
              add_number += S_GET_VALUE (fixP->fx_addsy);
              add_number -= S_GET_VALUE (fixP->fx_subsy);
              fixP->fx_offset = add_number;
-             /* If the back-end code has selected a pc-relative
-                reloc, adjust the value to be pc-relative.  */
-             if (1
-#ifdef TC_M68K
-                 /* See the comment below about 68k weirdness.  */
-                 && 0
-#endif
-                 && fixP->fx_pcrel)
-               add_number -= MD_PCREL_FROM_SECTION (fixP, this_segment); 
              fixP->fx_addsy = NULL;
              fixP->fx_subsy = NULL;
+#ifdef TC_M68K
+             /* See the comment below about 68k weirdness.  */
              fixP->fx_pcrel = 0;
+#endif
            }
          else if (sub_symbol_segment == absolute_section
                   && !TC_FORCE_RELOCATION_SUB_ABS (fixP))