* 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.
This commit is contained in:
Ian Lance Taylor 1993-07-15 20:23:43 +00:00
parent 6585e9e347
commit 2368ec638a
3 changed files with 20 additions and 1 deletions

View File

@ -1,5 +1,11 @@
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.

View File

@ -2529,7 +2529,11 @@ DEFUN (fixup_segment, (segP, this_segment_type),
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;

View File

@ -1442,7 +1442,16 @@ long
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 */