Update all uses of md_apply_fix to use md_apply_fix3. Make it a void function.
authorNick Clifton <nickc@redhat.com>
Thu, 15 Nov 2001 21:29:00 +0000 (21:29 +0000)
committerNick Clifton <nickc@redhat.com>
Thu, 15 Nov 2001 21:29:00 +0000 (21:29 +0000)
72 files changed:
gas/ChangeLog
gas/cgen.c
gas/cgen.h
gas/config/obj-coff.c
gas/config/obj-coff.h
gas/config/tc-a29k.c
gas/config/tc-alpha.c
gas/config/tc-alpha.h
gas/config/tc-arc.c
gas/config/tc-arc.h
gas/config/tc-arm.c
gas/config/tc-arm.h
gas/config/tc-avr.c
gas/config/tc-avr.h
gas/config/tc-cris.c
gas/config/tc-cris.h
gas/config/tc-d10v.c
gas/config/tc-d10v.h
gas/config/tc-d30v.c
gas/config/tc-d30v.h
gas/config/tc-fr30.h
gas/config/tc-h8300.c
gas/config/tc-h8500.c
gas/config/tc-hppa.c
gas/config/tc-i370.c
gas/config/tc-i370.h
gas/config/tc-i386.c
gas/config/tc-i386.h
gas/config/tc-i860.c
gas/config/tc-i860.h
gas/config/tc-i960.c
gas/config/tc-ia64.c
gas/config/tc-ia64.h
gas/config/tc-m32r.c
gas/config/tc-m32r.h
gas/config/tc-m68hc11.c
gas/config/tc-m68k.c
gas/config/tc-m88k.c
gas/config/tc-mcore.c
gas/config/tc-mcore.h
gas/config/tc-mips.c
gas/config/tc-mips.h
gas/config/tc-mmix.c
gas/config/tc-mmix.h
gas/config/tc-mn10200.c
gas/config/tc-mn10200.h
gas/config/tc-mn10300.c
gas/config/tc-mn10300.h
gas/config/tc-ns32k.c
gas/config/tc-openrisc.h
gas/config/tc-pdp11.c
gas/config/tc-pj.c
gas/config/tc-ppc.c
gas/config/tc-ppc.h
gas/config/tc-s390.c
gas/config/tc-s390.h
gas/config/tc-sh.c
gas/config/tc-sh.h
gas/config/tc-sparc.c
gas/config/tc-sparc.h
gas/config/tc-tahoe.c
gas/config/tc-tic30.c
gas/config/tc-tic54x.c
gas/config/tc-tic80.c
gas/config/tc-v850.c
gas/config/tc-v850.h
gas/config/tc-vax.c
gas/config/tc-w65.c
gas/config/tc-z8k.c
gas/doc/internals.texi
gas/tc.h
gas/write.c

index eeb59dd05eef22853041f06a2d49537d829f63d2..66317ac8d2cafa9c876b3339a8a917e6021fdde2 100644 (file)
@@ -1,3 +1,15 @@
+2001-11-15  Nick Clifton  <nickc@cambridge.redhat.com>
+
+       * write.c (fixup_segment): Remove referrences to md_apply_fix and
+       TC_HANDLE_FX_DONE.
+       * cgen.c, config/obj-coff.c, config/tc-*.c: Update all occurances
+       of md_apply_fix to md_apply_fix3.
+       Make all md_apply_fix3 functions void.
+       * cgen.h, config/obj-coff.h, tc-*.h: Remove all definitions of
+       MD_APPLY_FIX3 and TC_HANDLE_FX_DONE.
+       * doc/internals.texi: Update references to md_apply_fix3.
+       * tc.h: Update prototype for md_apply_fix3.
+
 2001-11-15  Alan Modra  <amodra@bigpond.net.au>
 
        * config/tc-i386.h (md_end): Define.
index d334e663756ac79fdf228d33889d1738650ec7d3..ce2f276da4be12c976e55c5167277672139b87d2 100644 (file)
@@ -221,7 +221,7 @@ gas_cgen_swap_fixups (i)
    At this point we do not use a bfd_reloc_code_real_type for
    operands residing in the insn, but instead just use the
    operand index.  This lets us easily handle fixups for any
-   operand type.  We pick a BFD reloc type in md_apply_fix.  */
+   operand type.  We pick a BFD reloc type in md_apply_fix3.  */
 
 fixS *
 gas_cgen_record_fixup (frag, where, insn, length, operand, opinfo, symbol, offset)
@@ -261,7 +261,7 @@ gas_cgen_record_fixup (frag, where, insn, length, operand, opinfo, symbol, offse
    At this point we do not use a bfd_reloc_code_real_type for
    operands residing in the insn, but instead just use the
    operand index.  This lets us easily handle fixups for any
-   operand type.  We pick a BFD reloc type in md_apply_fix.  */
+   operand type.  We pick a BFD reloc type in md_apply_fix3.  */
 
 fixS *
 gas_cgen_record_fixup_exp (frag, where, insn, length, operand, opinfo, exp)
@@ -566,14 +566,14 @@ gas_cgen_finish_insn (insn, buf, length, relax_p, result)
    handles the rest.  bfd_install_relocation (or some other bfd function)
    should handle them all.  */
 
-int
-gas_cgen_md_apply_fix3 (fixP, valueP, seg)
+void
+gas_cgen_md_apply_fix3 (fixP, valP, seg)
      fixS *   fixP;
-     valueT * valueP;
+     valueT * valP;
      segT     seg ATTRIBUTE_UNUSED;
 {
   char *where = fixP->fx_frag->fr_literal + fixP->fx_where;
-  valueT value;
+  valueT value = * valP;
   /* Canonical name, since used a lot.  */
   CGEN_CPU_DESC cd = gas_cgen_cpu_desc;
 
@@ -589,15 +589,15 @@ gas_cgen_md_apply_fix3 (fixP, valueP, seg)
      result of md_pcrel_from.  This is confusing.  */
 
   if (fixP->fx_addsy == (symbolS *) NULL)
-    {
-      value = *valueP;
-      fixP->fx_done = 1;
-    }
+    fixP->fx_done = 1;
+
   else if (fixP->fx_pcrel)
-    value = *valueP;
+    ;
+
   else
     {
       value = fixP->fx_offset;
+
       if (fixP->fx_subsy != (symbolS *) NULL)
        {
          if (S_GET_SEGMENT (fixP->fx_subsy) == absolute_section)
@@ -651,7 +651,7 @@ gas_cgen_md_apply_fix3 (fixP, valueP, seg)
        }
 
       if (fixP->fx_done)
-       return 1;
+       return;
 
       /* The operand isn't fully resolved.  Determine a BFD reloc value
         based on the operand information and leave it to
@@ -659,16 +659,15 @@ gas_cgen_md_apply_fix3 (fixP, valueP, seg)
         partial_inplace == false.  */
 
       reloc_type = md_cgen_lookup_reloc (insn, operand, fixP);
+
       if (reloc_type != BFD_RELOC_NONE)
-       {
-         fixP->fx_r_type = reloc_type;
-       }
+       fixP->fx_r_type = reloc_type;
       else
        {
          as_bad_where (fixP->fx_file, fixP->fx_line,
                        _("unresolved expression that must be resolved"));
          fixP->fx_done = 1;
-         return 1;
+         return;
        }
     }
   else if (fixP->fx_done)
@@ -703,8 +702,6 @@ gas_cgen_md_apply_fix3 (fixP, valueP, seg)
      See the comment describing fx_addnumber in write.h.
      This field is misnamed (or misused :-).  */
   fixP->fx_addnumber = value;
-
-  return 1;
 }
 
 /* Translate internal representation of relocation info to BFD target format.
index 6f10da300eaf85e31ef56334732db395884be10c..94ff670a1b4fb8db8400a5529ebfea8516f9b33d 100644 (file)
@@ -80,7 +80,7 @@ extern fixS * gas_cgen_record_fixup_exp PARAMS ((fragS *, int, const CGEN_INSN *
                                                 expressionS *));
 
 /* md_apply_fix3 handler */
-extern int gas_cgen_md_apply_fix3 PARAMS ((fixS *, valueT *, segT));
+extern void gas_cgen_md_apply_fix3 PARAMS ((fixS *, valueT *, segT));
 
 /* tc_gen_reloc handler */
 extern arelent *gas_cgen_tc_gen_reloc PARAMS ((asection *, fixS *));
index 90c77fbb1d3ddcb583d13387467bad0b9a1d0192..4421e4ff080b585d0ec06e3ef4a086ef23641bf1 100644 (file)
@@ -4496,11 +4496,7 @@ fixup_segment (segP, this_segment_type)
 #endif
        }                       /* if pcrel */
 
-#ifdef MD_APPLY_FIX3
-      md_apply_fix3 (fixP, (valueT *) &add_number, this_segment_type);
-#else
-      md_apply_fix (fixP, add_number);
-#endif
+      md_apply_fix3 (fixP, (valueT *) & add_number, this_segment_type);
 
       if (!fixP->fx_bit_fixP && ! fixP->fx_no_overflow)
        {
index f862f7725ea1c3a13be2c23ab32442b293a52d58..98948bea53151dd25e31fb0c828ebbb8e350e2fc 100644 (file)
 #ifdef TE_PE
 #define TARGET_FORMAT "pe-shl"
 #else
+
+#if 0 /* FIXME: The "shl" varaible does not appear to exist.  What happened to it ?  */
 #define TARGET_FORMAT                                  \
   (shl                                                 \
    ? (sh_small ? "coff-shl-small" : "coff-shl")                \
    : (sh_small ? "coff-sh-small" : "coff-sh"))
+#else
+#define TARGET_FORMAT                                  \
+   (sh_small ? "coff-shl-small" : "coff-shl") 
+#endif
+
 #endif
 #endif
 
index 14c0d822a03b7fd8fc388c60bcedb3c6f045da20..3100d2b58ac39cc116e843a39079143ec4424569 100644 (file)
@@ -782,26 +782,25 @@ md_number_to_chars (buf, val, n)
 }
 
 void
-md_apply_fix (fixP, val)
+md_apply_fix3 (fixP, valP, seg)
      fixS *fixP;
-     long val;
+     valueT * valP;
+     segT seg ATTRIBUTE_UNUSED;
 {
+  long val = * (long *) valP;
   char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
 
-  fixP->fx_addnumber = val;    /* Remember value for emit_reloc */
+  fixP->fx_addnumber = val;    /* Remember value for emit_reloc */
 
   know (fixP->fx_size == 4);
   know (fixP->fx_r_type < NO_RELOC);
 
   /* This is a hack.  There should be a better way to handle this.  */
   if (fixP->fx_r_type == RELOC_WDISP30 && fixP->fx_addsy)
-    {
-      val += fixP->fx_where + fixP->fx_frag->fr_address;
-    }
+    val += fixP->fx_where + fixP->fx_frag->fr_address;
 
   switch (fixP->fx_r_type)
     {
-
     case RELOC_32:
       buf[0] = val >> 24;
       buf[1] = val >> 16;
@@ -863,12 +862,13 @@ md_apply_fix (fixP, val)
       else if (fixP->fx_pcrel)
        {
          long v = val >> 17;
+
          if (v != 0 && v != -1)
            as_bad_where (fixP->fx_file, fixP->fx_line,
                          "call/jmp target out of range");
        }
       else
-       /* this case was supposed to be handled in machine_ip */
+       /* This case was supposed to be handled in machine_ip.  */
        abort ();
       buf[1] = val >> 10;      /* Holds bits 0003FFFC of address */
       buf[3] = val >> 2;
@@ -889,6 +889,9 @@ md_apply_fix (fixP, val)
       as_bad (_("bad relocation type: 0x%02x"), fixP->fx_r_type);
       break;
     }
+
+  if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
+    fixP->fx_done = 1;
 }
 
 #ifdef OBJ_COFF
index 67f0a823a7f985b5aebe8d76d07132d5a1d9d67b..bdcddc90bc6e83f59fa6b3818870bc5398af14cc 100644 (file)
@@ -1118,14 +1118,14 @@ md_pcrel_from (fixP)
    the distance to the "lda" instruction for setting the addend to
    GPDISP.  */
 
-int
+void
 md_apply_fix3 (fixP, valueP, seg)
      fixS *fixP;
-     valueT *valueP;
+     valueT * valP;
      segT seg;
 {
   char * const fixpos = fixP->fx_frag->fr_literal + fixP->fx_where;
-  valueT value = *valueP;
+  valueT value = * valP;
   unsigned image, size;
 
   switch (fixP->fx_r_type)
@@ -1184,7 +1184,7 @@ md_apply_fix3 (fixP, valueP, seg)
          md_number_to_chars (fixpos, value, size);
          goto done;
        }
-      return 1;
+      return;
 
 #ifdef OBJ_ECOFF
     case BFD_RELOC_GPREL32:
@@ -1199,7 +1199,7 @@ md_apply_fix3 (fixP, valueP, seg)
     case BFD_RELOC_GPREL16:
     case BFD_RELOC_ALPHA_GPREL_HI16:
     case BFD_RELOC_ALPHA_GPREL_LO16:
-      return 1;
+      return;
 
     case BFD_RELOC_23_PCREL_S2:
       if (fixP->fx_pcrel == 0 && fixP->fx_addsy == 0)
@@ -1208,7 +1208,7 @@ md_apply_fix3 (fixP, valueP, seg)
          image = (image & ~0x1FFFFF) | ((value >> 2) & 0x1FFFFF);
          goto write_done;
        }
-      return 1;
+      return;
 
     case BFD_RELOC_ALPHA_HINT:
       if (fixP->fx_pcrel == 0 && fixP->fx_addsy == 0)
@@ -1217,22 +1217,22 @@ md_apply_fix3 (fixP, valueP, seg)
          image = (image & ~0x3FFF) | ((value >> 2) & 0x3FFF);
          goto write_done;
        }
-      return 1;
+      return;
 
 #ifdef OBJ_ECOFF
     case BFD_RELOC_ALPHA_LITERAL:
       md_number_to_chars (fixpos, value, 2);
-      return 1;
+      return;
 #endif
     case BFD_RELOC_ALPHA_ELF_LITERAL:
     case BFD_RELOC_ALPHA_LITUSE:
     case BFD_RELOC_ALPHA_LINKAGE:
     case BFD_RELOC_ALPHA_CODEADDR:
-      return 1;
+      return;
 
     case BFD_RELOC_VTABLE_INHERIT:
     case BFD_RELOC_VTABLE_ENTRY:
-      return 1;
+      return;
 
     default:
       {
@@ -1262,7 +1262,7 @@ md_apply_fix3 (fixP, valueP, seg)
     }
 
   if (fixP->fx_addsy != 0 || fixP->fx_pcrel != 0)
-    return 1;
+    return;
   else
     {
       as_warn_where (fixP->fx_file, fixP->fx_line,
@@ -1275,12 +1275,9 @@ write_done:
 
 done:
   fixP->fx_done = 1;
-  return 0;
 }
 
-/*
- * Look for a register name in the given symbol.
- */
+/* Look for a register name in the given symbol.  */
 
 symbolS *
 md_undefined_symbol (name)
index b5121d236ce29eb8e1d76acd292d8058b1b7e258..fb428f9f32ebc286f2b0b7016d8d07a9e3d1489f 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is tc-alpha.h
-   Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000
+   Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
    Free Software Foundation, Inc.
    Written by Ken Raeburn <raeburn@cygnus.com>.
 
@@ -37,7 +37,6 @@
                       : "unknown-format")
 
 #define NEED_LITERAL_POOL
-#define TC_HANDLES_FX_DONE
 #define REPEAT_CONS_EXPRESSIONS
 
 extern int alpha_force_relocation PARAMS ((struct fix *));
@@ -49,7 +48,6 @@ extern valueT alpha_gp_value;
 #define TC_FORCE_RELOCATION(FIXP)      alpha_force_relocation (FIXP)
 #define tc_fix_adjustable(FIXP)                alpha_fix_adjustable (FIXP)
 #define RELOC_REQUIRES_SYMBOL
-#define MD_APPLY_FIX3
 
 /* This expression evaluates to false if the relocation is for a local
    object for which we still want to do the relocation at runtime.
index 112c30adc4b0dab8fca586d4b9abd873c86caf06..3e829fac24818b10515b112d21eeb39263157367 100644 (file)
@@ -834,7 +834,7 @@ md_assemble (str)
                 operands residing in the insn, but instead just use the
                 operand index.  This lets us easily handle fixups for any
                 operand type, although that is admittedly not a very exciting
-                feature.  We pick a BFD reloc type in md_apply_fix.
+                feature.  We pick a BFD reloc type in md_apply_fix3.
 
                 Limm values (4 byte immediate "constants") must be treated
                 normally because they're not part of the actual insn word
@@ -1880,16 +1880,16 @@ get_arc_exp_reloc_type (data_p, default_type, exp, expnew)
    and we attempt to completely resolve the reloc.  If we can not do
    that, we determine the correct reloc code and put it back in the fixup.  */
 
-int
-md_apply_fix3 (fixP, valueP, seg)
+void
+md_apply_fix3 (fixP, valP, seg)
      fixS *fixP;
-     valueT *valueP;
+     valueT * valP;
      segT seg;
 {
 #if 0
   char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
 #endif
-  valueT value;
+  valueT value = * valP;
 
   /* FIXME FIXME FIXME: The value we are passed in *valueP includes
      the symbol values.  Since we are using BFD_ASSEMBLER, if we are
@@ -1903,13 +1903,10 @@ md_apply_fix3 (fixP, valueP, seg)
      result of md_pcrel_from.  This is confusing.  */
 
   if (fixP->fx_addsy == (symbolS *) NULL)
-    {
-      value = *valueP;
-      fixP->fx_done = 1;
-    }
+    fixP->fx_done = 1;
+
   else if (fixP->fx_pcrel)
     {
-      value = *valueP;
       /* ELF relocations are against symbols.
         If this symbol is in a different section then we need to leave it for
         the linker to deal with.  Unfortunately, md_pcrel_from can't tell,
@@ -1962,7 +1959,7 @@ md_apply_fix3 (fixP, valueP, seg)
       if (fixP->fx_done)
        {
          /* Nothing else to do here.  */
-         return 1;
+         return;
        }
 
       /* Determine a BFD reloc value based on the operand information.
@@ -1997,7 +1994,7 @@ md_apply_fix3 (fixP, valueP, seg)
          as_bad_where (fixP->fx_file, fixP->fx_line,
                        "unresolved expression that must be resolved");
          fixP->fx_done = 1;
-         return 1;
+         return;
        }
     }
   else
@@ -2037,8 +2034,6 @@ md_apply_fix3 (fixP, valueP, seg)
     }
 
   fixP->fx_addnumber = value;
-
-  return 1;
 }
 
 /* Translate internal representation of relocation info to BFD target
index 86b925336ff33d69b26e378c0715199aa29ca85d..f14427101ff7714aa8c0adb11c0615db849bb51a 100644 (file)
@@ -53,10 +53,6 @@ extern const char *arc_target_format;
 
 #define LISTING_HEADER "ARC GAS "
 
-#define TC_HANDLES_FX_DONE
-
-#define MD_APPLY_FIX3
-
 /* The ARC needs to parse reloc specifiers in .word.  */
 
 extern void arc_parse_cons_expression PARAMS ((struct expressionS *, unsigned));
index 9f6b5987e78db82d3d8a88961e81ce3097807a79..429cfa5da65795b064e40904081462e757bab0db 100644 (file)
@@ -7581,13 +7581,13 @@ arm_reg_parse (ccp)
   return FAIL;
 }
 
-int
-md_apply_fix3 (fixP, val, seg)
+void
+md_apply_fix3 (fixP, valP, seg)
      fixS *   fixP;
