OSDN Git Service

* write.c (fixup_segment): When handling an expression involving
authoramodra <amodra>
Sat, 16 Aug 2003 13:35:08 +0000 (13:35 +0000)
committeramodra <amodra>
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 9643180..80ae7bd 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 1419ab5..9eb17c6 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))