* config/obj-coffbfd.c (fixup_segment) [DIFF_EXPR_OK]: If
authorKen Raeburn <raeburn@cygnus>
Wed, 13 Oct 1993 20:54:03 +0000 (20:54 +0000)
committerKen Raeburn <raeburn@cygnus>
Wed, 13 Oct 1993 20:54:03 +0000 (20:54 +0000)
sub_symbolP is in the current segment, convert to a PC-relative
fixup and discard the symbol.
(Copied from write.c.)

gas/config/obj-coffbfd.c

index b73dbff6d62698ff367f77d6ff7d87ec751a80bb..d0318844955c9217ca4b6e48b98d443a131bf01c 100644 (file)
@@ -2497,6 +2497,19 @@ DEFUN (fixup_segment, (segP, this_segment_type),
                {
                  add_number -= S_GET_VALUE (sub_symbolP);
                }
+#ifdef DIFF_EXPR_OK
+             else if (!pcrel
+                      && S_GET_SEGMENT (sub_symbolP) == this_segment_type)
+               {
+                 /* Make it pc-relative.  */
+                 add_number += (md_pcrel_from (fixP)
+                                - S_GET_VALUE (sub_symbolP));
+                 pcrel = 1;
+                 fixP->fx_pcrel = 1;
+                 sub_symbolP = 0;
+                 fixP->fx_subsy = 0;
+               }
+#endif
              else
                {
                  as_bad ("Can't emit reloc {- %s-seg symbol \"%s\"} @ file address %ld.",