-     valueT * val;
+     valueT * valP;
      segT     seg;
 {
-  offsetT        value = * val;
+  offsetT        value = * valP;
   offsetT        newval;
   unsigned int   newimm;
   unsigned long  temp;
@@ -7847,7 +7847,7 @@ md_apply_fix3 (fixP, val, seg)
              && S_GET_SEGMENT (fixP->fx_addsy) == seg)
            {
              /* Get pc relative value to go into the branch.  */
-             value = * val;
+             value = * valP;
 
              /* Permit a backward branch provided that enough bits
                 are set.  Allow a forwards branch, provided that
@@ -8183,15 +8183,13 @@ md_apply_fix3 (fixP, val, seg)
     case BFD_RELOC_VTABLE_INHERIT:
     case BFD_RELOC_VTABLE_ENTRY:
       fixP->fx_done = 0;
-      return 1;
+      return;
 
     case BFD_RELOC_NONE:
     default:
       as_bad_where (fixP->fx_file, fixP->fx_line,
                    _("Bad relocation fixup type (%d)"), fixP->fx_r_type);
     }
-
-  return 1;
 }
 
 /* Translate internal representation of relocation info to BFD target
index 8de5704efae8e8b866d4dc7fa0256aece4c3bfc2..381e5462cf009ce3aaa6b7ac02019312d344afb0 100644 (file)
@@ -171,10 +171,6 @@ void armelf_frob_symbol PARAMS ((symbolS *, int *));
 
 #define md_operand(x)
 
-#define TC_HANDLES_FX_DONE
-
-#define MD_APPLY_FIX3
-
 #define LOCAL_LABEL(name) (name[0] == '.' && (name[1] == 'L'))
 #define LOCAL_LABELS_FB   1
 #ifdef OBJ_ELF
index d9443ad8777583b0b28fcdf20ec68cdf7f22a4ea..4fb15e39770b152092181bcec47e8d006287426f 100644 (file)
@@ -819,57 +819,53 @@ md_pcrel_from_section (fixp, sec)
 /* GAS will call this for each fixup.  It should store the correct
    value in the object file.  */
 
-int
-md_apply_fix3 (fixp, valuep, seg)
-     fixS *fixp;
-     valueT *valuep;
+void
+md_apply_fix3 (fixP, valP, seg)
+     fixS *fixP;
+     valueT * valP;
      segT seg;
 {
   unsigned char *where;
   unsigned long insn;
-  long value;
+  long value = * (long *) valP;
 
-  if (fixp->fx_addsy == (symbolS *) NULL)
-    {
-      value = *valuep;
-      fixp->fx_done = 1;
-    }
-  else if (fixp->fx_pcrel)
+  if (fixP->fx_addsy == (symbolS *) NULL)
+    fixP->fx_done = 1;
+
+  else if (fixP->fx_pcrel)
     {
-      segT s = S_GET_SEGMENT (fixp->fx_addsy);
+      segT s = S_GET_SEGMENT (fixP->fx_addsy);
 
-      if (fixp->fx_addsy && (s == seg || s == absolute_section))
+      if (fixP->fx_addsy && (s == seg || s == absolute_section))
        {
-         value = S_GET_VALUE (fixp->fx_addsy) + *valuep;
-         fixp->fx_done = 1;
+         value = S_GET_VALUE (fixP->fx_addsy) + *valuep;
+         fixP->fx_done = 1;
        }
-      else
-       value = *valuep;
     }
   else
     {
-      value = fixp->fx_offset;
+      value = fixP->fx_offset;
 
-      if (fixp->fx_subsy != (symbolS *) NULL)
+      if (fixP->fx_subsy != (symbolS *) NULL)
        {
-         if (S_GET_SEGMENT (fixp->fx_subsy) == absolute_section)
+         if (S_GET_SEGMENT (fixP->fx_subsy) == absolute_section)
            {
-             value -= S_GET_VALUE (fixp->fx_subsy);
-             fixp->fx_done = 1;
+             value -= S_GET_VALUE (fixP->fx_subsy);
+             fixP->fx_done = 1;
            }
          else
            {
              /* We don't actually support subtracting a symbol.  */
-             as_bad_where (fixp->fx_file, fixp->fx_line,
+             as_bad_where (fixP->fx_file, fixP->fx_line,
                            _("expression too complex"));
            }
        }
     }
 
-  switch (fixp->fx_r_type)
+  switch (fixP->fx_r_type)
     {
     default:
-      fixp->fx_no_overflow = 1;
+      fixP->fx_no_overflow = 1;
       break;
     case BFD_RELOC_AVR_7_PCREL:
     case BFD_RELOC_AVR_13_PCREL:
@@ -879,18 +875,18 @@ md_apply_fix3 (fixp, valuep, seg)
       break;
     }
 
-  if (fixp->fx_done)
+  if (fixP->fx_done)
     {
       /* Fetch the instruction, insert the fully resolved operand
         value, and stuff the instruction back again.  */
-      where = fixp->fx_frag->fr_literal + fixp->fx_where;
+      where = fixP->fx_frag->fr_literal + fixP->fx_where;
       insn = bfd_getl16 (where);
 
-      switch (fixp->fx_r_type)
+      switch (fixP->fx_r_type)
        {
        case BFD_RELOC_AVR_7_PCREL:
          if (value & 1)
-           as_bad_where (fixp->fx_file, fixp->fx_line,
+           as_bad_where (fixP->fx_file, fixP->fx_line,
                          _("odd address operand: %ld"), value);
 
          /* Instruction addresses are always right-shifted by 1.  */
@@ -898,7 +894,7 @@ md_apply_fix3 (fixp, valuep, seg)
          --value;                      /* Correct PC.  */
 
          if (value < -64 || value > 63)
-           as_bad_where (fixp->fx_file, fixp->fx_line,
+           as_bad_where (fixP->fx_file, fixP->fx_line,
                          _("operand out of range: %ld"), value);
          value = (value << 3) & 0x3f8;
          bfd_putl16 ((bfd_vma) (value | insn), where);
@@ -906,7 +902,7 @@ md_apply_fix3 (fixp, valuep, seg)
 
        case BFD_RELOC_AVR_13_PCREL:
          if (value & 1)
-           as_bad_where (fixp->fx_file, fixp->fx_line,
+           as_bad_where (fixP->fx_file, fixP->fx_line,
                          _("odd address operand: %ld"), value);
 
          /* Instruction addresses are always right-shifted by 1.  */
@@ -917,7 +913,7 @@ md_apply_fix3 (fixp, valuep, seg)
            {
              /* No wrap for devices with >8K of program memory.  */
              if ((avr_mcu->isa & AVR_ISA_MEGA) || avr_opt.no_wrap)
-               as_bad_where (fixp->fx_file, fixp->fx_line,
+               as_bad_where (fixP->fx_file, fixP->fx_line,
                              _("operand out of range: %ld"), value);
            }
 
@@ -1007,7 +1003,7 @@ md_apply_fix3 (fixp, valuep, seg)
 
            x = bfd_getl16 (where);
            if (value & 1)
-             as_bad_where (fixp->fx_file, fixp->fx_line,
+             as_bad_where (fixP->fx_file, fixP->fx_line,
                            _("odd address operand: %ld"), value);
            value >>= 1;
            x |= ((value & 0x10000) | ((value << 3) & 0x1f00000)) >> 16;
@@ -1018,28 +1014,27 @@ md_apply_fix3 (fixp, valuep, seg)
 
        default:
          as_fatal (_("line %d: unknown relocation type: 0x%x"),
-                   fixp->fx_line, fixp->fx_r_type);
+                   fixP->fx_line, fixP->fx_r_type);
          break;
        }
     }
   else
     {
-      switch (fixp->fx_r_type)
+      switch (fixP->fx_r_type)
        {
        case -BFD_RELOC_AVR_HI8_LDI_NEG:
        case -BFD_RELOC_AVR_HI8_LDI:
        case -BFD_RELOC_AVR_LO8_LDI_NEG:
        case -BFD_RELOC_AVR_LO8_LDI:
-         as_bad_where (fixp->fx_file, fixp->fx_line,
+         as_bad_where (fixP->fx_file, fixP->fx_line,
                        _("only constant expression allowed"));
-         fixp->fx_done = 1;
+         fixP->fx_done = 1;
          break;
        default:
          break;
        }
-      fixp->fx_addnumber = value;
+      fixP->fx_addnumber = value;
     }
-  return 0;
 }
 
 /* A `BFD_ASSEMBLER' GAS will call this to generate a reloc.  GAS
index 348946516401cf96ce79d923bb6aaf7c5141442f..7aff4e2f80aac5e1eb4ca66e51cb0a73d7c00f20 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is tc-avr.h
-   Copyright 1999, 2000 Free Software Foundation, Inc.
+   Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
 
    Contributed by Denis Chertykov <denisc@overta.ru>
 
@@ -90,10 +90,6 @@ void avr_cons_fix_new(fragS *frag,int where, int nbytes, expressionS *exp);
      `md_create_short_jump' to create a short jump around a long jump,
      and define `md_create_long_jump' to create a long jump.  */
 
-#define MD_APPLY_FIX3
-
-#define TC_HANDLES_FX_DONE
-
 #undef RELOC_EXPANSION_POSSIBLE
 /*   If you define this macro, it means that `tc_gen_reloc' may return
      multiple relocation entries for a single fixup.  In this case, the
index 9b2203ca08c1507130c2ff7d7a57809e65753bfb..04e8d2f9126b7ff6ae4354e731d1f85bc0293c9e 100644 (file)
@@ -2972,14 +2972,13 @@ md_show_usage (stream)
 /* Apply a fixS (fixup of an instruction or data that we didn't have
    enough info to complete immediately) to the data in a frag.  */
 
-int
+void
 md_apply_fix3 (fixP, valP, seg)
      fixS *fixP;
      valueT *valP;
      segT seg;
 {
-  long val = *valP;
-
+  long val = * (long *) valP;
   char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
 
   if (fixP->fx_addsy == 0 && !fixP->fx_pcrel)
@@ -2999,17 +2998,13 @@ md_apply_fix3 (fixP, valP, seg)
          if (S_GET_SEGMENT (fixP->fx_subsy) == absolute_section)
            val -= S_GET_VALUE (fixP->fx_subsy);
          else
-           {
-             /* We can't actually support subtracting a symbol.  */
-             as_bad_where (fixP->fx_file, fixP->fx_line,
-                           _("expression too complex"));
-           }
+           /* We can't actually support subtracting a symbol.  */
+           as_bad_where (fixP->fx_file, fixP->fx_line,
+                         _("expression too complex"));
        }
 
       cris_number_to_imm (buf, val, fixP->fx_size, fixP, seg);
     }
-
-  return 1;
 }
 
 /* All relocations are relative to the location just after the fixup;
index 3c3bb5a976a7b5829d0ace0072a9719e28073fdb..d1d4b29bdfd57c8c89044896a0e98e8c460eb040 100644 (file)
@@ -75,13 +75,9 @@ extern const int md_long_jump_size;
 extern const struct relax_type md_cris_relax_table[];
 #define TC_GENERIC_RELAX_TABLE md_cris_relax_table
 
-#define TC_HANDLES_FX_DONE
-
 #define TC_FORCE_RELOCATION(fixp) md_cris_force_relocation (fixp)
 extern int md_cris_force_relocation PARAMS ((struct fix *));
 
-#define MD_APPLY_FIX3
-
 #define IS_CRIS_PIC_RELOC(X)                   \
   ((X) == BFD_RELOC_CRIS_16_GOT                        \
    || (X) == BFD_RELOC_CRIS_32_GOT             \
index 248e62a1f34b052305b8da4339408792993373ba..43fd89c89494707b0f0746e35a385c83b16caf2a 100644 (file)
@@ -1528,67 +1528,67 @@ md_pcrel_from_section (fixp, sec)
   return fixp->fx_frag->fr_address + fixp->fx_where;
 }
 
-int
-md_apply_fix3 (fixp, valuep, seg)
-     fixS *fixp;
-     valueT *valuep;
+void
+md_apply_fix3 (fixP, valP, seg)
+     fixS *fixP;
+     valueT * valP;
      segT seg ATTRIBUTE_UNUSED;
 {
   char *where;
   unsigned long insn;
-  long value;
+  long value = * (long *) valP;
   int op_type;
   int left = 0;
 
-  if (fixp->fx_addsy == (symbolS *) NULL)
-    {
-      value = *valuep;
-      fixp->fx_done = 1;
-    }
-  else if (fixp->fx_pcrel)
-    value = *valuep;
+  if (fixP->fx_addsy == (symbolS *) NULL)
+    fixP->fx_done = 1;
+
+  else if (fixP->fx_pcrel)
+    ;
+
   else
     {
-      value = fixp->fx_offset;
-      if (fixp->fx_subsy != (symbolS *) NULL)
+      value = fixP->fx_offset;
+
+      if (fixP->fx_subsy != (symbolS *) NULL)
        {
-         if (S_GET_SEGMENT (fixp->fx_subsy) == absolute_section)
-           value -= S_GET_VALUE (fixp->fx_subsy);
+         if (S_GET_SEGMENT (fixP->fx_subsy) == absolute_section)
+           value -= S_GET_VALUE (fixP->fx_subsy);
          else
            {
              /* We don't actually support subtracting a symbol.  */
-             as_bad_where (fixp->fx_file, fixp->fx_line,
+             as_bad_where (fixP->fx_file, fixP->fx_line,
                            _("expression too complex"));
            }
        }
     }
 
-  op_type = fixp->fx_r_type;
+  op_type = fixP->fx_r_type;
   if (op_type & 2048)
     {
       op_type -= 2048;
       if (op_type & 1024)
        {
          op_type -= 1024;
-         fixp->fx_r_type = BFD_RELOC_D10V_10_PCREL_L;
+         fixP->fx_r_type = BFD_RELOC_D10V_10_PCREL_L;
          left = 1;
        }
       else if (op_type & 4096)
        {
          op_type -= 4096;
-         fixp->fx_r_type = BFD_RELOC_D10V_18;
+         fixP->fx_r_type = BFD_RELOC_D10V_18;
        }
       else
-       fixp->fx_r_type =
+       fixP->fx_r_type =
          get_reloc ((struct d10v_operand *) &d10v_operands[op_type]);
     }
 
   /* Fetch the instruction, insert the fully resolved operand
      value, and stuff the instruction back again.  */
-  where = fixp->fx_frag->fr_literal + fixp->fx_where;
+  where = fixP->fx_frag->fr_literal + fixP->fx_where;
   insn = bfd_getb32 ((unsigned char *) where);
 
-  switch (fixp->fx_r_type)
+  switch (fixP->fx_r_type)
     {
     case BFD_RELOC_D10V_10_PCREL_L:
     case BFD_RELOC_D10V_10_PCREL_R:
@@ -1596,7 +1596,7 @@ md_apply_fix3 (fixp, valuep, seg)
     case BFD_RELOC_D10V_18:
       /* Instruction addresses are always right-shifted by 2.  */
       value >>= AT_WORD_RIGHT_SHIFT;
-      if (fixp->fx_size == 2)
+      if (fixP->fx_size == 2)
        bfd_putb16 ((bfd_vma) value, (unsigned char *) where);
       else
        {
@@ -1610,9 +1610,9 @@ md_apply_fix3 (fixp, valuep, seg)
              && value < 4)
            as_fatal
              (_("line %d: rep or repi must include at least 4 instructions"),
-              fixp->fx_line);
+              fixP->fx_line);
          insn =
-           d10v_insert_operand (insn, op_type, (offsetT) value, left, fixp);
+           d10v_insert_operand (insn, op_type, (offsetT) value, left, fixP);
          bfd_putb32 ((bfd_vma) insn, (unsigned char *) where);
        }
       break;
@@ -1625,14 +1625,13 @@ md_apply_fix3 (fixp, valuep, seg)
 
     case BFD_RELOC_VTABLE_INHERIT:
     case BFD_RELOC_VTABLE_ENTRY:
-      fixp->fx_done = 0;
-      return 1;
+      fixP->fx_done = 0;
+      return;
 
     default:
       as_fatal (_("line %d: unknown relocation type: 0x%x"),
-               fixp->fx_line, fixp->fx_r_type);
+               fixP->fx_line, fixP->fx_r_type);
     }
-  return 0;
 }
 
 /* d10v_cleanup() is called after the assembler has finished parsing
index 019ab43ac51fc433f86811cbb59f699a9eaabb60..2bcd2ce2036086788a6bfe39a73e8bf2a8898a88 100644 (file)
@@ -1,5 +1,5 @@
 /* tc-d10v.h -- Header file for tc-d10v.c.
-   Copyright 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
+   Copyright 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
    Written by Martin Hunt, Cygnus Support.
 
    This file is part of GAS, the GNU Assembler.
@@ -34,9 +34,7 @@
 
 #define TARGET_FORMAT "elf32-d10v"
 
-#define MD_APPLY_FIX3
-
-/* call md_pcrel_from_section, not md_pcrel_from */
+/* Call md_pcrel_from_section, not md_pcrel_from.  */
 #define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section(FIXP, SEC)
 long md_pcrel_from_section PARAMS ((fixS *, segT));
 
index 5316b096d216c9db846752fc6f9756147b75b074..c92bcdd891980c114990a3017bd18733519d2f28 100644 (file)
@@ -1833,73 +1833,70 @@ md_pcrel_from_section (fixp, sec)
   return fixp->fx_frag->fr_address + fixp->fx_where;
 }
 
-int
-md_apply_fix3 (fixp, valuep, seg)
-     fixS *fixp;
-     valueT *valuep;
+void
+md_apply_fix3 (fixP, valP, seg)
+     fixS *fixP;
+     valueT * valP;
      segT seg;
 {
   char *where;
   unsigned long insn, insn2;
-  long value;
+  long value = * (long *) valP;
+
+  if (fixP->fx_addsy == (symbolS *) NULL)
+    fixP->fx_done = 1;
+
+  else if (fixP->fx_pcrel)
+    ;
 
-  if (fixp->fx_addsy == (symbolS *) NULL)
-    {
-      value = *valuep;
-      fixp->fx_done = 1;
-    }
-  else if (fixp->fx_pcrel)
-    value = *valuep;
   else
     {
-      value = fixp->fx_offset;
+      value = fixP->fx_offset;
 
-      if (fixp->fx_subsy != (symbolS *) NULL)
+      if (fixP->fx_subsy != (symbolS *) NULL)
        {
-         if (S_GET_SEGMENT (fixp->fx_subsy) == absolute_section)
-           value -= S_GET_VALUE (fixp->fx_subsy);
+         if (S_GET_SEGMENT (fixP->fx_subsy) == absolute_section)
+           value -= S_GET_VALUE (fixP->fx_subsy);
          else
-           {
-             /* We don't actually support subtracting a symbol.  */
-             as_bad_where (fixp->fx_file, fixp->fx_line,
-                           _("expression too complex"));
-           }
+           /* We don't actually support subtracting a symbol.  */
+           as_bad_where (fixP->fx_file, fixP->fx_line,
+                         _("expression too complex"));
        }
     }
 
   /* Fetch the instruction, insert the fully resolved operand
      value, and stuff the instruction back again.  */
-  where = fixp->fx_frag->fr_literal + fixp->fx_where;
+  where = fixP->fx_frag->fr_literal + fixP->fx_where;
   insn = bfd_getb32 ((unsigned char *) where);
 
-  switch (fixp->fx_r_type)
+  switch (fixP->fx_r_type)
     {
     case BFD_RELOC_8:  /* Check for a bad .byte directive.  */
-      if (fixp->fx_addsy != NULL)
+      if (fixP->fx_addsy != NULL)
        as_bad (_("line %d: unable to place address of symbol '%s' into a byte"),
-               fixp->fx_line, S_GET_NAME (fixp->fx_addsy));
+               fixP->fx_line, S_GET_NAME (fixP->fx_addsy));
       else if (((unsigned)value) > 0xff)
        as_bad (_("line %d: unable to place value %x into a byte"),
-               fixp->fx_line, value);
+               fixP->fx_line, value);
       else
        *(unsigned char *) where = value;
       break;
 
     case BFD_RELOC_16:  /* Check for a bad .short directive.  */
-      if (fixp->fx_addsy != NULL)
+      if (fixP->fx_addsy != NULL)
        as_bad (_("line %d: unable to place address of symbol '%s' into a short"),
-               fixp->fx_line, S_GET_NAME (fixp->fx_addsy));
+               fixP->fx_line, S_GET_NAME (fixP->fx_addsy));
       else if (((unsigned)value) > 0xffff)
        as_bad (_("line %d: unable to place value %x into a short"),
-               fixp->fx_line, value);
+               fixP->fx_line, value);
       else
        bfd_putb16 ((bfd_vma) value, (unsigned char *) where);
       break;
 
     case BFD_RELOC_64:  /* Check for a bad .quad directive.  */
-      if (fixp->fx_addsy != NULL)
+      if (fixP->fx_addsy != NULL)
        as_bad (_("line %d: unable to place address of symbol '%s' into a quad"),
-               fixp->fx_line, S_GET_NAME (fixp->fx_addsy));
+               fixP->fx_line, S_GET_NAME (fixP->fx_addsy));
       else
        {
          bfd_putb32 ((bfd_vma) value, (unsigned char *) where);
@@ -1908,58 +1905,58 @@ md_apply_fix3 (fixp, valuep, seg)
       break;
 
     case BFD_RELOC_D30V_6:
-      check_size (value, 6, fixp->fx_file, fixp->fx_line);
+      check_size (value, 6, fixP->fx_file, fixP->fx_line);
       insn |= value & 0x3F;
       bfd_putb32 ((bfd_vma) insn, (unsigned char *) where);
       break;
 
     case BFD_RELOC_D30V_9_PCREL:
-      if (fixp->fx_where & 0x7)
+      if (fixP->fx_where & 0x7)
        {
-         if (fixp->fx_done)
+         if (fixP->fx_done)
            value += 4;
          else
-           fixp->fx_r_type = BFD_RELOC_D30V_9_PCREL_R;
+           fixP->fx_r_type = BFD_RELOC_D30V_9_PCREL_R;
        }
-      check_size (value, 9, fixp->fx_file, fixp->fx_line);
+      check_size (value, 9, fixP->fx_file, fixP->fx_line);
       insn |= ((value >> 3) & 0x3F) << 12;
       bfd_putb32 ((bfd_vma) insn, (unsigned char *) where);
       break;
 
     case BFD_RELOC_D30V_15:
-      check_size (value, 15, fixp->fx_file, fixp->fx_line);
+      check_size (value, 15, fixP->fx_file, fixP->fx_line);
       insn |= (value >> 3) & 0xFFF;
       bfd_putb32 ((bfd_vma) insn, (unsigned char *) where);
       break;
 
     case BFD_RELOC_D30V_15_PCREL:
-      if (fixp->fx_where & 0x7)
+      if (fixP->fx_where & 0x7)
        {
-         if (fixp->fx_done)
+         if (fixP->fx_done)
            value += 4;
          else
-           fixp->fx_r_type = BFD_RELOC_D30V_15_PCREL_R;
+           fixP->fx_r_type = BFD_RELOC_D30V_15_PCREL_R;
        }
-      check_size (value, 15, fixp->fx_file, fixp->fx_line);
+      check_size (value, 15, fixP->fx_file, fixP->fx_line);
       insn |= (value >> 3) & 0xFFF;
       bfd_putb32 ((bfd_vma) insn, (unsigned char *) where);
       break;
 
     case BFD_RELOC_D30V_21:
-      check_size (value, 21, fixp->fx_file, fixp->fx_line);
+      check_size (value, 21, fixP->fx_file, fixP->fx_line);
       insn |= (value >> 3) & 0x3FFFF;
       bfd_putb32 ((bfd_vma) insn, (unsigned char *) where);
       break;
 
     case BFD_RELOC_D30V_21_PCREL:
-      if (fixp->fx_where & 0x7)
+      if (fixP->fx_where & 0x7)
        {
-         if (fixp->fx_done)
+         if (fixP->fx_done)
            value += 4;
          else
-           fixp->fx_r_type = BFD_RELOC_D30V_21_PCREL_R;
+           fixP->fx_r_type = BFD_RELOC_D30V_21_PCREL_R;
        }
-      check_size (value, 21, fixp->fx_file, fixp->fx_line);
+      check_size (value, 21, fixP->fx_file, fixP->fx_line);
       insn |= (value >> 3) & 0x3FFFF;
       bfd_putb32 ((bfd_vma) insn, (unsigned char *) where);
       break;
@@ -1988,10 +1985,8 @@ md_apply_fix3 (fixp, valuep, seg)
 
     default:
       as_bad (_("line %d: unknown relocation type: 0x%x"),
-             fixp->fx_line, fixp->fx_r_type);
+             fixP->fx_line, fixP->fx_r_type);
     }
