by md_pcrel_from if we are relocating against a symbol (we still
need md_pcrel_from for a PC relative relocation within the same
file).
* config/tc-m88k.c (md_pcrel_from): Corrected return value.
Thu Jul 15 11:51:03 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+ * config/obj-coffbfd.c (fixup_segment): If TC_M88K, don't adjust
+ by md_pcrel_from if we are relocating against a symbol (we still
+ need md_pcrel_from for a PC relative relocation within the same
+ file).
+ * config/tc-m88k.c (md_pcrel_from): Corrected return value.
+
* Preliminary support for m88k-coff.
* configure.in (m88k-*-coff*): New target. Use coffbfd and
m88kcoff.
if (pcrel)
{
+#ifndef TC_M88K
+ /* This adjustment is not correct on the m88k, for which the
+ linker does all the computation. */
add_number -= md_pcrel_from (fixP);
+#endif
if (add_symbolP == 0)
{
fixP->fx_addsy = &abs_symbol;
md_pcrel_from (fixp)
fixS *fixp;
{
- return fixp->fx_frag->fr_address + fixp->fx_where + 4;
+ switch (fixp->fx_r_type)
+ {
+ case RELOC_PC16:
+ return fixp->fx_frag->fr_address + fixp->fx_where - 2;
+ case RELOC_PC26:
+ return fixp->fx_frag->fr_address + fixp->fx_where;
+ default:
+ abort ();
+ }
+ /*NOTREACHED*/
}
#endif /* M88KCOFF */