Mon Nov 1 21:37:04 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+ * Add support for marker type relocations. These mark areas
+ of interest to the linker. ENTRY/EXIT relocations for SOM are
+ an example of marker relocations.
+ * write.c (write_relocs): Instead of assuming size of a relocation
+ is 4 bytes, pick up the size from relocation itself.
+ (fixup_segment): Do not complain that a value is too small for
+ marker relocations.
+
* struc-symbol.h: Add new "sy_used" field to the symbol structure.
* expr.c (operand): Set sy_used for any symbol used as an operand.
(expr): Likewise for any symbol used in an expression.
continue;
}
data = fixp->fx_frag->fr_literal + fixp->fx_where;
- /* @@ Assumes max size of reloc is 4. */
- if (fixp->fx_where + 4
+ if (fixp->fx_where + fixp->fx_size
> fixp->fx_frag->fr_fix + fixp->fx_frag->fr_offset)
abort ();
/* Pass bogus address so that when bfd_perform_relocation adds
assert(i <= n);
}
data = fixp->fx_frag->fr_literal + fixp->fx_where;
- if (fixp->fx_where + 4
+ if (fixp->fx_where + fixp->fx_size
> fixp->fx_frag->fr_fix + fixp->fx_frag->fr_offset)
abort ();
for (j = 0; reloc[j]; j++)
} /* if there's an add_symbol */
} /* if pcrel */
- if (!fixP->fx_bit_fixP)
+ if (!fixP->fx_bit_fixP && size > 0)
{
valueT mask = 0;
/* set all bits to one */