-
-  return 0;
 }
 
 /* Called after the assembler has finished parsing the input file or
index 29912c510eb4d74aea109b02b1e534350713c248..0b2b25cf9982205f410aad8ba556434062a90d86 100644 (file)
@@ -1,5 +1,5 @@
 /* tc-310v.h -- Header file for tc-d30v.c.
-   Copyright 1997, 1998, 2000 Free Software Foundation, Inc.
+   Copyright 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
    Written by Martin Hunt, Cygnus Support.
 
    This file is part of GAS, the GNU Assembler.
 
 #define md_operand(x)
 
-#define MD_APPLY_FIX3
-
-/* call md_pcrel_from_section, not md_pcrel_from */
-
+/* Call md_pcrel_from_section, not md_pcrel_from.  */
 extern long md_pcrel_from_section PARAMS ((fixS *fixp, segT sec));
 #define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section(FIXP, SEC)
 
index 705fe0865fc1a7ea3d923c8c903bd97eeaeb9135..a9edc601778ce10f471e75348689b86c6656996e 100644 (file)
@@ -1,5 +1,5 @@
 /* tc-fr30.h -- Header file for tc-fr30.c.
-   Copyright 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
@@ -46,7 +46,6 @@ long md_pcrel_from_section PARAMS ((struct fix *, segT));
 /* We don't need to handle .word strangely.  */
 #define WORKING_DOT_WORD
 
-#define MD_APPLY_FIX3
 #define md_apply_fix3 gas_cgen_md_apply_fix3
 
 #define obj_fix_adjustable(fixP) fr30_fix_adjustable (fixP)
@@ -56,8 +55,6 @@ extern boolean fr30_fix_adjustable PARAMS ((struct fix *));
 #define TC_FORCE_RELOCATION(fix) fr30_force_relocation (fix)
 extern int fr30_force_relocation PARAMS ((struct fix *));
 
-#define TC_HANDLES_FX_DONE
-
 #define tc_gen_reloc gas_cgen_tc_gen_reloc
 
 /* Call md_pcrel_from_section(), not md_pcrel_from().  */
index 13be34625c0b77f3f1d8c3b606342d9b0caee0af..b1f6ecbc2ce8827751b0a805341c9db46c3e3405 100644 (file)
@@ -1488,22 +1488,14 @@ md_section_align (seg, size)
 #endif
 
 
-#ifdef BFD_ASSEMBLER
-int
-md_apply_fix (fixP, valp)
-     fixS *fixP;
-     valueT *valp;
-#else
 void
-md_apply_fix (fixP, val)
+md_apply_fix3 (fixP, valP, seg)
      fixS *fixP;
-     long val;
-#endif
+     valueT *valP;
+     segT seg ATTRIBUTE_UNUSED;
 {
   char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
-#ifdef BFD_ASSEMBLER
-  long val = *valp;
-#endif
+  long val = * (long *) valP;
 
   switch (fixP->fx_size)
     {
@@ -1523,6 +1515,9 @@ md_apply_fix (fixP, val)
     default:
       abort ();
     }
+
+  if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
+    fixP->fx_done = 1;
 }
 
 int
index 7cffd839a4175ac4bea20a05920bf88258c0cec8..3157e0b5b4165954490628cd97d803d0db318bd1 100644 (file)
@@ -1372,20 +1372,19 @@ md_section_align (seg, size)
 }
 
 void
-md_apply_fix (fixP, val)
+md_apply_fix3 (fixP, valP, seg)
      fixS *fixP;
-     long val;
+     valueT * valP;
+     segT seg ATTRIBUTE_UNUSED;
 {
+  long val = * (long *) valP;
   char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
 
   if (fixP->fx_r_type == 0)
-    {
-      fixP->fx_r_type = fixP->fx_size == 4 ? R_H8500_IMM32 : R_H8500_IMM16;
-    }
+    fixP->fx_r_type = fixP->fx_size == 4 ? R_H8500_IMM32 : R_H8500_IMM16;
 
   switch (fixP->fx_r_type)
     {
-
     case R_H8500_IMM8:
     case R_H8500_PCREL8:
       *buf++ = val;
@@ -1416,14 +1415,15 @@ md_apply_fix (fixP, val)
       break;
     default:
       abort ();
-
     }
+
+  if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
+    fixP->fx_done = 1;
 }
 
-/*
-called just before address relaxation, return the length
-by which a fragment must grow to reach it's destination
-*/
+/* Called just before address relaxation, return the length
+   by which a fragment must grow to reach it's destination.  */
+
 int
 md_estimate_size_before_relax (fragP, segment_type)
      register fragS *fragP;
index 5bdd25ef323c7fabc1b46e753b161c683f4da188..c5df9ca614178403f6e819d155e8b977e0c0dea8 100644 (file)
@@ -1158,7 +1158,7 @@ static struct default_space_dict pa_def_spaces[] =
       } \
   }
 
-/* Variant of CHECK_FIELD for use in md_apply_fix and other places where
+/* Variant of CHECK_FIELD for use in md_apply_fix3 and other places where
    the current file and line number are not valid.  */
 
 #define CHECK_FIELD_WHERE(FIELD, HIGH, LOW, FILENAME, LINE) \
@@ -4403,16 +4403,20 @@ md_undefined_symbol (name)
 
 /* Apply a fixup to an instruction.  */
 
-int
-md_apply_fix (fixP, valp)
+void
+md_apply_fix3 (fixP, valP, seg)
      fixS *fixP;
      valueT *valp;
+     segT seg ATTRIBUTE_UNUSED;
 {
   unsigned char *buf;
   struct hppa_fix_struct *hppa_fixP;
   offsetT new_val;
   int insn, val, fmt;
 
+  if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
+    fixP->fx_done = 1;
+
   /* SOM uses R_HPPA_ENTRY and R_HPPA_EXIT relocations which can
      never be "applied" (they are just markers).  Likewise for
      R_HPPA_BEGIN_BRTAB and R_HPPA_END_BRTAB.  */
@@ -4422,21 +4426,21 @@ md_apply_fix (fixP, valp)
       || fixP->fx_r_type == R_HPPA_BEGIN_BRTAB
       || fixP->fx_r_type == R_HPPA_END_BRTAB
       || fixP->fx_r_type == R_HPPA_BEGIN_TRY)
-    return 1;
+    return;
 
   /* Disgusting.  We must set fx_offset ourselves -- R_HPPA_END_TRY
      fixups are considered not adjustable, which in turn causes
      adjust_reloc_syms to not set fx_offset.  Ugh.  */
   if (fixP->fx_r_type == R_HPPA_END_TRY)
     {
-      fixP->fx_offset = *valp;
-      return 1;
+      fixP->fx_offset = * valP;
+      return;
     }
 #endif
 #ifdef OBJ_ELF
   if (fixP->fx_r_type == (int) R_PARISC_GNU_VTENTRY
       || fixP->fx_r_type == (int) R_PARISC_GNU_VTINHERIT)
-    return 1;
+    return;
 #endif
 
   /* There should have been an HPPA specific fixup associated
@@ -4447,7 +4451,7 @@ md_apply_fix (fixP, valp)
       as_bad_where (fixP->fx_file, fixP->fx_line,
                    _("no hppa_fixup entry for fixup type 0x%x"),
                    fixP->fx_r_type);
-      return 0;
+      return;
     }
 
   buf = fixP->fx_frag->fr_literal + fixP->fx_where;
@@ -4479,11 +4483,11 @@ md_apply_fix (fixP, valp)
   else if (fmt == 32
           && fixP->fx_addsy != NULL
           && S_GET_SEGMENT (fixP->fx_addsy) != bfd_com_section_ptr)
-    new_val = hppa_field_adjust (*valp - S_GET_VALUE (fixP->fx_addsy),
+    new_val = hppa_field_adjust (* valP - S_GET_VALUE (fixP->fx_addsy),
                                 0, hppa_fixP->fx_r_field);
 #endif
   else
-    new_val = hppa_field_adjust (*valp, 0, hppa_fixP->fx_r_field);
+    new_val = hppa_field_adjust (* valP, 0, hppa_fixP->fx_r_field);
 
   /* Handle pc-relative exceptions from above.  */
   if ((fmt == 12 || fmt == 17 || fmt == 22)
@@ -4492,13 +4496,13 @@ md_apply_fix (fixP, valp)
       && !arg_reloc_stub_needed (symbol_arg_reloc_info (fixP->fx_addsy),
                                 hppa_fixP->fx_arg_reloc)
 #ifdef OBJ_ELF
-      && (*valp - 8 + 8192 < 16384
-         || (fmt == 17 && *valp - 8 + 262144 < 524288)
-         || (fmt == 22 && *valp - 8 + 8388608 < 16777216))
+      && (* valP - 8 + 8192 < 16384
+         || (fmt == 17 && * valP - 8 + 262144 < 524288)
+         || (fmt == 22 && * valP - 8 + 8388608 < 16777216))
 #endif
 #ifdef OBJ_SOM
-      && (*valp - 8 + 262144 < 524288
-         || (fmt == 22 && *valp - 8 + 8388608 < 16777216))
+      && (* valP - 8 + 262144 < 524288
+         || (fmt == 22 && * valP - 8 + 8388608 < 16777216))
 #endif
       && !S_IS_EXTERNAL (fixP->fx_addsy)
       && !S_IS_WEAK (fixP->fx_addsy)
@@ -4506,7 +4510,7 @@ md_apply_fix (fixP, valp)
       && !(fixP->fx_subsy
           && S_GET_SEGMENT (fixP->fx_subsy) != hppa_fixP->segment))
     {
-      new_val = hppa_field_adjust (*valp, 0, hppa_fixP->fx_r_field);
+      new_val = hppa_field_adjust (* valP, 0, hppa_fixP->fx_r_field);
     }
 
   switch (fmt)
@@ -4566,7 +4570,7 @@ md_apply_fix (fixP, valp)
       /* Handle some of the opcodes with the 'W' operand type.  */
     case 17:
       {
-       offsetT distance = *valp;
+       offsetT distance = * valP;
 
        /* If this is an absolute branch (ie no link) with an out of
           range target, then we want to complain.  */
@@ -4585,7 +4589,7 @@ md_apply_fix (fixP, valp)
 
     case 22:
       {
-       offsetT distance = *valp;
+       offsetT distance = * valP;
 
        /* If this is an absolute branch (ie no link) with an out of
           range target, then we want to complain.  */
@@ -4624,12 +4628,11 @@ md_apply_fix (fixP, valp)
     default:
       as_bad_where (fixP->fx_file, fixP->fx_line,
                    _("Unknown relocation encountered in md_apply_fix."));
-      return 0;
+      return;
     }
 
   /* Insert the relocation.  */
   bfd_put_32 (stdoutput, insn, buf);
-  return 1;
 }
 
 /* Exactly what point is a PC-relative offset relative TO?
index de092b2b2990c7d6a81f51b587a7f3855b8917d3..87d8af8d829e570bc610ee2bc1e475c93ada6d52 100644 (file)
@@ -2321,7 +2321,7 @@ md_assemble (str)
      BFD_RELOC_UNUSED plus the operand index.  This lets us easily
      handle fixups for any operand type, although that is admittedly
      not a very exciting feature.  We pick a BFD reloc type in
-     md_apply_fix.  */
+     md_apply_fix3.  */
   for (i = 0; i < fc; i++)
     {
       const struct i370_operand *operand;
@@ -2713,24 +2713,23 @@ md_pcrel_from_section (fixp, sec)
    going on here ...
 */
 
-int
-md_apply_fix3 (fixp, valuep, seg)
-     fixS *fixp;
-     valueT *valuep;
+void
+md_apply_fix3 (fixP, valP, seg)
+     fixS *fixP;
+     valueT * valP;
      segT seg;
 {
-  valueT value;
+  valueT value = * valP;
 
-  value = *valuep;
-  if (fixp->fx_addsy != NULL)
+  if (fixP->fx_addsy != NULL)
     {
       /* Notes:
-         Branches to labels will come in here with fixp->fx_pcrel set to 1
-         and fixp->fx_subsy not null, and holding the value of the base
+         Branches to labels will come in here with fixP->fx_pcrel set to 1
+         and fixP->fx_subsy not null, and holding the value of the base
          (i.e. the value of the .using). These we want to ignore.
 
          'Strong' and 'weak' symbols will come in here with
-         fixp->fx_pcrel==0, fixp->fx_addsy defined, and
+         fixP->fx_pcrel==0, fixP->fx_addsy defined, and
          *valuep holding the value of the symbol.
 
          'Strong' symbols will have S_GET_VALUE(fx_addsy) equal to zero,
@@ -2748,70 +2747,69 @@ md_apply_fix3 (fixp, valuep, seg)
          subsy will hold the base address (i.e. the .using address).
       */
 
-      if (fixp->fx_addsy->sy_used_in_reloc
-          && S_GET_SEGMENT (fixp->fx_addsy) != absolute_section
-          && S_GET_SEGMENT (fixp->fx_addsy) != undefined_section
-          && ! bfd_is_com_section (S_GET_SEGMENT (fixp->fx_addsy)))
-        value -= S_GET_VALUE (fixp->fx_addsy);
+      if (fixP->fx_addsy->sy_used_in_reloc
+          && S_GET_SEGMENT (fixP->fx_addsy) != absolute_section
+          && S_GET_SEGMENT (fixP->fx_addsy) != undefined_section
+          && ! bfd_is_com_section (S_GET_SEGMENT (fixP->fx_addsy)))
+        value -= S_GET_VALUE (fixP->fx_addsy);
 
 #ifdef DEBUG
       printf ("\nmd_apply_fix3: symbol %s at 0x%x (%s:%d) val=0x%x addend=0x%x\n",
-             S_GET_NAME (fixp->fx_addsy),
-             fixp->fx_frag->fr_address + fixp->fx_where,
-             fixp->fx_file, fixp->fx_line,
-             S_GET_VALUE (fixp->fx_addsy), value);
+             S_GET_NAME (fixP->fx_addsy),
+             fixP->fx_frag->fr_address + fixP->fx_where,
+             fixP->fx_file, fixP->fx_line,
+             S_GET_VALUE (fixP->fx_addsy), value);
 #endif
     }
   else
     {
-      fixp->fx_done = 1;
-      return 1;
+      fixP->fx_done = 1;
+      return;
     }
 
   /* Apply fixups to operands.  Note that there should be no relocations
      for any operands, since no instruction ever takes an operand
      that requires reloc.  */
-  if ((int) fixp->fx_r_type >= (int) BFD_RELOC_UNUSED)
+  if ((int) fixP->fx_r_type >= (int) BFD_RELOC_UNUSED)
     {
       int opindex;
       const struct i370_operand *operand;
       char *where;
       i370_insn_t insn;
 
-      opindex = (int) fixp->fx_r_type - (int) BFD_RELOC_UNUSED;
+      opindex = (int) fixP->fx_r_type - (int) BFD_RELOC_UNUSED;
 
       operand = &i370_operands[opindex];
 
 #ifdef DEBUG
       printf ("\nmd_apply_fix3: fixup operand %s at 0x%x in %s:%d addend=0x%x\n",
              operand->name,
-             fixp->fx_frag->fr_address + fixp->fx_where,
-             fixp->fx_file, fixp->fx_line,
+             fixP->fx_frag->fr_address + fixP->fx_where,
+             fixP->fx_file, fixP->fx_line,
              value);
 #endif
       /* Fetch the instruction, insert the fully resolved operand
          value, and stuff the instruction back again.
          fisxp->fx_size is the length of the instruction.  */
-      where = fixp->fx_frag->fr_literal + fixp->fx_where;
+      where = fixP->fx_frag->fr_literal + fixP->fx_where;
       insn.i[0] = bfd_getb32 ((unsigned char *) where);
-      if (6 <= fixp->fx_size)
-       {    /* deal with 48-bit insn's */
-         insn.i[1] = bfd_getb32 (((unsigned char *) where)+4);
-       }
+
+      if (6 <= fixP->fx_size)
+       /* Deal with 48-bit insn's.  */
+       insn.i[1] = bfd_getb32 (((unsigned char *) where)+4);
+
       insn = i370_insert_operand (insn, operand, (offsetT) value);
       bfd_putb32 ((bfd_vma) insn.i[0], (unsigned char *) where);
-      if (6 <= fixp->fx_size)
-       {   /* deal with 48-bit insn's */
-         bfd_putb32 ((bfd_vma) insn.i[1], (((unsigned char *) where)+4));
-       }
 
-      /* we are done, right? right !! */
-      fixp->fx_done = 1;
-      if (fixp->fx_done)
-        {
-          /* Nothing else to do here.  */
-          return 1;
-        }
+      if (6 <= fixP->fx_size)
+       /* Deal with 48-bit insn's.  */
+       bfd_putb32 ((bfd_vma) insn.i[1], (((unsigned char *) where)+4));
+
+      /* We are done, right? right !!  */
+      fixP->fx_done = 1;
+      if (fixP->fx_done)
+       /* Nothing else to do here.  */
+       return;
 
       /* Determine a BFD reloc value based on the operand information.
         We are only prepared to turn a few of the operands into
@@ -2823,7 +2821,7 @@ md_apply_fix3 (fixp, valuep, seg)
       if ((operand->flags & I370_OPERAND_RELATIVE) != 0
           && operand->bits == 12
           && operand->shift == 0)
-        fixp->fx_r_type = BFD_RELOC_I370_D12;
+        fixP->fx_r_type = BFD_RELOC_I370_D12;
       else
 #endif
         {
@@ -2832,61 +2830,60 @@ md_apply_fix3 (fixp, valuep, seg)
 
           /* Use expr_symbol_where to see if this is an expression
              symbol.  */
-          if (expr_symbol_where (fixp->fx_addsy, &sfile, &sline))
-            as_bad_where (fixp->fx_file, fixp->fx_line,
+          if (expr_symbol_where (fixP->fx_addsy, &sfile, &sline))
+            as_bad_where (fixP->fx_file, fixP->fx_line,
                          "unresolved expression that must be resolved");
           else
-            as_bad_where (fixp->fx_file, fixp->fx_line,
+            as_bad_where (fixP->fx_file, fixP->fx_line,
                          "unsupported relocation type");
-          fixp->fx_done = 1;
-          return 1;
+          fixP->fx_done = 1;
+          return;
         }
     }
   else
     {
       /* We branch to here if the fixup is not to a symbol that
-       * appears in an instruction operand, but is rather some
-       * declared storage.
-       */
+         appears in an instruction operand, but is rather some
+         declared storage.  */
 #ifdef OBJ_ELF
-      i370_elf_validate_fix (fixp, seg);
+      i370_elf_validate_fix (fixP, seg);
 #endif
 #ifdef DEBUG
       printf ("md_apply_fix3: reloc case %d in segment  %s %s:%d\n",
-             fixp->fx_r_type, segment_name (seg), fixp->fx_file, fixp->fx_line);
+             fixP->fx_r_type, segment_name (seg), fixP->fx_file, fixP->fx_line);
       printf ("\tcurrent fixup value is 0x%x \n", value);
 #endif
-      switch (fixp->fx_r_type)
+      switch (fixP->fx_r_type)
         {
         case BFD_RELOC_32:
         case BFD_RELOC_CTOR:
-          if (fixp->fx_pcrel)
-            fixp->fx_r_type = BFD_RELOC_32_PCREL;
-         /* fall through */
+          if (fixP->fx_pcrel)
+            fixP->fx_r_type = BFD_RELOC_32_PCREL;
+         /* Fall through.  */
 
         case BFD_RELOC_RVA:
         case BFD_RELOC_32_PCREL:
         case BFD_RELOC_32_BASEREL:
 #ifdef DEBUG
           printf ("\t32 bit relocation at 0x%x\n",
-                 fixp->fx_frag->fr_address + fixp->fx_where);
+                 fixP->fx_frag->fr_address + fixP->fx_where);
 #endif
-          md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
+          md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where,
                              value, 4);
           break;
 
         case BFD_RELOC_LO16:
         case BFD_RELOC_16:
-          if (fixp->fx_pcrel)
-            as_bad_where (fixp->fx_file, fixp->fx_line,
+          if (fixP->fx_pcrel)
+            as_bad_where (fixP->fx_file, fixP->fx_line,
                          "cannot emit PC relative %s relocation%s%s",
-                         bfd_get_reloc_code_name (fixp->fx_r_type),
-                         fixp->fx_addsy != NULL ? " against " : "",
-                         (fixp->fx_addsy != NULL
-                          ? S_GET_NAME (fixp->fx_addsy)
+                         bfd_get_reloc_code_name (fixP->fx_r_type),
+                         fixP->fx_addsy != NULL ? " against " : "",
+                         (fixP->fx_addsy != NULL
+                          ? S_GET_NAME (fixP->fx_addsy)
                           : ""));
 
-          md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
+          md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where,
                              value, 2);
           break;
 
@@ -2894,37 +2891,35 @@ md_apply_fix3 (fixp, valuep, seg)
              lis %r3,(L1-L2)@ha
              where L1 and L2 are defined later.  */
         case BFD_RELOC_HI16:
-          if (fixp->fx_pcrel)
+          if (fixP->fx_pcrel)
             abort ();
-          md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
+          md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where,
                              value >> 16, 2);
           break;
         case BFD_RELOC_HI16_S:
-          if (fixp->fx_pcrel)
+          if (fixP->fx_pcrel)
             abort ();
-          md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
+          md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where,
                              (value + 0x8000) >> 16, 2);
           break;
 
         case BFD_RELOC_8:
-          if (fixp->fx_pcrel)
+          if (fixP->fx_pcrel)
             abort ();
 
-          md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
+          md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where,
                              value, 1);
           break;
 
         default:
           fprintf (stderr,
-                 "Gas failure, reloc value %d\n", fixp->fx_r_type);
+                 "Gas failure, reloc value %d\n", fixP->fx_r_type);
           fflush (stderr);
           abort ();
         }
     }
 
-  fixp->fx_addnumber = value;
-
-  return 1;
+  fixP->fx_addnumber = value;
 }
 
 /* Generate a reloc for a fixup.  */
index 5a286608d65a3fdca7c3e19fb0319a771c612f03..a1da508033dab4ac0d73c781a5690a24f2f6c81f 100644 (file)
@@ -1,5 +1,5 @@
 /* tc-i370.h -- Header file for tc-i370.c.
-   Copyright 1994, 1995, 1996, 1997, 1998, 2000
+   Copyright 1994, 1995, 1996, 1997, 1998, 2000, 2001
    Free Software Foundation, Inc.
    Written by Ian Lance Taylor, Cygnus Support.
 
@@ -60,45 +60,7 @@ extern int target_big_endian;
 /* We don't need to handle .word strangely.  */
 #define WORKING_DOT_WORD
 
-/* We set the fx_done field appropriately in md_apply_fix.  */
-#define TC_HANDLES_FX_DONE
-\f
-
-#ifdef OBJ_ELF
-
-/* Branch prediction relocations must force relocation.  */
-#define TC_FORCE_RELOCATION_SECTION(FIXP,SEC) 1
-
-/* Support for SHF_EXCLUDE and SHT_ORDERED */
-extern int i370_section_letter PARAMS ((int, char **));
-extern int i370_section_type PARAMS ((char *, size_t));
-extern int i370_section_word PARAMS ((char *, size_t));
-extern int i370_section_flags PARAMS ((int, int, int));
-
-#define md_elf_section_letter(LETTER, PTR_MSG) i370_section_letter (LETTER, PTR_MSG)
-#define md_elf_section_type(STR, LEN)          i370_section_type (STR, LEN)
-#define md_elf_section_word(STR, LEN)          i370_section_word (STR, LEN)
-#define md_elf_section_flags(FLAGS, ATTR, TYPE)        i370_section_flags (FLAGS, ATTR, TYPE)
-
-#define tc_comment_chars i370_comment_chars
-extern const char *i370_comment_chars;
-
-/* We must never ever try to resolve references to externally visible
-   symbols in the assembler, because the .o file might go into a shared
-   library, and some other shared library might override that symbol.  */
-#define TC_RELOC_RTSYM_LOC_FIXUP(FIX)  \
-  ((FIX)->fx_addsy == NULL \
-   || (! S_IS_EXTERNAL ((FIX)->fx_addsy) \
-       && ! S_IS_WEAK ((FIX)->fx_addsy) \
-       && S_IS_DEFINED ((FIX)->fx_addsy) \
-       && ! S_IS_COMMON ((FIX)->fx_addsy)))
-
-#endif /* OBJ_ELF */
-
-/* call md_apply_fix3 with segment instead of md_apply_fix */
-#define MD_APPLY_FIX3
-
-/* call md_pcrel_from_section, not md_pcrel_from */
+/* Call md_pcrel_from_section, not md_pcrel_from.  */
 #define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section(FIXP, SEC)
 extern long md_pcrel_from_section PARAMS ((struct fix *, segT));
 
index b8585d5a2cae3ad3b897a8eab6f312c861b3f375..c81f87027c90eb81a183709e6225bc020fdb302a 100644 (file)
@@ -4211,19 +4211,17 @@ md_create_long_jump (ptr, from_addr, to_addr, frag, to_symbol)
    the same (little-endian) format, so we don't need to care about which
    we are handling.  */
 
-int
-md_apply_fix3 (fixP, valp, seg)
+void
+md_apply_fix3 (fixP, valP, seg)
      /* The fix we're to put in.  */
      fixS *fixP;
-
      /* Pointer to the value of the bits.  */
-     valueT *valp;
-
+     valueT * valP;
      /* Segment fix is from.  */
      segT seg ATTRIBUTE_UNUSED;
 {
-  register char *p = fixP->fx_where + fixP->fx_frag->fr_literal;
-  valueT value = *valp;
+  char *p = fixP->fx_where + fixP->fx_frag->fr_literal;
+  valueT value = * valP;
 
 #if defined (BFD_ASSEMBLER) && !defined (TE_Mach)
   if (fixP->fx_pcrel)
@@ -4357,30 +4355,26 @@ md_apply_fix3 (fixP, valp, seg)
       case BFD_RELOC_VTABLE_INHERIT:
       case BFD_RELOC_VTABLE_ENTRY:
        fixP->fx_done = 0;
-       return 1;
+       return;
 
       default:
        break;
       }
 #endif /* defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)  */
-  *valp = value;
+  * valP = value;
 #endif /* defined (BFD_ASSEMBLER) && !defined (TE_Mach)  */
 
-#ifndef BFD_ASSEMBLER
-  md_number_to_chars (p, value, fixP->fx_size);
-#else
   /* Are we finished with this relocation now?  */
-  if (fixP->fx_addsy == 0 && fixP->fx_pcrel == 0)
+  if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
     fixP->fx_done = 1;
+#ifdef BFD_ASSEMBLER
   else if (use_rela_relocations)
     {
       fixP->fx_no_overflow = 1;
       value = 0;
     }
-  md_number_to_chars (p, value, fixP->fx_size);
 #endif
-
-  return 1;
+  md_number_to_chars (p, value, fixP->fx_size);
 }
 \f
 #define MAX_LITTLENUMS 6
index aff5980d5dd237b0093ce8e9f6f065e2326cf925..d5ba0439b0b7fc8f2cb9955252cb2fe9b038e519 100644 (file)
@@ -531,9 +531,6 @@ if (fragP->fr_type == rs_align_code)                                        \
                           - fragP->fr_address                          \
                           - fragP->fr_fix));
 
-/* call md_apply_fix3 with segment instead of md_apply_fix */
-#define MD_APPLY_FIX3
-
 void i386_print_statistics PARAMS ((FILE *));
 #define tc_print_statistics i386_print_statistics
 
index 5f29b20c95a371eb3a5c3e5f0a2c9508c11f193e..9aa44574da9c1d8ed14558ad6bebd9416d88b93a 100644 (file)
@@ -1228,15 +1228,15 @@ obtain_reloc_for_imm16 (fix, val)
 /* Attempt to simplify or eliminate a fixup. To indicate that a fixup
    has been eliminated, set fix->fx_done. If fix->fx_addsy is non-NULL,
    we will have to generate a reloc entry.  */
-int
-md_apply_fix3 (fix, valuep, seg)
-     fixS *fix;
-     valueT *valuep;
+
+void
+md_apply_fix3 (fix, valP, seg)
+     fixS * fix;
+     valueT * valP;
      segT seg ATTRIBUTE_UNUSED;
 {
-
   char *buf;
-  long val = (long) (*valuep);
+  long val = * (long *) valP
   unsigned long insn;
   valueT fup;
 
@@ -1280,9 +1280,8 @@ md_apply_fix3 (fix, valuep, seg)
        }
     }
   else if (fup & OP_IMM_U16)
-    {
-      abort ();
-    }
+    abort ();
+
   else if (fup & OP_IMM_SPLIT16)
     {
       fix->fx_r_type = obtain_reloc_for_imm16 (fix, &val);
@@ -1367,9 +1366,6 @@ md_apply_fix3 (fix, valuep, seg)
          fix->fx_done = 1;
        }
     }
-
-  /* Return value ignored.  */
-  return 0;
 }
 
 /* Generate a machine dependent reloc from a fixup.  */
index c9b67717a1025c661b1074be7de100b5a7cee968..c5247297e27d40a6fbbe9555facd162eafd6e445 100644 (file)
@@ -1,5 +1,5 @@
 /* tc-i860.h -- Header file for the i860.
-   Copyright 1991, 1992, 1995, 1998, 2000
+   Copyright 1991, 1992, 1995, 1998, 2000, 2001
    Free Software Foundation, Inc.
 
    Brought back from the dead and completely reworked
@@ -71,8 +71,6 @@ extern int target_big_endian;
 #endif
 
 #define WORKING_DOT_WORD
-#define MD_APPLY_FIX3
-#define TC_HANDLES_FX_DONE
 #define DIFF_EXPR_OK
 
 /* Permit temporary numeric labels.  */
index 279c2143c024d1053265fb7609c18d74f0af44c5..568b8ab56bb2e7a35ad607991a8ab413a12fa837 100644 (file)
@@ -2806,21 +2806,13 @@ md_pcrel_from (fixP)
   return fixP->fx_where + fixP->fx_frag->fr_address;
 }
 
-#ifdef BFD_ASSEMBLER
-int
-md_apply_fix (fixP, valp)
-     fixS *fixP;
-     valueT *valp;
-#else
 void
-md_apply_fix (fixP, val)
+md_apply_fix3 (fixP, valP, seg)
      fixS *fixP;
-     long val;
-#endif
+     valueT * valP;
+     segT seg ATTRIBUTE_UNUSED;
 {
-#ifdef BFD_ASSEMBLER
-  long val = *valp;
-#endif
+  long val = * (long *) valP;
   char *place = fixP->fx_where + fixP->fx_frag->fr_literal;
 
   if (!fixP->fx_bit_fixP)
@@ -2839,9 +2831,8 @@ md_apply_fix (fixP, val)
   else
     md_number_to_field (place, val, fixP->fx_bit_fixP);
 
-#ifdef BFD_ASSEMBLER
-  return 0;
-#endif
+  if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
+    fixP->fx_done = 1;
 }
 
 #if defined(OBJ_AOUT) | defined(OBJ_BOUT)
index 6930d6f36a84168c00211b1f897268c858e38c01..d2523cf7db4ce8d323bdeee93ca9f9e6eec5c7cd 100644 (file)
@@ -9879,7 +9879,7 @@ ia64_cons_fix_new (f, where, nbytes, exp)
   fix = fix_new_exp (f, where, nbytes, exp, 0, code);
   /* We need to store the byte order in effect in case we're going
      to fix an 8 or 16 bit relocation (for which there no real
-     relocs available).  See md_apply_fix().  */
+     relocs available).  See md_apply_fix3().  */
   fix->tc_fix_data.bigendian = target_big_endian;
 }
 
@@ -10102,14 +10102,15 @@ fix_insn (fix, odesc, value)
 
    If fixp->fx_addsy is non-NULL, we'll have to generate a reloc entry
    (if possible).  */
-int
-md_apply_fix3 (fix, valuep, seg)
+
+void
+md_apply_fix3 (fix, valP, seg)
      fixS *fix;
-     valueT *valuep;
+     valueT * valP;
      segT seg ATTRIBUTE_UNUSED;
 {
   char *fixpos;
-  valueT value = *valuep;
+  valueT value = * valP;
   int adjust = 0;
 
   fixpos = fix->fx_frag->fr_literal + fix->fx_where;
@@ -10152,7 +10153,7 @@ md_apply_fix3 (fix, valuep, seg)
                        "%s must have a constant value",
                        elf64_ia64_operands[fix->tc_fix_data.opnd].desc);
          fix->fx_done = 1;
-         return 1;
+         return;
        }
 
       /* ??? This is a hack copied from tc-i386.c to make PCREL relocs
@@ -10167,15 +10168,12 @@ md_apply_fix3 (fix, valuep, seg)
       else
        number_to_chars_littleendian (fixpos, value, fix->fx_size);
       fix->fx_done = 1;
-      return 1;
     }
   else
     {
       fix_insn (fix, elf64_ia64_operands + fix->tc_fix_data.opnd, value);
       fix->fx_done = 1;
-      return 1;
     }
-  return 1;
 }
 
 /* Generate the BFD reloc to be stuck in the object file from the
index d87b205846863d13093bf84e62871dc69dc83776..7921abf0e5febcc5de3119597a58503fcd8cc734 100644 (file)
@@ -46,7 +46,6 @@ extern const char *ia64_target_format PARAMS ((void));
 
 #define TARGET_ARCH                    bfd_arch_ia64
 #define DOUBLESLASH_LINE_COMMENTS      /* allow //-style comments */
-#define TC_HANDLES_FX_DONE
 
 #define NEED_LITERAL_POOL              /* need gp literal pool */
 #define RELOC_REQUIRES_SYMBOL
@@ -118,9 +117,6 @@ extern void ia64_handle_align PARAMS ((fragS *f));
 
 #define MAX_MEM_FOR_RS_ALIGN_CODE  (15 + 16)
 
-/* Call md_apply_fix3 with segment instead of md_apply_fix.  */
-#define MD_APPLY_FIX3
-
 #define WORKING_DOT_WORD       /* don't do broken word processing for now */
 
 #define ELF_TC_SPECIAL_SECTIONS                                                   \
index 6ee3a2e8dbf658e83b3b558ad87b6e41ef02e3cc..7a810d44384f61537e520059f94d8d66cb6982bf 100644 (file)
@@ -1710,7 +1710,7 @@ m32r_cgen_record_fixup_exp (frag, where, insn, length, operand, opinfo, exp)
 #define FX_OPINFO_R_TYPE(f) ((f)->fx_cgen.opinfo)
 
 /* Sort any unmatched HI16 relocs so that they immediately precede
-   the corresponding LO16 reloc.  This is called before md_apply_fix and
+   the corresponding LO16 reloc.  This is called before md_apply_fix3 and
    tc_gen_reloc.  */
 
 void
index 2eaee0e0fb949c98cce45f725228d7827d032bc4..34fda5776e23e9d56c8cb6808f461772ea1e19d3 100644 (file)
@@ -68,7 +68,6 @@ extern void m32r_handle_align PARAMS ((fragS *));
 
 #define MAX_MEM_FOR_RS_ALIGN_CODE  (1 + 2 + 4)
 
-#define MD_APPLY_FIX3
 #define md_apply_fix3 gas_cgen_md_apply_fix3
 
 #define obj_fix_adjustable(fixP) m32r_fix_adjustable(fixP)
@@ -77,8 +76,6 @@ extern void m32r_handle_align PARAMS ((fragS *));
    HI16 relocs and queue them up for later sorting.  */
 #define md_cgen_record_fixup_exp m32r_cgen_record_fixup_exp
 
-#define TC_HANDLES_FX_DONE
-
 #define tc_gen_reloc gas_cgen_tc_gen_reloc
 
 #define tc_frob_file() m32r_frob_file ()
index 0c7ccabac52d832cc1e1a8aff46700e353ab636a..d4358afffd29ad9a2cb1f056b089067fa09229bc 100644 (file)
@@ -2729,43 +2729,38 @@ md_estimate_size_before_relax (fragP, segment)
   return md_relax_table[fragP->fr_subtype].rlx_length;
 }
 
-int
-md_apply_fix (fixp, valuep)
-     fixS *fixp;
-     valueT *valuep;
+void
+md_apply_fix3 (fixP, valP, seg)
+     fixS *fixP;
+     valueT *valP;
+     segT seg ATTRIBUTE_UNUSED;
 {
   char *where;
-  long value;
+  long value = * valP;
   int op_type;
 
-  if (fixp->fx_addsy == (symbolS *) NULL)
-    {
-      value = *valuep;
-      fixp->fx_done = 1;
-    }
-  else if (fixp->fx_pcrel)
-    {
-      value = *valuep;
-    }
+  if (fixP->fx_addsy == (symbolS *) NULL)
+    fixP->fx_done = 1;
+
+  else if (fixP->fx_pcrel)
+    ;
+
   else
     {
-      value = fixp->fx_offset;
-      if (fixp->fx_subsy != (symbolS *) NULL)
+      value = fixP->fx_offset;
+
+      if (fixP->fx_subsy != (symbolS *) NULL)
        {
-         if (S_GET_SEGMENT (fixp->fx_subsy) == absolute_section)
-           {
-             value -= S_GET_VALUE (fixp->fx_subsy);
-           }
+         if (S_GET_SEGMENT (fixP->fx_subsy) == absolute_section)
+           value -= S_GET_VALUE (fixP->fx_subsy);
          else
-           {
-             /* We don't actually support subtracting a symbol.  */
-             as_bad_where (fixp->fx_file, fixp->fx_line,
-                           _("Expression too complex."));
-           }
+           /* We don't actually support subtracting a symbol.  */
+           as_bad_where (fixP->fx_file, fixP->fx_line,
+                         _("Expression too complex."));
        }
     }
 
-  op_type = fixp->fx_r_type;
+  op_type = fixP->fx_r_type;
 
   /* Patch the instruction with the resolved operand.  Elf relocation
      info will also be generated to take care of linker/loader fixups.
@@ -2776,9 +2771,9 @@ md_apply_fix (fixp, valuep)
      relax table, bcc, bra, bsr transformations)
 
      The BFD_RELOC_32 is necessary for the support of --gstabs.  */
-  where = fixp->fx_frag->fr_literal + fixp->fx_where;
+  where = fixP->fx_frag->fr_literal + fixP->fx_where;
 
-  switch (fixp->fx_r_type)
+  switch (fixP->fx_r_type)
     {
     case BFD_RELOC_32:
       bfd_putb32 ((bfd_vma) value, (unsigned char *) where);
@@ -2788,7 +2783,7 @@ md_apply_fix (fixp, valuep)
     case BFD_RELOC_16_PCREL:
       bfd_putb16 ((bfd_vma) value, (unsigned char *) where);
       if (value < -65537 || value > 65535)
-       as_bad_where (fixp->fx_file, fixp->fx_line,
+       as_bad_where (fixP->fx_file, fixP->fx_line,
                      _("Value out of 16-bit range."));
       break;
 
@@ -2811,14 +2806,14 @@ md_apply_fix (fixp, valuep)
       ((bfd_byte *) where)[0] = (bfd_byte) value;
 
       if (value < -128 || value > 127)
-       as_bad_where (fixp->fx_file, fixp->fx_line,
+       as_bad_where (fixP->fx_file, fixP->fx_line,
                      _("Value %ld too large for 8-bit PC-relative branch."),
                      value);
       break;
 
     case BFD_RELOC_M68HC11_3B:
       if (value <= 0 || value > 8)
-       as_bad_where (fixp->fx_file, fixp->fx_line,
+       as_bad_where (fixP->fx_file, fixP->fx_line,
                      _("Auto increment/decrement offset '%ld' is out of range."),
                      value);
       if (where[0] & 0x8)
@@ -2831,8 +2826,6 @@ md_apply_fix (fixp, valuep)
 
     default:
       as_fatal (_("Line %d: unknown relocation type: 0x%x."),
-               fixp->fx_line, fixp->fx_r_type);
+               fixP->fx_line, fixP->fx_r_type);
     }
-
-  return 0;
 }
index 6a7f47dd37f700c5586b86c7b4726cd9ed32a486..ad8c3d77f48ef5a73a08894e1e3fa6fd0472e17c 100644 (file)
@@ -348,7 +348,6 @@ static void s_mri_repeat PARAMS ((int));
 static void s_mri_until PARAMS ((int));
 static void s_mri_while PARAMS ((int));
 static void s_mri_endw PARAMS ((int));
-static void md_apply_fix_2 PARAMS ((fixS *, offsetT));
 static void md_convert_frag_1 PARAMS ((fragS *));
 
 static int current_architecture;
@@ -3779,11 +3778,10 @@ md_begin ()
      my lord ghod hath spoken, so we do it this way.  Excuse the ugly var
      names.  */
 
-  register const struct m68k_opcode *ins;
-  register struct m68k_incant *hack, *slak;
-  register const char *retval = 0;     /* empty string, or error msg text */
-  register int i;
-  register char c;
+  const struct m68k_opcode *ins;
+  struct m68k_incant *hack, *slak;
+  const char *retval = 0;      /* empty string, or error msg text */
+  int i;
 
   if (flag_mri)
     {
@@ -4223,11 +4221,13 @@ md_number_to_chars (buf, val, n)
   number_to_chars_bigendian (buf, val, n);
 }
 
-static void
-md_apply_fix_2 (fixP, val)
+void
+md_apply_fix3 (fixP, valP, seg)
      fixS *fixP;
-     offsetT val;
+     valueT * valP;
+     segT seg ATTRIBUTE_UNUSED;
 {
+  valueT val = * valP;
   addressT upper_limit;
   offsetT lower_limit;
 
@@ -4239,6 +4239,9 @@ md_apply_fix_2 (fixP, val)
 
   val = ((val & 0xffffffff) ^ 0x80000000) - 0x80000000;
 
+  if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
+    fixP->fx_done = 1;
+
 #ifdef OBJ_ELF
   if (fixP->fx_addsy)
     {
@@ -4261,8 +4264,8 @@ md_apply_fix_2 (fixP, val)
 
   switch (fixP->fx_size)
     {
-      /* The cast to offsetT below are necessary to make code correct for
-        machines where ints are smaller than offsetT */
+      /* The cast to offsetT below are necessary to make code
+        correct for machines where ints are smaller than offsetT.  */
     case 1:
       *buf++ = val;
       upper_limit = 0x7f;
@@ -4322,24 +4325,6 @@ md_apply_fix_2 (fixP, val)
     as_bad_where (fixP->fx_file, fixP->fx_line, _("invalid byte branch offset"));
 }
 
-#ifdef BFD_ASSEMBLER
-int
-md_apply_fix (fixP, valp)
-     fixS *fixP;
-     valueT *valp;
-{
-  md_apply_fix_2 (fixP, (addressT) *valp);
-  return 1;
-}
-#else
-void md_apply_fix (fixP, val)
-     fixS *fixP;
-     long val;
-{
-  md_apply_fix_2 (fixP, (addressT) val);
-}
-#endif
-
 /* *fragP has been relaxed to its final size, and now needs to have
    the bytes inside it modified to conform to the new size  There is UGLY
    MAGIC here. ..
index bd3ddbad59edd86389a3d4874160a264a08fbb99..2fde71d8f3cde1cd0debf63fa3a51a0f192e09ea 100644 (file)
@@ -1117,31 +1117,33 @@ tc_coff_fix2rtype (fixp)
    file itself.  */
 
 void
-md_apply_fix (fixp, val)
-     fixS *fixp;
-     long val;
+md_apply_fix3 (fixP, valP, seg)
+     fixS *fixP;
+     valueT * valP;
+     segT seg ATTRIBUTE_UNUSED;
 {
+  long value = * (long *) valP;
   char *buf;
 
-  buf = fixp->fx_frag->fr_literal + fixp->fx_where;
-  fixp->fx_offset = 0;
+  buf = fixP->fx_frag->fr_literal + fixP->fx_where;
+  fixP->fx_offset = 0;
 
-  switch (fixp->fx_r_type)
+  switch (fixP->fx_r_type)
     {
     case RELOC_IW16:
-      fixp->fx_offset = val >> 16;
+      fixP->fx_offset = val >> 16;
       buf[2] = val >> 8;
       buf[3] = val;
       break;
 
     case RELOC_LO16:
-      fixp->fx_offset = val >> 16;
+      fixP->fx_offset = val >> 16;
       buf[0] = val >> 8;
       buf[1] = val;
       break;
 
     case RELOC_HI16:
-      fixp->fx_offset = val >> 16;
+      fixP->fx_offset = val >> 16;
       buf[0] = val >> 8;
       buf[1] = val;
       break;
@@ -1168,6 +1170,9 @@ md_apply_fix (fixp, val)
     default:
       abort ();
     }
+
+  if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
+    fixP->fx_done = 1;
 }
 
 /* Where a PC relative offset is calculated from.  On the m88k they
index 7a8a5f4344b3dabbe4d170fa4739818c3e41fedd..786ae8b591f63b8251cb2bb018b2c1f67b895d2c 100644 (file)
@@ -2088,17 +2088,18 @@ md_convert_frag (abfd, sec, fragP)
 
 /* Applies the desired value to the specified location.
    Also sets up addends for 'rela' type relocations.  */
-int
-md_apply_fix3 (fixP, valp, segment)
+
+void
+md_apply_fix3 (fixP, valP, segment)
      fixS *   fixP;
-     valueT * valp;
+     valueT * valP;
      segT     segment;
 {
   char *       buf  = fixP->fx_where + fixP->fx_frag->fr_literal;
   char *       file = fixP->fx_file ? fixP->fx_file : _("unknown");
   const char * symname;
   /* Note: use offsetT because it is signed, valueT is unsigned.  */
-  offsetT      val  = (offsetT) * valp;
+  offsetT      val  = * (offsetT *)  valP;
 
   symname = fixP->fx_addsy ? S_GET_NAME (fixP->fx_addsy) : _("<unknown>");
   /* Save this for the addend in the relocation record.  */
@@ -2115,7 +2116,7 @@ md_apply_fix3 (fixP, valp, segment)
       /* For ELF we can just return and let the reloc that will be generated
         take care of everything.  For COFF we still have to insert 'val'
         into the insn since the addend field will be ignored.  */
-      return 0;
+      return;
 #endif
     }
   else
@@ -2214,8 +2215,6 @@ md_apply_fix3 (fixP, valp, segment)
        }
       break;
     }
-
-  return 0; /* Return value is ignored.  */
 }
 
 void
index 6a582ceae87231672d9f226ed51976e3d83f4218..c8787ddb794a7b1a513e089d0743b39340b1e2f2 100644 (file)
@@ -1,6 +1,6 @@
 /* This file is tc-mcore.h
 
-   Copyright 1999, 2000 Free Software Foundation, Inc.
+   Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
@@ -59,8 +59,6 @@ extern const struct relax_type md_relax_table[];
 /* Want the section information too...  */
 #define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section (FIXP, SEC)
 
-#define MD_APPLY_FIX3  /* We want the segment as well.  */
-
 #ifdef  OBJ_COFF
 
 #define TARGET_FORMAT  (target_big_endian ? "pe-mcore-big" : "pe-mcore-little")
@@ -115,7 +113,6 @@ extern void      md_create_short_jump
 extern void      md_create_long_jump
   PARAMS ((char *, addressT, addressT, fragS *, symbolS *));
 extern void      md_convert_frag               PARAMS ((bfd *, segT, fragS *));
-extern int       md_apply_fix3                 PARAMS ((fixS *, valueT *, segT));
 extern void      md_operand                    PARAMS ((expressionS *));
 extern int       md_estimate_size_before_relax PARAMS ((fragS *, segT));
 extern void      md_number_to_chars            PARAMS ((char *, valueT, int));
index 2e4a89034d07b814fe39ef4b2ce61d67166b22fd..5c3da07c8b72d7be45932eee7c3c5b1481d3a9cd 100644 (file)
@@ -10094,7 +10094,7 @@ mips_frob_file_before_adjust ()
 }
 
 /* Sort any unmatched HI16_S relocs so that they immediately precede
-   the corresponding LO reloc.  This is called before md_apply_fix and
+   the corresponding LO reloc.  This is called before md_apply_fix3 and
    tc_gen_reloc.  Unmatched HI16_S relocs can only be generated by
    explicit use of the %hi modifier.  */
 
@@ -10220,10 +10220,11 @@ mips_force_relocation (fixp)
 
 /* Apply a fixup to the object file.  */
 
-int
-md_apply_fix (fixP, valueP)
+void
+md_apply_fix3 (fixP, valP, seg)
      fixS *fixP;
-     valueT *valueP;
+     valueT * valP;
+     segT seg ATTRIBUTE_UNUSED;
 {
   unsigned char *buf;
   long insn;
@@ -10249,7 +10250,7 @@ md_apply_fix (fixP, valueP)
          || fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
          || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY);
 
-  value = *valueP;
+  value = * valP;
 
   /* If we aren't adjusting this fixup to be against the section
      symbol, we need to adjust the value.  */
@@ -10270,6 +10271,7 @@ md_apply_fix (fixP, valueP)
 
        {
          valueT symval = S_GET_VALUE (fixP->fx_addsy);
+
          value -= symval;
          if (value != 0
              && ! fixP->fx_pcrel
@@ -10337,7 +10339,7 @@ md_apply_fix (fixP, valueP)
     }
 #endif
 
-  fixP->fx_addnumber = value;  /* Remember value for tc_gen_reloc */
+  fixP->fx_addnumber = value;  /* Remember value for tc_gen_reloc */
 
   if (fixP->fx_addsy == NULL && ! fixP->fx_pcrel)
     fixP->fx_done = 1;
@@ -10577,8 +10579,6 @@ md_apply_fix (fixP, valueP)
     default:
       internalError ();
     }
-
-  return 1;
 }
 
 #if 0
index 1358cc87b0adeb3b4fb97e58b1eeea811a395d5c..1395b25dca108607d593bab43174b598752aecea 100644 (file)
@@ -111,7 +111,7 @@ extern int mips_fix_adjustable PARAMS ((struct fix *));
 #define TC_FORCE_RELOCATION(fixp) mips_force_relocation (fixp)
 extern int mips_force_relocation PARAMS ((struct fix *));
 
-/* md_apply_fix sets fx_done correctly.  */
+/* md_apply_fix3 sets fx_done correctly.  */
 #define TC_HANDLE_FX_DONE 1
 
 /* Register mask variables.  These are set by the MIPS assembly code
index b76980789c4c43a08c3c884fb26e708a84c96c09..46d5decf9e120e64788153e8561f90f5a586fc95 100644 (file)
@@ -2369,15 +2369,15 @@ md_convert_frag (abfd, sec, fragP)
 
    Note that this function isn't called when linkrelax != 0.  */
 
-int
-md_apply_fix3 (fixP, valp, segment)
+void
+md_apply_fix3 (fixP, valP, segment)
      fixS *   fixP;
-     valueT * valp;
+     valueT * valP;
      segT     segment;
 {
   char *buf  = fixP->fx_where + fixP->fx_frag->fr_literal;
   /* Note: use offsetT because it is signed, valueT is unsigned.  */
-  offsetT val  = (offsetT) * valp;
+  offsetT val  = (offsetT) * valP;
   segT symsec
     = (fixP->fx_addsy == NULL
        ? absolute_section : S_GET_SEGMENT (fixP->fx_addsy));
@@ -2397,7 +2397,7 @@ md_apply_fix3 (fixP, valp, segment)
                      && symsec != real_reg_section)))))
     {
       fixP->fx_done = 0;
-      return 0;
+      return;
     }
   else if (fixP->fx_r_type == BFD_RELOC_MMIX_LOCAL
           || fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
@@ -2405,7 +2405,7 @@ md_apply_fix3 (fixP, valp, segment)
     {
       /* These are never "fixed".  */
       fixP->fx_done = 0;
-      return 0;
+      return;
     }
   else
     /* We assume every other relocation is "fixed".  */
@@ -2517,7 +2517,7 @@ md_apply_fix3 (fixP, valp, segment)
     case BFD_RELOC_MMIX_BASE_PLUS_OFFSET:
       /* These are never "fixed".  */
       fixP->fx_done = 0;
-      return 0;
+      return;
 
     case BFD_RELOC_MMIX_PUSHJ_1:
     case BFD_RELOC_MMIX_PUSHJ_2:
@@ -2541,8 +2541,6 @@ md_apply_fix3 (fixP, valp, segment)
     /* Make sure that for completed fixups we have the value around for
        use by e.g. mmix_frob_file.  */
     fixP->fx_offset = val;
-
-  return 0; /* Return value is ignored.  */
 }
 
 /* A bsearch function for looking up a value against offsets for GREG
index 3c7c71abe18b134d22c8cf0e648dfc3bba43cd41..e0b6f492b68a8342a12d46c0ba86261b28118ec7 100644 (file)
@@ -171,10 +171,6 @@ extern int mmix_force_relocation PARAMS ((struct fix *));
 #define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section (FIXP, SEC)
 extern long md_pcrel_from_section PARAMS ((struct fix *, segT));
 
-#define MD_APPLY_FIX3
-
-#define TC_HANDLES_FX_DONE
-
 #define md_section_align(seg, size) (size)
 
 #define LISTING_HEADER "GAS for MMIX"
index b2135d30a7f376e25ca887b980f9e8378bffa2ef..ff30fecc99a745deaf8a0347d177b779f89a0929 100644 (file)
@@ -760,7 +760,7 @@ md_begin ()
       op++;
     }
 
-  /* This is both a simplification (we don't have to write md_apply_fix)
+  /* This is both a simplification (we don't have to write md_apply_fix3)
      and support for future optimizations (branch shortening and similar
      stuff in the linker.  */
   linkrelax = 1;
@@ -1300,16 +1300,15 @@ md_pcrel_from (fixp)
 #endif
 }
 
-int
-md_apply_fix3 (fixp, valuep, seg)
-     fixS *fixp;
-     valueT *valuep;
-     segT seg;
+void
+md_apply_fix3 (fixP, valP, seg)
+     fixS * fixP;
+     valueT * valP ATTRIBUTE_UNUSED;
+     segT seg ATTRIBUTE_UNUSED;
 {
   /* We shouldn't ever get here because linkrelax is nonzero.  */
   abort ();
-  fixp->fx_done = 1;
-  return 0;
+  fixP->fx_done = 1;
 }
 
 /* Insert an operand value into an instruction.  */
index f8e9d83ed3f44dc25a79cc8e3db5806158b154c0..ca181160a2791b2a1e9f24129e6e33fa2a98b925 100644 (file)
@@ -1,5 +1,5 @@
 /* tc-mn10200.h -- Header file for tc-mn10200.c.
-   Copyright 1996, 1997, 2000 Free Software Foundation, Inc.
+   Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
@@ -31,7 +31,6 @@
 
 #define TARGET_FORMAT "elf32-mn10200"
 
-#define MD_APPLY_FIX3
 #define md_operand(x)
 
 /* Permit temporary numeric labels.  */
index ed17e9cd57897fdf5e53c2908226987eb9a8fe68..b73073eca0ca42d2ba01b4137eaa048de27bc920 100644 (file)
@@ -1908,21 +1908,21 @@ md_pcrel_from (fixp)
   return fixp->fx_frag->fr_address + fixp->fx_where;
 }
 
-int
-md_apply_fix3 (fixp, valuep, seg)
-     fixS *fixp;
-     valueT *valuep;
+void
+md_apply_fix3 (fixP, valP, seg)
+     fixS * fixP;
+     valueT * valP;
      segT seg;
 {
-  char *fixpos = fixp->fx_where + fixp->fx_frag->fr_literal;
+  char * fixpos = fixP->fx_where + fixP->fx_frag->fr_literal;
   int size = 0;
-  int value;
+  int value = (int) * valP;
 
-  assert (fixp->fx_r_type < BFD_RELOC_UNUSED);
+  assert (fixP->fx_r_type < BFD_RELOC_UNUSED);
 
   /* This should never happen.  */
   if (seg->flags & SEC_ALLOC)
-      abort ();
+    abort ();
 
   /* The value we are passed in *valuep includes the symbol values.
      Since we are using BFD_ASSEMBLER, if we are doing this relocation
@@ -1935,22 +1935,20 @@ md_apply_fix3 (fixp, valuep, seg)
      *valuep, and must use fx_offset instead.  However, if the reloc
      is PC relative, we do want to use *valuep since it includes the
      result of md_pcrel_from.  */
-  if (fixp->fx_addsy == (symbolS *) NULL || fixp->fx_pcrel)
-    value = *valuep;
-  else
-    value = fixp->fx_offset;
+  if (fixP->fx_addsy != (symbolS *) NULL && ! fixP->fx_pcrel)
+    value = fixP->fx_offset;
 
   /* If the fix is relative to a symbol which is not defined, or not
      in the same segment as the fix, we cannot resolve it here.  */
-  if (fixp->fx_addsy != NULL
-      && (! S_IS_DEFINED (fixp->fx_addsy)
-         || (S_GET_SEGMENT (fixp->fx_addsy) != seg)))
+  if (fixP->fx_addsy != NULL
+      && (! S_IS_DEFINED (fixP->fx_addsy)
+         || (S_GET_SEGMENT (fixP->fx_addsy) != seg)))
     {
-      fixp->fx_done = 0;
-      return 0;
+      fixP->fx_done = 0;
+      return;
     }
 
-  switch (fixp->fx_r_type)
+  switch (fixP->fx_r_type)
     {
     case BFD_RELOC_8:
     case BFD_RELOC_8_PCREL:
@@ -1969,22 +1967,20 @@ md_apply_fix3 (fixp, valuep, seg)
 
     case BFD_RELOC_VTABLE_INHERIT:
     case BFD_RELOC_VTABLE_ENTRY:
-      fixp->fx_done = 0;
-      return 1;
+      fixP->fx_done = 0;
+      return;
 
     case BFD_RELOC_NONE:
     default:
-      as_bad_where (fixp->fx_file, fixp->fx_line,
-                   _("Bad relocation fixup type (%d)"), fixp->fx_r_type);
+      as_bad_where (fixP->fx_file, fixP->fx_line,
+                   _("Bad relocation fixup type (%d)"), fixP->fx_r_type);
     }
 
   md_number_to_chars (fixpos, value, size);
 
   /* If a symbol remains, pass the fixup, as a reloc, onto the linker.  */
-  if (fixp->fx_addsy == NULL)
-    fixp->fx_done = 1;
-
-  return 0;
+  if (fixP->fx_addsy == NULL)
+    fixP->fx_done = 1;
 }
 
 /* Return nonzero if the fixup in FIXP will require a relocation,
index f14cd242e23248fd5d092af798fb9e1dd3eee9e2..c09ddad6723247a98b6c2799739e84b6becf770c 100644 (file)
@@ -1,5 +1,5 @@
 /* tc-mn10300.h -- Header file for tc-mn10300.c.
-   Copyright 1996, 1997, 2000 Free Software Foundation, Inc.
+   Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
 #define TC_FORCE_RELOCATION(fixp) mn10300_force_relocation (fixp)
 extern int mn10300_force_relocation PARAMS ((struct fix *));
 
-#define TC_HANDLES_FX_DONE
-
 #define obj_fix_adjustable(fixP) mn10300_fix_adjustable (fixP)
 extern boolean mn10300_fix_adjustable PARAMS ((struct fix *));
 
-#define MD_APPLY_FIX3 md_apply_fix3
-
 /* Fixup debug sections since we will never relax them.  */
 #define TC_LINKRELAX_FIXUP(seg) (seg->flags & SEC_ALLOC)
 
index 3aa890d6bf563053bb8a03570b18ac45d2d7ce5f..1ef1ef1186994e71e4dca24f5533ef402ea10591 100644 (file)
@@ -1954,52 +1954,43 @@ md_fix_pcrel_adjust (fixP)
    out separate functions for each kind of thing we could be fixing.
    They all get called from here.  */
 
-#ifdef BFD_ASSEMBLER
-int
-md_apply_fix (fixP, valp)
-     fixS *fixP;
-     valueT *valp;
-#else
 void
-md_apply_fix (fixP, val)
+md_apply_fix3 (fixP, valP, seg)
      fixS *fixP;
-     long val;
-#endif
+     valueT * valP;
+     segT seg ATTRIBUTE_UNUSED;
 {
-#ifdef BFD_ASSEMBLER
-  long val = *valp;
-#endif
+  long val = * (long *) valP;
   fragS *fragP = fixP->fx_frag;
-
   char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
 
   if (fix_bit_fixP (fixP))
-    {                          /* Bitfields to fix, sigh.  */
-      md_number_to_field (buf, val, fix_bit_fixP (fixP));
-    }
-  else
-    switch (fix_im_disp (fixP))
-      {
-      case 0:                  /* Immediate field.  */
-       md_number_to_imm (buf, val, fixP->fx_size);
-       break;
+    /* Bitfields to fix, sigh.  */
+    md_number_to_field (buf, val, fix_bit_fixP (fixP));
 
-      case 1:                  /* Displacement field.  */
-       /* Calculate offset */
-       {
-         md_number_to_disp (buf,
-                            (fixP->fx_pcrel ? val + md_fix_pcrel_adjust (fixP)
-                             : val), fixP->fx_size);
-       }
-       break;
+  else switch (fix_im_disp (fixP))
+    {
+    case 0:
+      /* Immediate field.  */
+      md_number_to_imm (buf, val, fixP->fx_size);
+      break;
 
-      case 2:                  /* Pointer in a data object.  */
-       md_number_to_chars (buf, val, fixP->fx_size);
-       break;
-      }
-#ifdef BSD_ASSEMBLER
-  return 1;
-#endif
+    case 1:
+      /* Displacement field.  */
+      /* Calculate offset */
+      md_number_to_disp (buf,
+                        (fixP->fx_pcrel ? val + md_fix_pcrel_adjust (fixP)
+                         : val), fixP->fx_size);
+      break;
+
+    case 2:
+      /* Pointer in a data object.  */
+      md_number_to_chars (buf, val, fixP->fx_size);
+      break;
+    }
+
+  if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
+    fixP->fx_done = 1;
 }
 \f
 /* Convert a relaxed displacement to ditto in final output */
index d863c9fa2b78e4bd2caa891316f1c8b563c50b14..365aa7ffff26d22390bd5698c8e8fd0394cf1994 100644 (file)
@@ -51,7 +51,6 @@ extern long md_pcrel_from_section PARAMS ((struct fix *, segT));
 /* We don't need to handle .word strangely.  */
 #define WORKING_DOT_WORD
 
-#define MD_APPLY_FIX3
 #define md_apply_fix3 gas_cgen_md_apply_fix3
 
 extern boolean openrisc_fix_adjustable PARAMS ((struct fix *));
@@ -61,8 +60,6 @@ extern boolean openrisc_fix_adjustable PARAMS ((struct fix *));
 extern int openrisc_force_relocation PARAMS ((struct fix *));
 #define TC_FORCE_RELOCATION(fix) openrisc_force_relocation (fix)
 
-#define TC_HANDLES_FX_DONE
-
 #define tc_gen_reloc gas_cgen_tc_gen_reloc
 
 /* Call md_pcrel_from_section(), not md_pcrel_from().  */
index a38a0eab67fc864ca31bd22f3df8874a94009412..4577d79632ea4c1c3a98e13b034e72073b158c16 100644 (file)
@@ -163,15 +163,17 @@ md_number_to_chars (con, value, nbytes)
 }
 
 /* Fix up some data or instructions after we find out the value of a symbol
-   that they reference.  */
+   that they reference.  Knows about order of bytes in address.  */
 
-int                            /* Knows about order of bytes in address.  */
-md_apply_fix (fixP, value)
+void
+md_apply_fix3 (fixP, valP, seg)
      fixS *fixP;
-     valueT *value;
+     valueT * valP;
+     segT seg ATTRIBUTE_UNUSED;
 {
   valueT code;
   valueT mask;
+  valueT val = * valP;
   char *buf;
   int shift;
   int size;
@@ -200,13 +202,15 @@ md_apply_fix (fixP, value)
     }
 
   if (fixP->fx_addsy != NULL)
-    *value += symbol_get_bfdsym (fixP->fx_addsy)->section->vma;
+    val += symbol_get_bfdsym (fixP->fx_addsy)->section->vma;
     /* *value += fixP->fx_addsy->bsym->section->vma; */
 
   code &= ~mask;
-  code |= (*value >> shift) & mask;
+  code |= (val >> shift) & mask;
   number_to_chars_littleendian (buf, code, size);
-  return 0;
+
+  if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
+    fixP->fx_done = 1;
 }
 
 long
@@ -1553,7 +1557,7 @@ tc_gen_reloc (section, fixp)
   *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
   reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
 
-  /* this is taken account for in md_apply_fix() */
+  /* This is taken account for in md_apply_fix3().  */
   reloc->addend = -symbol_get_bfdsym (fixp->fx_addsy)->section->vma;
 
   switch (fixp->fx_r_type)
index 7d5b835aecc7d12c03f01af61df5bb42d8919bca..034b43796043d04984c30b2985e4e359998aa502 100644 (file)
@@ -427,13 +427,14 @@ PJ options:\n\
 
 /* Apply a fixup to the object file.  */
 
-int
-md_apply_fix (fixP, valp)
+void
+md_apply_fix3 (fixP, valP, seg)
      fixS *fixP;
-     valueT *valp;
+     valueT * valP;
+     segT seg ATTRIBUTE_UNUSED;
 {
   char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
-  long val = *valp;
+  long val = * (long *) valP;
   long max, min;
   int shift;
 
@@ -452,7 +453,7 @@ md_apply_fix (fixP, valp)
     case BFD_RELOC_VTABLE_INHERIT:
     case BFD_RELOC_VTABLE_ENTRY:
       fixP->fx_done = 0;
-      return 0;
+      return;
 
     case BFD_RELOC_PJ_CODE_REL16:
       if (val < -0x8000 || val >= 0x7fff)
@@ -526,7 +527,8 @@ md_apply_fix (fixP, valp)
   if (max != 0 && (val < min || val > max))
     as_bad_where (fixP->fx_file, fixP->fx_line, _("offset out of range"));
 
-  return 0;
+  if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
+    fixP->fx_done = 1;
 }
 
 /* Put number into target byte order.  Always put values in an
index 2e2e6840148bdb5709702bf8c1b94d3392a57a63..a39440846338b43408a433b6f2c229fd8102d78a 100644 (file)
@@ -2312,7 +2312,7 @@ md_assemble (str)
      BFD_RELOC_UNUSED plus the operand index.  This lets us easily
      handle fixups for any operand type, although that is admittedly
      not a very exciting feature.  We pick a BFD reloc type in
-     md_apply_fix.  */
+     md_apply_fix3.  */
   for (i = 0; i < fc; i++)
     {
       const struct powerpc_operand *operand;
@@ -5080,36 +5080,33 @@ ppc_fix_adjustable (fix)
    that, we determine the correct reloc code and put it back in the
    fixup.  */
 
-int
-md_apply_fix3 (fixp, valuep, seg)
-     fixS *fixp;
-     valueT *valuep;
+void
+md_apply_fix3 (fixP, valP, seg)
+     fixS *fixP;
+     valueT * valP;
      segT seg ATTRIBUTE_UNUSED;
 {
-  valueT value;
+  valueT value = * valP;
 
 #ifdef OBJ_ELF
-  value = *valuep;
-  if (fixp->fx_addsy != NULL)
+  if (fixP->fx_addsy != NULL)
     {
       /* `*valuep' may contain the value of the symbol on which the reloc
         will be based; we have to remove it.  */
-      if (symbol_used_in_reloc_p (fixp->fx_addsy)
-         && S_GET_SEGMENT (fixp->fx_addsy) != absolute_section
-         && S_GET_SEGMENT (fixp->fx_addsy) != undefined_section
-         && ! bfd_is_com_section (S_GET_SEGMENT (fixp->fx_addsy)))
-       value -= S_GET_VALUE (fixp->fx_addsy);
+      if (symbol_used_in_reloc_p (fixP->fx_addsy)
+         && S_GET_SEGMENT (fixP->fx_addsy) != absolute_section
+         && S_GET_SEGMENT (fixP->fx_addsy) != undefined_section
+         && ! bfd_is_com_section (S_GET_SEGMENT (fixP->fx_addsy)))
+       value -= S_GET_VALUE (fixP->fx_addsy);
 
       /* FIXME: Why '+'?  Better yet, what exactly is '*valuep'
         supposed to be?  I think this is related to various similar
         FIXMEs in tc-i386.c and tc-sparc.c.  */
-      if (fixp->fx_pcrel)
-       value += fixp->fx_frag->fr_address + fixp->fx_where;
+      if (fixP->fx_pcrel)
+       value += fixP->fx_frag->fr_address + fixP->fx_where;
     }
   else
-    {
-      fixp->fx_done = 1;
-    }
+    fixP->fx_done = 1;
 #else
   /* FIXME FIXME FIXME: The value we are passed in *valuep includes
      the symbol values.  Since we are using BFD_ASSEMBLER, if we are
@@ -5121,38 +5118,37 @@ md_apply_fix3 (fixp, valuep, seg)
      *valuep, and must use fx_offset instead.  However, if the reloc
      is PC relative, we do want to use *valuep since it includes the
      result of md_pcrel_from.  This is confusing.  */
-  if (fixp->fx_addsy == (symbolS *) NULL)
-    {
-      value = *valuep;
-      fixp->fx_done = 1;
-    }
-  else if (fixp->fx_pcrel)
-    value = *valuep;
+  if (fixP->fx_addsy == (symbolS *) NULL)
+    fixP->fx_done = 1;
+
+  else if (fixP->fx_pcrel)
+    ;
+
   else
     {
-      value = fixp->fx_offset;
-      if (fixp->fx_subsy != (symbolS *) NULL)
+      value = fixP->fx_offset;
+      if (fixP->fx_subsy != (symbolS *) NULL)
        {
-         if (S_GET_SEGMENT (fixp->fx_subsy) == absolute_section)
-           value -= S_GET_VALUE (fixp->fx_subsy);
+         if (S_GET_SEGMENT (fixP->fx_subsy) == absolute_section)
+           value -= S_GET_VALUE (fixP->fx_subsy);
          else
            {
              /* We can't actually support subtracting a symbol.  */
-             as_bad_where (fixp->fx_file, fixp->fx_line,
+             as_bad_where (fixP->fx_file, fixP->fx_line,
                            _("expression too complex"));
            }
        }
     }
 #endif
 
-  if ((int) fixp->fx_r_type >= (int) BFD_RELOC_UNUSED)
+  if ((int) fixP->fx_r_type >= (int) BFD_RELOC_UNUSED)
     {
       int opindex;
       const struct powerpc_operand *operand;
       char *where;
       unsigned long insn;
 
-      opindex = (int) fixp->fx_r_type - (int) BFD_RELOC_UNUSED;
+      opindex = (int) fixP->fx_r_type - (int) BFD_RELOC_UNUSED;
 
       operand = &powerpc_operands[opindex];
 
@@ -5165,38 +5161,36 @@ md_apply_fix3 (fixp, valuep, seg)
          && operand->bits == 16
          && operand->shift == 0
          && operand->insert == NULL
-         && fixp->fx_addsy != NULL
-         && symbol_get_tc (fixp->fx_addsy)->subseg != 0
-         && symbol_get_tc (fixp->fx_addsy)->class != XMC_TC
-         && symbol_get_tc (fixp->fx_addsy)->class != XMC_TC0
-         && S_GET_SEGMENT (fixp->fx_addsy) != bss_section)
+         && fixP->fx_addsy != NULL
+         && symbol_get_tc (fixP->fx_addsy)->subseg != 0
+         && symbol_get_tc (fixP->fx_addsy)->class != XMC_TC
+         && symbol_get_tc (fixP->fx_addsy)->class != XMC_TC0
+         && S_GET_SEGMENT (fixP->fx_addsy) != bss_section)
        {
-         value = fixp->fx_offset;
-         fixp->fx_done = 1;
+         value = fixP->fx_offset;
+         fixP->fx_done = 1;
        }
 #endif
 
       /* Fetch the instruction, insert the fully resolved operand
         value, and stuff the instruction back again.  */
-      where = fixp->fx_frag->fr_literal + fixp->fx_where;
+      where = fixP->fx_frag->fr_literal + fixP->fx_where;
       if (target_big_endian)
        insn = bfd_getb32 ((unsigned char *) where);
       else
        insn = bfd_getl32 ((unsigned char *) where);
       insn = ppc_insert_operand (insn, operand, (offsetT) value,
-                                fixp->fx_file, fixp->fx_line);
+                                fixP->fx_file, fixP->fx_line);
       if (target_big_endian)
        bfd_putb32 ((bfd_vma) insn, (unsigned char *) where);
       else
        bfd_putl32 ((bfd_vma) insn, (unsigned char *) where);
 
-      if (fixp->fx_done)
-       {
-         /* Nothing else to do here.  */
-         return 1;
-       }
+      if (fixP->fx_done)
+       /* Nothing else to do here.  */
+       return;
 
-      assert (fixp->fx_addsy != NULL);
+      assert (fixP->fx_addsy != NULL);
 
       /* Determine a BFD reloc value based on the operand information.
         We are only prepared to turn a few of the operands into
@@ -5204,35 +5198,35 @@ md_apply_fix3 (fixp, valuep, seg)
       if ((operand->flags & PPC_OPERAND_RELATIVE) != 0
          && operand->bits == 26
          && operand->shift == 0)
-       fixp->fx_r_type = BFD_RELOC_PPC_B26;
+       fixP->fx_r_type = BFD_RELOC_PPC_B26;
       else if ((operand->flags & PPC_OPERAND_RELATIVE) != 0
          && operand->bits == 16
          && operand->shift == 0)
-       fixp->fx_r_type = BFD_RELOC_PPC_B16;
+       fixP->fx_r_type = BFD_RELOC_PPC_B16;
       else if ((operand->flags & PPC_OPERAND_ABSOLUTE) != 0
               && operand->bits == 26
               && operand->shift == 0)
-       fixp->fx_r_type = BFD_RELOC_PPC_BA26;
+       fixP->fx_r_type = BFD_RELOC_PPC_BA26;
       else if ((operand->flags & PPC_OPERAND_ABSOLUTE) != 0
               && operand->bits == 16
               && operand->shift == 0)
-       fixp->fx_r_type = BFD_RELOC_PPC_BA16;
+       fixP->fx_r_type = BFD_RELOC_PPC_BA16;
 #if defined (OBJ_XCOFF) || defined (OBJ_ELF)
       else if ((operand->flags & PPC_OPERAND_PARENS) != 0
               && operand->bits == 16
               && operand->shift == 0
-              && ppc_is_toc_sym (fixp->fx_addsy))
+              && ppc_is_toc_sym (fixP->fx_addsy))
        {
-         fixp->fx_r_type = BFD_RELOC_PPC_TOC16;
+         fixP->fx_r_type = BFD_RELOC_PPC_TOC16;
 #ifdef OBJ_ELF
          if (BFD_DEFAULT_TARGET_SIZE == 64
              && ppc_size == PPC_OPCODE_64
              && (operand->flags & PPC_OPERAND_DS) != 0)
-           fixp->fx_r_type = BFD_RELOC_PPC64_TOC16_DS;
+           fixP->fx_r_type = BFD_RELOC_PPC64_TOC16_DS;
 #endif
-         fixp->fx_size = 2;
+         fixP->fx_size = 2;
          if (target_big_endian)
-           fixp->fx_where += 2;
+           fixP->fx_where += 2;
        }
 #endif /* defined (OBJ_XCOFF) || defined (OBJ_ELF) */
       else
@@ -5242,23 +5236,23 @@ md_apply_fix3 (fixp, valuep, seg)
 
          /* Use expr_symbol_where to see if this is an expression
             symbol.  */
-         if (expr_symbol_where (fixp->fx_addsy, &sfile, &sline))
-           as_bad_where (fixp->fx_file, fixp->fx_line,
+         if (expr_symbol_where (fixP->fx_addsy, &sfile, &sline))
+           as_bad_where (fixP->fx_file, fixP->fx_line,
                          _("unresolved expression that must be resolved"));
          else
-           as_bad_where (fixp->fx_file, fixp->fx_line,
+           as_bad_where (fixP->fx_file, fixP->fx_line,
                          _("unsupported relocation against %s"),
-                         S_GET_NAME (fixp->fx_addsy));
-         fixp->fx_done = 1;
-         return 1;
+                         S_GET_NAME (fixP->fx_addsy));
+         fixP->fx_done = 1;
+         return;
        }
     }
   else
     {
 #ifdef OBJ_ELF
-      ppc_elf_validate_fix (fixp, seg);
+      ppc_elf_validate_fix (fixP, seg);
 #endif
-      switch (fixp->fx_r_type)
+      switch (fixP->fx_r_type)
        {
        case BFD_RELOC_CTOR:
          if (BFD_DEFAULT_TARGET_SIZE == 64 && ppc_size == PPC_OPCODE_64)
@@ -5266,26 +5260,26 @@ md_apply_fix3 (fixp, valuep, seg)
          /* fall through */
 
        case BFD_RELOC_32:
-         if (fixp->fx_pcrel)
-           fixp->fx_r_type = BFD_RELOC_32_PCREL;
+         if (fixP->fx_pcrel)
+           fixP->fx_r_type = BFD_RELOC_32_PCREL;
          /* fall through */
 
        case BFD_RELOC_RVA:
        case BFD_RELOC_32_PCREL:
        case BFD_RELOC_32_BASEREL:
        case BFD_RELOC_PPC_EMB_NADDR32:
-         md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
+         md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where,
                              value, 4);
          break;
 
        case BFD_RELOC_64:
        ctor64:
-         if (fixp->fx_pcrel)
-           fixp->fx_r_type = BFD_RELOC_64_PCREL;
+         if (fixP->fx_pcrel)
+           fixP->fx_r_type = BFD_RELOC_64_PCREL;
          /* fall through */
 
        case BFD_RELOC_64_PCREL:
-         md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
+         md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where,
                              value, 8);
          break;
 
@@ -5320,20 +5314,20 @@ md_apply_fix3 (fixp, valuep, seg)
        case BFD_RELOC_PPC64_TOC16_HA:
 #endif
 #endif
-         if (fixp->fx_pcrel)
+         if (fixP->fx_pcrel)
            {
-             if (fixp->fx_addsy != NULL)
-               as_bad_where (fixp->fx_file, fixp->fx_line,
+             if (fixP->fx_addsy != NULL)
+               as_bad_where (fixP->fx_file, fixP->fx_line,
                              _("cannot emit PC relative %s relocation against %s"),
-                             bfd_get_reloc_code_name (fixp->fx_r_type),
-                             S_GET_NAME (fixp->fx_addsy));
+                             bfd_get_reloc_code_name (fixP->fx_r_type),
+                             S_GET_NAME (fixP->fx_addsy));
              else
-               as_bad_where (fixp->fx_file, fixp->fx_line,
+               as_bad_where (fixP->fx_file, fixP->fx_line,
                              _("cannot emit PC relative %s relocation"),
-                             bfd_get_reloc_code_name (fixp->fx_r_type));
+                             bfd_get_reloc_code_name (fixP->fx_r_type));
            }
 
-         md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
+         md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where,
                              value, 2);
          break;
 
@@ -5341,46 +5335,46 @@ md_apply_fix3 (fixp, valuep, seg)
             lis %r3,(L1-L2)@ha
             where L1 and L2 are defined later.  */
        case BFD_RELOC_HI16:
-         if (fixp->fx_pcrel)
+         if (fixP->fx_pcrel)
            abort ();
-         md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
+         md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where,
                              PPC_HI (value), 2);
          break;
 
        case BFD_RELOC_HI16_S:
-         if (fixp->fx_pcrel)
+         if (fixP->fx_pcrel)
            abort ();
-         md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
+         md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where,
                              PPC_HA (value), 2);
          break;
 
 #ifdef OBJ_ELF
 #if BFD_DEFAULT_TARGET_SIZE == 64
        case BFD_RELOC_PPC64_HIGHER:
-         if (fixp->fx_pcrel)
+         if (fixP->fx_pcrel)
            abort ();
-         md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
+         md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where,
                              PPC_HIGHER (value), 2);
          break;
 
        case BFD_RELOC_PPC64_HIGHER_S:
-         if (fixp->fx_pcrel)
+         if (fixP->fx_pcrel)
            abort ();
-         md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
+         md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where,
                              PPC_HIGHERA (value), 2);
          break;
 
        case BFD_RELOC_PPC64_HIGHEST:
-         if (fixp->fx_pcrel)
+         if (fixP->fx_pcrel)
            abort ();
-         md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
+         md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where,
                              PPC_HIGHEST (value), 2);
          break;
 
        case BFD_RELOC_PPC64_HIGHEST_S:
-         if (fixp->fx_pcrel)
+         if (fixP->fx_pcrel)
            abort ();
-         md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
+         md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where,
                              PPC_HIGHESTA (value), 2);
          break;
 
@@ -5395,10 +5389,10 @@ md_apply_fix3 (fixp, valuep, seg)
        case BFD_RELOC_PPC64_TOC16_LO_DS:
        case BFD_RELOC_PPC64_PLTGOT16_DS:
        case BFD_RELOC_PPC64_PLTGOT16_LO_DS:
-         if (fixp->fx_pcrel)
+         if (fixP->fx_pcrel)
            abort ();
          {
-           unsigned char *where = fixp->fx_frag->fr_literal + fixp->fx_where;
+           unsigned char *where = fixP->fx_frag->fr_literal + fixP->fx_where;
            unsigned long val;
 
            if (target_big_endian)
@@ -5417,45 +5411,45 @@ md_apply_fix3 (fixp, valuep, seg)
          /* Because SDA21 modifies the register field, the size is set to 4
             bytes, rather than 2, so offset it here appropriately.  */
        case BFD_RELOC_PPC_EMB_SDA21:
-         if (fixp->fx_pcrel)
+         if (fixP->fx_pcrel)
            abort ();
 
-         md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where
+         md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where
                              + ((target_big_endian) ? 2 : 0),
                              value, 2);
          break;
 
        case BFD_RELOC_8:
-         if (fixp->fx_pcrel)
+         if (fixP->fx_pcrel)
            abort ();
 
-         md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
+         md_number_to_chars (fixP->fx_frag->fr_literal + fixP->fx_where,
                              value, 1);
          break;
 
        case BFD_RELOC_24_PLT_PCREL:
        case BFD_RELOC_PPC_LOCAL24PC:
-         if (!fixp->fx_pcrel && !fixp->fx_done)
+         if (!fixP->fx_pcrel && !fixP->fx_done)
            abort ();
 
-         if (fixp->fx_done)
+         if (fixP->fx_done)
            {
              char *where;
              unsigned long insn;
 
              /* Fetch the instruction, insert the fully resolved operand
                 value, and stuff the instruction back again.  */
-             where = fixp->fx_frag->fr_literal + fixp->fx_where;
+             where = fixP->fx_frag->fr_literal + fixP->fx_where;
              if (target_big_endian)
                insn = bfd_getb32 ((unsigned char *) where);
              else
                insn = bfd_getl32 ((unsigned char *) where);
              if ((value & 3) != 0)
-               as_bad_where (fixp->fx_file, fixp->fx_line,
+               as_bad_where (fixP->fx_file, fixP->fx_line,
                              _("must branch to an address a multiple of 4"));
              if ((offsetT) value < -0x40000000
                  || (offsetT) value >= 0x40000000)
-               as_bad_where (fixp->fx_file, fixp->fx_line,
+               as_bad_where (fixP->fx_file, fixP->fx_line,
                              _("@local or @plt branch destination is too far away, %ld bytes"),
                              (long) value);
              insn = insn | (value & 0x03fffffc);
@@ -5467,15 +5461,15 @@ md_apply_fix3 (fixp, valuep, seg)
          break;
 
        case BFD_RELOC_VTABLE_INHERIT:
-         fixp->fx_done = 0;
-         if (fixp->fx_addsy
-             && !S_IS_DEFINED (fixp->fx_addsy)
-             && !S_IS_WEAK (fixp->fx_addsy))
-           S_SET_WEAK (fixp->fx_addsy);
+         fixP->fx_done = 0;
+         if (fixP->fx_addsy
+             && !S_IS_DEFINED (fixP->fx_addsy)
+             && !S_IS_WEAK (fixP->fx_addsy))
+           S_SET_WEAK (fixP->fx_addsy);
          break;
 
        case BFD_RELOC_VTABLE_ENTRY:
-         fixp->fx_done = 0;
+         fixP->fx_done = 0;
          break;
 
 #ifdef OBJ_ELF
@@ -5483,37 +5477,35 @@ md_apply_fix3 (fixp, valuep, seg)
          /* Generated by reference to `sym@tocbase'.  The sym is
             ignored by the linker.  */
        case BFD_RELOC_PPC64_TOC:
-         fixp->fx_done = 0;
+         fixP->fx_done = 0;
          break;
 #endif
 #endif
        default:
          fprintf (stderr,
-                  _("Gas failure, reloc value %d\n"), fixp->fx_r_type);
+                  _("Gas failure, reloc value %d\n"), fixP->fx_r_type);
          fflush (stderr);
          abort ();
        }
     }
 
 #ifdef OBJ_ELF
-  fixp->fx_addnumber = value;
+  fixP->fx_addnumber = value;
 #else
-  if (fixp->fx_r_type != BFD_RELOC_PPC_TOC16)
-    fixp->fx_addnumber = 0;
+  if (fixP->fx_r_type != BFD_RELOC_PPC_TOC16)
+    fixP->fx_addnumber = 0;
   else
     {
 #ifdef TE_PE
-      fixp->fx_addnumber = 0;
+      fixP->fx_addnumber = 0;
 #else
       /* We want to use the offset within the data segment of the
         symbol, not the actual VMA of the symbol.  */
-      fixp->fx_addnumber =
-       - bfd_get_section_vma (stdoutput, S_GET_SEGMENT (fixp->fx_addsy));
+      fixP->fx_addnumber =
+       - bfd_get_section_vma (stdoutput, S_GET_SEGMENT (fixP->fx_addsy));
 #endif
     }
 #endif
-
-  return 1;
 }
 
 /* Generate a reloc for a fixup.  */
index a62147c85ed5ae975b33b58041acd05f5e68aeaa..f4d2f863401ef99901baa4c07684b7704cd3a5d9 100644 (file)
@@ -82,9 +82,6 @@ extern char *ppc_target_format PARAMS ((void));
 /* We don't need to handle .word strangely.  */
 #define WORKING_DOT_WORD
 
-/* We set the fx_done field appropriately in md_apply_fix.  */
-#define TC_HANDLES_FX_DONE
-
 #define MAX_MEM_FOR_RS_ALIGN_CODE 4
 #define HANDLE_ALIGN(FRAGP)                                            \
   if ((FRAGP)->fr_type == rs_align_code)                               \
@@ -292,9 +289,6 @@ extern int ppc_elf_frob_symbol PARAMS ((symbolS *));
 #define DWARF2_LINE_MIN_INSN_LENGTH 4
 #endif /* OBJ_ELF */
 
-/* call md_apply_fix3 with segment instead of md_apply_fix */
-#define MD_APPLY_FIX3
-
 /* call md_pcrel_from_section, not md_pcrel_from */
 #define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section(FIXP, SEC)
 extern long md_pcrel_from_section PARAMS ((struct fix *, segT));
index 1f6f02c37844bb4f2b94c38a31b8ce5fadba0144..2fb2c6c3a25854da9a94f16d3adfa35c4422e597 100644 (file)
@@ -1680,112 +1680,110 @@ tc_s390_force_relocation (fixp)
    that, we determine the correct reloc code and put it back in the
    fixup.  */
 
-int
-md_apply_fix3 (fixp, valuep, seg)
-     fixS *fixp;
-     valueT *valuep;
+void
+md_apply_fix3 (fixP, valP, seg)
+     fixS *fixP;
+     valueT *valP;
      segT seg;
 {
   char *where;
-  valueT value;
+  valueT value = * valP;
 
-  value = *valuep;
-  where = fixp->fx_frag->fr_literal + fixp->fx_where;
+  where = fixP->fx_frag->fr_literal + fixP->fx_where;
 
-  if (fixp->fx_subsy != NULL) 
+  if (fixP->fx_subsy != NULL) 
     {
-      if ((fixp->fx_addsy != NULL
-          && S_GET_SEGMENT (fixp->fx_addsy) == S_GET_SEGMENT (fixp->fx_subsy)
-          && SEG_NORMAL (S_GET_SEGMENT (fixp->fx_addsy)))
-         || (S_GET_SEGMENT (fixp->fx_subsy) == absolute_section))
-       value += S_GET_VALUE (fixp->fx_subsy);
-      if (!S_IS_DEFINED (fixp->fx_subsy))
-       as_bad_where (fixp->fx_file, fixp->fx_line,
+      if ((fixP->fx_addsy != NULL
+          && S_GET_SEGMENT (fixP->fx_addsy) == S_GET_SEGMENT (fixP->fx_subsy)
+          && SEG_NORMAL (S_GET_SEGMENT (fixP->fx_addsy)))
+         || (S_GET_SEGMENT (fixP->fx_subsy) == absolute_section))
+       value += S_GET_VALUE (fixP->fx_subsy);
+      if (!S_IS_DEFINED (fixP->fx_subsy))
+       as_bad_where (fixP->fx_file, fixP->fx_line,
                      _("unresolved fx_subsy symbol that must be resolved"));
-      value -= S_GET_VALUE(fixp->fx_subsy);
+      value -= S_GET_VALUE(fixP->fx_subsy);
 
-      if (S_GET_SEGMENT (fixp->fx_subsy) == seg && ! fixp->fx_pcrel)
-       value += MD_PCREL_FROM_SECTION (fixp, seg);
+      if (S_GET_SEGMENT (fixP->fx_subsy) == seg && ! fixP->fx_pcrel)
+       value += MD_PCREL_FROM_SECTION (fixP, seg);
     }
   
-  if (fixp->fx_addsy != NULL) 
+  if (fixP->fx_addsy != NULL) 
     {
-      if ((fixp->fx_subsy != NULL
-          && S_GET_SEGMENT (fixp->fx_addsy) == S_GET_SEGMENT (fixp->fx_subsy)
-          && SEG_NORMAL (S_GET_SEGMENT(fixp->fx_addsy)))
-         || (S_GET_SEGMENT (fixp->fx_addsy) == seg
-             && fixp->fx_pcrel && TC_RELOC_RTSYM_LOC_FIXUP (fixp))
-         || (!fixp->fx_pcrel 
-             && S_GET_SEGMENT (fixp->fx_addsy) == absolute_section)
-         || (S_GET_SEGMENT (fixp->fx_addsy) != undefined_section
-             && !bfd_is_com_section (S_GET_SEGMENT (fixp->fx_addsy))
-             && TC_FIX_ADJUSTABLE(fixp)))
-       value -= S_GET_VALUE (fixp->fx_addsy);
-
-      if (fixp->fx_pcrel)
-       value += fixp->fx_frag->fr_address + fixp->fx_where;
+      if ((fixP->fx_subsy != NULL
+          && S_GET_SEGMENT (fixP->fx_addsy) == S_GET_SEGMENT (fixP->fx_subsy)
+          && SEG_NORMAL (S_GET_SEGMENT(fixP->fx_addsy)))
+         || (S_GET_SEGMENT (fixP->fx_addsy) == seg
+             && fixP->fx_pcrel && TC_RELOC_RTSYM_LOC_FIXUP (fixP))
+         || (!fixP->fx_pcrel 
+             && S_GET_SEGMENT (fixP->fx_addsy) == absolute_section)
+         || (S_GET_SEGMENT (fixP->fx_addsy) != undefined_section
+             && !bfd_is_com_section (S_GET_SEGMENT (fixP->fx_addsy))
+             && TC_FIX_ADJUSTABLE(fixP)))
+       value -= S_GET_VALUE (fixP->fx_addsy);
+
+      if (fixP->fx_pcrel)
+       value += fixP->fx_frag->fr_address + fixP->fx_where;
     }
   else
-    fixp->fx_done = 1;
+    fixP->fx_done = 1;
 
-  if ((int) fixp->fx_r_type >= (int) BFD_RELOC_UNUSED)
+  if ((int) fixP->fx_r_type >= (int) BFD_RELOC_UNUSED)
     {
       const struct s390_operand *operand;
       int opindex;
 
-      opindex = (int) fixp->fx_r_type - (int) BFD_RELOC_UNUSED;
+      opindex = (int) fixP->fx_r_type - (int) BFD_RELOC_UNUSED;
       operand = &s390_operands[opindex];
 
-      if (fixp->fx_done)
+      if (fixP->fx_done)
        {
          /* Insert the fully resolved operand value.  */
          s390_insert_operand (where, operand, (offsetT) value,
-                              fixp->fx_file, fixp->fx_line);
-
-         return 1;
+                              fixP->fx_file, fixP->fx_line);
+         return;
        }
 
       /* Determine a BFD reloc value based on the operand information.
         We are only prepared to turn a few of the operands into
         relocs.  */
-      fixp->fx_offset = value;
+      fixP->fx_offset = value;
       if (operand->bits == 12 && operand->shift == 20)
        {
-         fixp->fx_size = 2;
-         fixp->fx_where += 2;
-         fixp->fx_r_type = BFD_RELOC_390_12;
+         fixP->fx_size = 2;
+         fixP->fx_where += 2;
+         fixP->fx_r_type = BFD_RELOC_390_12;
        }
       else if (operand->bits == 12 && operand->shift == 36)
        {
-         fixp->fx_size = 2;
-         fixp->fx_where += 4;
-         fixp->fx_r_type = BFD_RELOC_390_12;
+         fixP->fx_size = 2;
+         fixP->fx_where += 4;
+         fixP->fx_r_type = BFD_RELOC_390_12;
        }
       else if (operand->bits == 8 && operand->shift == 8)
        {
-         fixp->fx_size = 1;
-         fixp->fx_where += 1;
-         fixp->fx_r_type = BFD_RELOC_8;
+         fixP->fx_size = 1;
+         fixP->fx_where += 1;
+         fixP->fx_r_type = BFD_RELOC_8;
        }
       else if (operand->bits == 16 && operand->shift == 16)
        {
-         fixp->fx_size = 2;
-         fixp->fx_where += 2;
+         fixP->fx_size = 2;
+         fixP->fx_where += 2;
          if (operand->flags & S390_OPERAND_PCREL)
            {
-             fixp->fx_r_type = BFD_RELOC_390_PC16DBL;
-             fixp->fx_offset += 2;
+             fixP->fx_r_type = BFD_RELOC_390_PC16DBL;
+             fixP->fx_offset += 2;
            }
          else
-           fixp->fx_r_type = BFD_RELOC_16;
+           fixP->fx_r_type = BFD_RELOC_16;
        }
       else if (operand->bits == 32 && operand->shift == 16
               && (operand->flags & S390_OPERAND_PCREL))
        {
-         fixp->fx_size = 4;
-         fixp->fx_where += 2;
-         fixp->fx_offset += 2;
-         fixp->fx_r_type = BFD_RELOC_390_PC32DBL;
+         fixP->fx_size = 4;
+         fixP->fx_where += 2;
+         fixP->fx_offset += 2;
+         fixP->fx_r_type = BFD_RELOC_390_PC32DBL;
        }
       else
        {
@@ -1794,29 +1792,29 @@ md_apply_fix3 (fixp, valuep, seg)
 
          /* Use expr_symbol_where to see if this is an expression
             symbol.  */
-         if (expr_symbol_where (fixp->fx_addsy, &sfile, &sline))
-           as_bad_where (fixp->fx_file, fixp->fx_line,
+         if (expr_symbol_where (fixP->fx_addsy, &sfile, &sline))
+           as_bad_where (fixP->fx_file, fixP->fx_line,
                          _("unresolved expression that must be resolved"));
          else
-           as_bad_where (fixp->fx_file, fixp->fx_line,
+           as_bad_where (fixP->fx_file, fixP->fx_line,
                          _("unsupported relocation type"));
-         fixp->fx_done = 1;
-         return 1;
+         fixP->fx_done = 1;
+         return;
        }
     }
   else
     {
-      switch (fixp->fx_r_type)
+      switch (fixP->fx_r_type)
        {
        case BFD_RELOC_8:
-         if (fixp->fx_pcrel)
+         if (fixP->fx_pcrel)
            abort ();
-         if (fixp->fx_done)
+         if (fixP->fx_done)
            md_number_to_chars (where, value, 1);
          break;
        case BFD_RELOC_390_12:
        case BFD_RELOC_390_GOT12:
-         if (fixp->fx_done)
+         if (fixP->fx_done)
            {
              unsigned short mop;
 
@@ -1830,45 +1828,45 @@ md_apply_fix3 (fixp, valuep, seg)
        case BFD_RELOC_GPREL16:
        case BFD_RELOC_16_GOT_PCREL:
        case BFD_RELOC_16_GOTOFF:
-         if (fixp->fx_pcrel)
-           as_bad_where (fixp->fx_file, fixp->fx_line,
+         if (fixP->fx_pcrel)
+           as_bad_where (fixP->fx_file, fixP->fx_line,
                          "cannot emit PC relative %s relocation%s%s",
-                         bfd_get_reloc_code_name (fixp->fx_r_type),
-                         fixp->fx_addsy != NULL ? " against " : "",
-                         (fixp->fx_addsy != NULL
-                          ? S_GET_NAME (fixp->fx_addsy)
+                         bfd_get_reloc_code_name (fixP->fx_r_type),
+                         fixP->fx_addsy != NULL ? " against " : "",
+                         (fixP->fx_addsy != NULL
+                          ? S_GET_NAME (fixP->fx_addsy)
                           : ""));
-         if (fixp->fx_done)
+         if (fixP->fx_done)
            md_number_to_chars (where, value, 2);
          break;
        case BFD_RELOC_390_GOT16:
-         if (fixp->fx_done)
+         if (fixP->fx_done)
            md_number_to_chars (where, value, 2);
          break;
        case BFD_RELOC_390_PC16DBL:
        case BFD_RELOC_390_PLT16DBL:
          value += 2;
-         if (fixp->fx_done)
+         if (fixP->fx_done)
            md_number_to_chars (where, (offsetT) value >> 1, 2);
          break;
 
        case BFD_RELOC_32:
-         if (fixp->fx_pcrel)
-           fixp->fx_r_type = BFD_RELOC_32_PCREL;
+         if (fixP->fx_pcrel)
+           fixP->fx_r_type = BFD_RELOC_32_PCREL;
          else
-           fixp->fx_r_type = BFD_RELOC_32;
-         if (fixp->fx_done)
+           fixP->fx_r_type = BFD_RELOC_32;
+         if (fixP->fx_done)
            md_number_to_chars (where, value, 4);
          break;
        case BFD_RELOC_32_PCREL:
        case BFD_RELOC_32_BASEREL:
-         fixp->fx_r_type = BFD_RELOC_32_PCREL;
-         if (fixp->fx_done)
+         fixP->fx_r_type = BFD_RELOC_32_PCREL;
+         if (fixP->fx_done)
            md_number_to_chars (where, value, 4);
          break;
        case BFD_RELOC_32_GOT_PCREL:
        case BFD_RELOC_390_PLT32:
-         if (fixp->fx_done)
+         if (fixP->fx_done)
            md_number_to_chars (where, value, 4);
          break;
        case BFD_RELOC_390_PC32DBL:
@@ -1876,58 +1874,56 @@ md_apply_fix3 (fixp, valuep, seg)
        case BFD_RELOC_390_GOTPCDBL:
        case BFD_RELOC_390_GOTENT:
          value += 2;
-         if (fixp->fx_done)
+         if (fixP->fx_done)
            md_number_to_chars (where, (offsetT) value >> 1, 4);
          break;
 
        case BFD_RELOC_32_GOTOFF:
-         if (fixp->fx_done)
+         if (fixP->fx_done)
            md_number_to_chars (where, value, sizeof (int));
          break;
 
        case BFD_RELOC_390_GOT64:
        case BFD_RELOC_390_PLT64:
-         if (fixp->fx_done)
+         if (fixP->fx_done)
            md_number_to_chars (where, value, 8);
          break;
 
        case BFD_RELOC_64:
-         if (fixp->fx_pcrel)
-           fixp->fx_r_type = BFD_RELOC_64_PCREL;
+         if (fixP->fx_pcrel)
+           fixP->fx_r_type = BFD_RELOC_64_PCREL;
          else
-           fixp->fx_r_type = BFD_RELOC_64;
-         if (fixp->fx_done)
+           fixP->fx_r_type = BFD_RELOC_64;
+         if (fixP->fx_done)
            md_number_to_chars (where, value, 8);
          break;
 
        case BFD_RELOC_64_PCREL:
-         fixp->fx_r_type = BFD_RELOC_64_PCREL;
-         if (fixp->fx_done)
+         fixP->fx_r_type = BFD_RELOC_64_PCREL;
+         if (fixP->fx_done)
            md_number_to_chars (where, value, 8);
          break;
 
        case BFD_RELOC_VTABLE_INHERIT:
        case BFD_RELOC_VTABLE_ENTRY:
-         fixp->fx_done = 0;
-         return 1;
+         fixP->fx_done = 0;
+         return;
 
        default:
          {
-           const char *reloc_name = bfd_get_reloc_code_name (fixp->fx_r_type);
+           const char *reloc_name = bfd_get_reloc_code_name (fixP->fx_r_type);
 
            if (reloc_name != NULL)
              fprintf (stderr, "Gas failure, reloc type %s\n", reloc_name);
            else
-             fprintf (stderr, "Gas failure, reloc type #%i\n", fixp->fx_r_type);
+             fprintf (stderr, "Gas failure, reloc type #%i\n", fixP->fx_r_type);
            fflush (stderr);
            abort ();
          }
        }
 
-      fixp->fx_offset = value;
+      fixP->fx_offset = value;
     }
-
-  return 1;
 }
 
 /* Generate a reloc for a fixup.  */
index 67d9117534a043735ff62ed782fdb5c4f68eab25..1837b1ab4448eb960cc91a67334ee2fc94ffc134 100644 (file)
@@ -85,9 +85,6 @@ extern int target_big_endian;
 /* We don't need to handle .word strangely.  */
 #define WORKING_DOT_WORD
 
-/* We set the fx_done field appropriately in md_apply_fix.  */
-#define TC_HANDLES_FX_DONE
-
 #define md_number_to_chars           number_to_chars_bigendian
 
 #define md_do_align(n, fill, len, max, around)                          \
@@ -108,9 +105,6 @@ if (fragP->fr_type == rs_align_code)                                        \
                           - fragP->fr_address                          \
                           - fragP->fr_fix));
 
-/* call md_apply_fix3 with segment instead of md_apply_fix */
-#define MD_APPLY_FIX3
-
 /* call md_pcrel_from_section, not md_pcrel_from */
 #define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from_section(FIXP, SEC)
 extern long md_pcrel_from_section PARAMS ((struct fix *, segT));
index 1bf258948f44b087ec703fc4f3df94aeaf2e8ed6..654fc0f51dcf111a2731b2ec8e06dee6a11ccdf8 100644 (file)
@@ -2377,7 +2377,7 @@ sh_frob_file ()
 }
 
 /* Called after relaxing.  Set the correct sizes of the fragments, and
-   create relocs so that md_apply_fix will fill in the correct values.  */
+   create relocs so that md_apply_fix3 will fill in the correct values.  */
 
 void
 md_convert_frag (headers, seg, fragP)
@@ -2769,24 +2769,16 @@ sh_elf_final_processing ()
 
 /* Apply a fixup to the object file.  */
 
-#ifdef BFD_ASSEMBLER
-int
-md_apply_fix (fixP, valp)
-     fixS *fixP;
-     valueT *valp;
-#else
 void
-md_apply_fix (fixP, val)
-     fixS *fixP;
-     long val;
-#endif
+md_apply_fix3 (fixP, valP, seg)
+     fixS * fixP;
+     valueT * valP;
+     segT seg ATTRIBUTE_UNUSED;
 {
   char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
   int lowbyte = target_big_endian ? 1 : 0;
   int highbyte = target_big_endian ? 0 : 1;
-#ifdef BFD_ASSEMBLER
-  long val = *valp;
-#endif
+  long val = * (long *) valP;
   long max, min;
   int shift;
 
@@ -2812,11 +2804,11 @@ md_apply_fix (fixP, val)
             we need.  FIXME.  */
        case BFD_RELOC_16:
          bfd_set_error (bfd_error_bad_value);
-         return false;
+         return;
 
        case BFD_RELOC_8:
          bfd_set_error (bfd_error_bad_value);
-         return false;
+         return;
        }
     }
 
@@ -2966,17 +2958,13 @@ md_apply_fix (fixP, val)
     case BFD_RELOC_VTABLE_INHERIT:
     case BFD_RELOC_VTABLE_ENTRY:
       fixP->fx_done = 0;
-#ifdef BFD_ASSEMBLER
-      return 0;
-#else
       return;
-#endif
 
 #ifdef OBJ_ELF
     case BFD_RELOC_32_PLT_PCREL:
       /* Make the jump instruction point to the address of the operand.  At
         runtime we merely add the offset to the actual PLT entry.  */
-      *valp = 0xfffffffc;
+      * valP = 0xfffffffc;
       break;
 
     case BFD_RELOC_SH_GOTPC:
@@ -2996,12 +2984,12 @@ md_apply_fix (fixP, val)
          earlier versions of the PIC patches, the pcrel_adjust field
          was used to store the correction, but since the expression is
          not pcrel, I felt it would be confusing to do it this way.  */
-      *valp -= 1;
+      * valP -= 1;
       md_number_to_chars (buf, val, 4);
       break;
 
     case BFD_RELOC_32_GOT_PCREL:
-      *valp = 0; /* Fully resolved at runtime.  No addend.  */
+      * valP = 0; /* Fully resolved at runtime.  No addend.  */
       md_number_to_chars (buf, 0, 4);
       break;
 
@@ -3026,9 +3014,8 @@ md_apply_fix (fixP, val)
   if (max != 0 && (val < min || val > max))
     as_bad_where (fixP->fx_file, fixP->fx_line, _("offset out of range"));
 
-#ifdef BFD_ASSEMBLER
-  return 0;
-#endif
+  if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
+    fixP->fx_done = 1;
 }
 
 /* Called just before address relaxation.  Return the length
@@ -3259,7 +3246,7 @@ sh_coff_reloc_mangle (seg, fix, intr, paddr)
     {
       /* We can't store the offset in the object file, since this
         reloc does not take up any space, so we store it in r_offset.
-        The fx_addnumber field was set in md_apply_fix.  */
+        The fx_addnumber field was set in md_apply_fix3.  */
       intr->r_offset = fix->fx_addnumber;
     }
   else if (fix->fx_r_type == BFD_RELOC_SH_COUNT)
index 138fc337b6a6052b3157d870c32d983dcec16496..920fce47ae42ada0e05534a0826c707a0cf39909 100644 (file)
@@ -163,7 +163,6 @@ extern int tc_coff_sizemachdep PARAMS ((fragS *));
 
 /* Whether or not the target is big endian */
 extern int target_big_endian;
-
 #ifdef TE_LINUX
 #define TARGET_FORMAT (!target_big_endian ? "elf32-sh-linux" : "elf32-shbig-linux")
 #else
index 0809383a14d1933b7d20b7b520a6066a1f29b166..f1639a3f1666685f1b1098416a87e7311e0c50db 100644 (file)
@@ -2881,18 +2881,16 @@ md_number_to_chars (buf, val, n)
 /* Apply a fixS to the frags, now that we know the value it ought to
    hold.  */
 
-int
-md_apply_fix3 (fixP, value, segment)
+void
+md_apply_fix3 (fixP, valP, segment)
      fixS *fixP;
-     valueT *value;
+     valueT *valP;
      segT segment;
 {
   char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
-  offsetT val;
+  offsetT val = * (offsetT *) valP;
   long insn;
 
-  val = *value;
-
   assert (fixP->fx_r_type < BFD_RELOC_UNUSED);
 
   fixP->fx_addnumber = val;    /* Remember value for emit_reloc.  */
@@ -2928,7 +2926,7 @@ md_apply_fix3 (fixP, value, segment)
          && ! bfd_is_com_section (seg))
        fixP->fx_addnumber -= S_GET_VALUE (sym);
 
-      return 1;
+      return;
     }
 #endif
 
@@ -2999,7 +2997,7 @@ md_apply_fix3 (fixP, value, segment)
            || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
     {
       fixP->fx_done = 0;
-      return 1;
+      return;
     }
   else
     {
@@ -3171,14 +3169,10 @@ md_apply_fix3 (fixP, value, segment)
        case BFD_RELOC_SPARC_LM22:
        case BFD_RELOC_HI22:
          if (!fixP->fx_addsy)
-           {
-             insn |= (val >> 10) & 0x3fffff;
-           }
+           insn |= (val >> 10) & 0x3fffff;
          else
-           {
-             /* FIXME: Need comment explaining why we do this.  */
-             insn &= ~0xffff;
-           }
+           /* FIXME: Need comment explaining why we do this.  */
+           insn &= ~0xffff;
          break;
 
        case BFD_RELOC_SPARC22:
@@ -3194,14 +3188,10 @@ md_apply_fix3 (fixP, value, segment)
 
        case BFD_RELOC_LO10:
          if (!fixP->fx_addsy)
-           {
-             insn |= val & 0x3ff;
-           }
+           insn |= val & 0x3ff;
          else
-           {
-             /* FIXME: Need comment explaining why we do this.  */
-             insn &= ~0xff;
-           }
+           /* FIXME: Need comment explaining why we do this.  */
+           insn &= ~0xff;
          break;
 
        case BFD_RELOC_SPARC_OLO10:
@@ -3272,8 +3262,6 @@ md_apply_fix3 (fixP, value, segment)
   /* Are we finished with this relocation now?  */
   if (fixP->fx_addsy == 0 && !fixP->fx_pcrel)
     fixP->fx_done = 1;
-
-  return 1;
 }
 
 /* Translate internal representation of relocation info to BFD target
index f231f1d84d72d80bfb3ed683fcb3ff7d15a57578..78653d7ea3510d07437612f307286448013d5063 100644 (file)
@@ -1,6 +1,6 @@
 /* tc-sparc.h - Macros and type defines for the sparc.
    Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-   1999, 2000 Free Software Foundation, Inc.
+   1999, 2000, 2001 Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
@@ -110,9 +110,6 @@ extern void sparc_handle_align PARAMS ((struct frag *));
 extern int elf32_sparc_force_relocation PARAMS ((struct fix *));
 #endif
 
-#define MD_APPLY_FIX3
-#define TC_HANDLES_FX_DONE
-
 #ifdef OBJ_ELF
 /* Keep relocations against global symbols.  Don't turn them into
    relocations against sections.  This is required for the dynamic
index 9f450e5093aab462ca3c886a4c79fc13b2b43a89..4848e52bac527b242619727fb8dbab8db79ffc3f 100644 (file)
@@ -470,11 +470,12 @@ md_number_to_imm (con, value, nbytes)
 #endif /* comment */
 
 void
-tc_apply_fix (fixP, val)
-     fixS *fixP;
-     long val;
+md_apply_fix3 (fixP, valP, seg)
+     fixS *fixP ATTRIBUTE_UNUSED;
+     valueT * valP ATTRIBUTE_UNUSED;
+     segT seg ATTRIBUTE_UNUSED:
 {
-  /* should never be called */
+  /* Should never be called.  */
   know (0);
 }
 
index 21f2ad9fac059de03ab76012c527dd3ae05763a3..1258b1317d54a2354b7df98723ff04c61ac61e85 100644 (file)
@@ -1559,10 +1559,11 @@ md_convert_frag (abfd, sec, fragP)
   debug ("In md_convert_frag()\n");
 }
 
-int
-md_apply_fix (fixP, valP)
+void
+md_apply_fix3 (fixP, valP, seg)
      fixS *fixP;
      valueT *valP;
+     segT seg ATTRIBUTE_UNUSED;
 {
   valueT value = *valP;
 
@@ -1574,15 +1575,18 @@ md_apply_fix (fixP, valP)
   debug ("fx_offset = %d\n", (int) fixP->fx_offset);
   {
     char *buf = fixP->fx_frag->fr_literal + fixP->fx_where;
+
     value /= INSN_SIZE;
     if (fixP->fx_size == 1)
-      {                                /* Special fix for LDP instruction.  */
-       value = (value & 0x00FF0000) >> 16;
-      }
+      /* Special fix for LDP instruction.  */
+      value = (value & 0x00FF0000) >> 16;
+
     debug ("new value = %ld\n", (long) value);
     md_number_to_chars (buf, value, fixP->fx_size);
   }
-  return 1;
+
+  if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
+    fixP->fx_done = 1;
 }
 
 int
index a61e0a6a8b1d16f5d5e6ae4d2f8b2cab4b0df17a..094203a9afd576a808c5cc45e6e456ccb65dc765 100644 (file)
@@ -5335,19 +5335,20 @@ tic54x_cons_fix_new (fragS *frag, int where, int octets, expressionS *exp)
 
    If fixp->fx_addsy is non-NULL, we'll have to generate a reloc entry.   */
 
-int
-md_apply_fix (fixP, valP)
+void
+md_apply_fix3 (fixP, valP, seg)
      fixS *fixP;
-     valueT *valP;
+     valueT * valP;
+     segT seg ATTRIBUTE_UNUSED;
 {
   char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
-  valueT val = *valP;
+  valueT val = * valP;
 
   switch (fixP->fx_r_type)
     {
     default:
       as_fatal ("Bad relocation type: 0x%02x", fixP->fx_r_type);
-      return 0;
+      return;
     case BFD_RELOC_TIC54X_MS7_OF_23:
       val = (val >> 16) & 0x7F;
       /* Fall through.  */
@@ -5381,7 +5382,8 @@ md_apply_fix (fixP, valP)
       break;
     }
 
-  return 0; /* Return value is ignored.  */
+  if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
+    fixP->fx_done = 1;
 }
 
 /* This is our chance to record section alignment
index 585865f24359c1edc06ed73f0c260a03709730d3..ce1251cf8c1d9e46b697420b91ab5516bf226943 100644 (file)
@@ -960,10 +960,12 @@ TIc80 options:\n\
    To indicate that a fixup has been eliminated, set fixP->fx_done.  */
 
 void
-md_apply_fix (fixP, val)
+md_apply_fix3 (fixP, valP, seg)
      fixS *fixP;
-     long val;
+     valueT * valP;
+     segT seg ATTRIBUTE_UNUSED;
 {
+  long val = * (long *) valP;
   char *dest = fixP->fx_frag->fr_literal + fixP->fx_where;
   int overflow;
 
@@ -1001,6 +1003,9 @@ md_apply_fix (fixP, val)
                        fixP->fx_r_type);
       break;
     }
+
+  if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
+    fixP->fx_done = 1;
 }
 \f
 /* Functions concerning relocs.  */
index 5e104f841f75ea2f8bbe734c426aa27d147175ae..8f12245ead823bf6f989cb30a34d88c2de9417b7 100644 (file)
@@ -2210,7 +2210,7 @@ md_assemble (str)
      BFD_RELOC_UNUSED plus the operand index.  This lets us easily
      handle fixups for any operand type, although that is admittedly
      not a very exciting feature.  We pick a BFD reloc type in
-     md_apply_fix.  */
+     md_apply_fix3.  */
   for (i = 0; i < fc; i++)
     {
       const struct v850_operand *operand;
@@ -2340,52 +2340,51 @@ v850_pcrel_from_section (fixp, section)
   return fixp->fx_frag->fr_address + fixp->fx_where;
 }
 
-int
-md_apply_fix3 (fixp, valuep, seg)
-     fixS *fixp;
-     valueT *valuep;
+void
+md_apply_fix3 (fixP, valueP, seg)
+     fixS *fixP;
+     valueT *valueP;
      segT seg ATTRIBUTE_UNUSED;
 {
-  valueT value;
+  valueT value = * valueP;
   char *where;
 
-  if (fixp->fx_r_type == BFD_RELOC_VTABLE_INHERIT
-      || fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
+  if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
+      || fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
     {
-      fixp->fx_done = 0;
-      return 1;
+      fixP->fx_done = 0;
+      return;
     }
 
-  if (fixp->fx_addsy == (symbolS *) NULL)
-    {
-      value = *valuep;
-      fixp->fx_done = 1;
-    }
-  else if (fixp->fx_pcrel)
-    value = *valuep;
+  if (fixP->fx_addsy == (symbolS *) NULL)
+    fixP->fx_done = 1;
+
+  else if (fixP->fx_pcrel)
+    ;
+
   else
     {
-      value = fixp->fx_offset;
-      if (fixp->fx_subsy != (symbolS *) NULL)
+      value = fixP->fx_offset;
+      if (fixP->fx_subsy != (symbolS *) NULL)
        {
-         if (S_GET_SEGMENT (fixp->fx_subsy) == absolute_section)
-           value -= S_GET_VALUE (fixp->fx_subsy);
+         if (S_GET_SEGMENT (fixP->fx_subsy) == absolute_section)
+           value -= S_GET_VALUE (fixP->fx_subsy);
          else
            {
              /* We don't actually support subtracting a symbol.  */
-             as_bad_where (fixp->fx_file, fixp->fx_line,
+             as_bad_where (fixP->fx_file, fixP->fx_line,
                            _("expression too complex"));
            }
        }
     }
 
-  if ((int) fixp->fx_r_type >= (int) BFD_RELOC_UNUSED)
+  if ((int) fixP->fx_r_type >= (int) BFD_RELOC_UNUSED)
     {
       int opindex;
       const struct v850_operand *operand;
       unsigned long insn;
 
-      opindex = (int) fixp->fx_r_type - (int) BFD_RELOC_UNUSED;
+      opindex = (int) fixP->fx_r_type - (int) BFD_RELOC_UNUSED;
       operand = &v850_operands[opindex];
 
       /* Fetch the instruction, insert the fully resolved operand
@@ -2393,53 +2392,50 @@ md_apply_fix3 (fixp, valuep, seg)
 
         Note the instruction has been stored in little endian
         format!  */
-      where = fixp->fx_frag->fr_literal + fixp->fx_where;
+      where = fixP->fx_frag->fr_literal + fixP->fx_where;
 
       insn = bfd_getl32 ((unsigned char *) where);
       insn = v850_insert_operand (insn, operand, (offsetT) value,
-                                 fixp->fx_file, fixp->fx_line, NULL);
+                                 fixP->fx_file, fixP->fx_line, NULL);
       bfd_putl32 ((bfd_vma) insn, (unsigned char *) where);
 
-      if (fixp->fx_done)
-       {
-         /* Nothing else to do here.  */
-         return 1;
-       }
+      if (fixP->fx_done)
+       /* Nothing else to do here.  */
+       return;
 
       /* Determine a BFD reloc value based on the operand information.
         We are only prepared to turn a few of the operands into relocs.  */
 
       if (operand->bits == 22)
-       fixp->fx_r_type = BFD_RELOC_V850_22_PCREL;
+       fixP->fx_r_type = BFD_RELOC_V850_22_PCREL;
       else if (operand->bits == 9)
-       fixp->fx_r_type = BFD_RELOC_V850_9_PCREL;
+       fixP->fx_r_type = BFD_RELOC_V850_9_PCREL;
       else
        {
 #if 0
          fprintf (stderr, "bits: %d, insn: %x\n", operand->bits, insn);
 #endif
 
-         as_bad_where (fixp->fx_file, fixp->fx_line,
+         as_bad_where (fixP->fx_file, fixP->fx_line,
                        _("unresolved expression that must be resolved"));
-         fixp->fx_done = 1;
-         return 1;
+         fixP->fx_done = 1;
+         return;
        }
     }
-  else if (fixp->fx_done)
+  else if (fixP->fx_done)
     {
       /* We still have to insert the value into memory!  */
-      where = fixp->fx_frag->fr_literal + fixp->fx_where;
+      where = fixP->fx_frag->fr_literal + fixP->fx_where;
 
-      if (fixp->fx_size == 1)
+      if (fixP->fx_size == 1)
        *where = value & 0xff;
-      else if (fixp->fx_size == 2)
+      else if (fixP->fx_size == 2)
        bfd_putl16 (value & 0xffff, (unsigned char *) where);
-      else if (fixp->fx_size == 4)
+      else if (fixP->fx_size == 4)
        bfd_putl32 (value, (unsigned char *) where);
     }
 
-  fixp->fx_addnumber = value;
-  return 1;
+  fixP->fx_addnumber = value;
 }
 \f
 /* Parse a cons expression.  We have to handle hi(), lo(), etc
index ff94ebf30eb1ae7ad2c77b88c7c5b9f996b9d8a9..84c6270da2c414d8fcab5eb57dee938d08c9e26e 100644 (file)
@@ -34,7 +34,6 @@
 /* The target BFD format.  */
 #define TARGET_FORMAT          "elf32-v850"
 
-#define MD_APPLY_FIX3
 #define md_operand(x)
 
 #define obj_fix_adjustable(fixP) v850_fix_adjustable(fixP)
index 8400b5d79e0ce39419692233ae0eec984940f64d..b6dc876436234b03df95a02c8bc74820b87f4df9 100644 (file)
@@ -289,12 +289,18 @@ md_number_to_chars (con, value, nbytes)
    that they reference.  */
 
 void                           /* Knows about order of bytes in address.  */
-md_apply_fix (fixP, value)
-     fixS *fixP;
-     long value;
+md_apply_fix3 (fixP, valueP, seg)
+     fixS * fixP;
+     valueT * valueP;
+     segT seg ATTRIBUTE_UNUSED;
 {
+  valueT value = * valueP;
+
   number_to_chars_littleendian (fixP->fx_where + fixP->fx_frag->fr_literal,
-                               (valueT) value, fixP->fx_size);
+                               value, fixP->fx_size);
+
+  if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
+    fixP->fx_done = 1;
 }
 
 long
index dda88590677d2fec0a27c8f91044560b820c965f..b3ddc68507801eb45f048bc2e19d96eb24ea3ed6 100644 (file)
@@ -978,10 +978,12 @@ md_section_align (seg, size)
 }
 
 void
-md_apply_fix (fixP, val)
+md_apply_fix3 (fixP, valP, seg)
      fixS *fixP;
-     long val;
+     vauleT * valP;
+     segT seg ATTRIBUTE_UNUSED;
 {
+  long val = * (long *) valP;
   char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
   int addr = fixP->fx_frag->fr_address + fixP->fx_where;
 
@@ -1030,9 +1032,12 @@ md_apply_fix (fixP, val)
     default:
       abort ();
     }
+
+  if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
+    fixP->fx_done = 1;
 }
 
-/* Put number into target byte order */
+/* Put number into target byte order */
 
 void
 md_number_to_chars (ptr, use, nbytes)
index bf83b2719560b4feb76b97ef6d693f869aaf8427..f5b05a632f9c4626deffdbd7f139e3f79ffd4330 100644 (file)
@@ -1405,10 +1405,12 @@ md_section_align (seg, size)
 }
 
 void
-md_apply_fix (fixP, val)
+md_apply_fix3 (fixP, valP, segment)
      fixS *fixP;
-     long val;
+     valueT * valP;
+     segT segment ATTRIBUTE_UNUSED;
 {
+  long val = * (long *) valP;
   char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
 
   switch (fixP->fx_r_type)
@@ -1464,6 +1466,9 @@ md_apply_fix (fixP, val)
     default:
       abort ();
     }
+
+  if (fixP->fx_addsy == NULL && fixP->fx_pcrel == 0)
+    fixP->fx_done = 1;
 }
 
 int
index 03162e044c53407d1423715f6f028f9df3c75aae..4abf0d951e52270fff829d8adab57f9016c1dc50 100644 (file)
@@ -512,7 +512,7 @@ A number which is added into the fixup.
 
 @item fx_addnumber
 Some CPU backends use this field to convey information between
-@code{md_apply_fix} and @code{tc_gen_reloc}.  The machine independent code does
+@code{md_apply_fix3} and @code{tc_gen_reloc}.  The machine independent code does
 not use it.
 
 @item fx_next
@@ -1235,17 +1235,17 @@ information removed.  Depending upon the processing performed by
 @code{md_convert_frag} the frag information may or may not be necessary, as may
 the resolved values of the symbols.  The default value is 1.
 
-@item md_apply_fix
-@cindex md_apply_fix
+@item md_apply_fix3
+@cindex md_apply_fix3
 GAS will call this for each fixup.  It should store the correct value in the
 object file.  @code{fixup_segment} performs a generic overflow check on the
-@code{valueT *val} argument after @code{md_apply_fix} returns.  If the overflow
-check is relevant for the target machine, then @code{md_apply_fix} should
+@code{valueT *val} argument after @code{md_apply_fix3} returns.  If the overflow
+check is relevant for the target machine, then @code{md_apply_fix3} should
 modify @code{valueT *val}, typically to the value stored in the object file.
 
 @item TC_HANDLES_FX_DONE
 @cindex TC_HANDLES_FX_DONE
-If this macro is defined, it means that @code{md_apply_fix} correctly sets the
+If this macro is defined, it means that @code{md_apply_fix3} correctly sets the
 @code{fx_done} field in the fixup.
 
 @item tc_gen_reloc
index 6becfb8c67d1538fa434699e8a63253c52d59c3f..c8cb13c3925e30a38e67fdc8f49f816c48b2a0e8 100644 (file)
--- a/gas/tc.h
+++ b/gas/tc.h
@@ -71,11 +71,9 @@ void md_number_to_chars PARAMS ((char *buf, valueT val, int n));
 void md_operand PARAMS ((expressionS * expressionP));
 #endif
 
-#ifdef MD_APPLY_FIX3
-int md_apply_fix3 PARAMS ((fixS * fixP, valueT *val, segT seg));
-#endif
+void md_apply_fix3 PARAMS ((fixS *, valueT *, segT));
+
 #ifdef BFD_ASSEMBLER
-int md_apply_fix PARAMS ((fixS * fixP, valueT *val));
 #ifndef md_convert_frag
 void md_convert_frag PARAMS ((bfd * headers, segT sec, fragS * fragP));
 #endif
@@ -88,7 +86,6 @@ extern arelent *tc_gen_reloc PARAMS ((asection *, fixS *));
 extern arelent **tc_gen_reloc PARAMS ((asection *, fixS *));
 #endif
 #else /* not BFD_ASSEMBLER */
-void md_apply_fix PARAMS ((fixS * fixP, long val));
 #ifndef md_convert_frag
 void md_convert_frag PARAMS ((object_headers * headers, segT, fragS * fragP));
 #endif
index 70220155d3d67869dff7d89ff72ed366a75c2c5b..817633589bfa9eea9daf4b218bb4dec37073792a 100644 (file)
@@ -2558,7 +2558,7 @@ relax_segment (segment_frag_root, segment)
    Go through all the fixS's in a segment and see which ones can be
    handled now.  (These consist of fixS where we have since discovered
    the value of a symbol, or the address of the frag involved.)
-   For each one, call md_apply_fix to put the fix into the frag data.
+   For each one, call md_apply_fix3 to put the fix into the frag data.
 
    Result is a count of how many relocation structs will be needed to
    handle the remaining fixS's that we couldn't completely handle here.
@@ -2869,25 +2869,7 @@ fixup_segment (fixP, this_segment_type)
        }
 
       if (!fixP->fx_done)
-       {
-#ifdef MD_APPLY_FIX3
-         md_apply_fix3 (fixP, &add_number, this_segment_type);
-#else
-#ifdef BFD_ASSEMBLER
-         md_apply_fix (fixP, &add_number);
-#else
-         md_apply_fix (fixP, add_number);
-#endif
-#endif
-
-#ifndef TC_HANDLES_FX_DONE
-         /* If the tc-* files haven't been converted, assume it's handling
-            it the old way, where a null fx_addsy means that the fix has
-            been applied completely, and no further work is needed.  */
-         if (fixP->fx_addsy == 0 && fixP->fx_pcrel == 0)
-           fixP->fx_done = 1;
-#endif
-       }
+       md_apply_fix3 (fixP, & add_number, this_segment_type);
 
       if (!fixP->fx_bit_fixP && !fixP->fx_no_overflow && size > 0)
        {