(tc_gen_reloc): Handle the case where the reloc is the difference of two
symbols defined in the same section.
This commit is contained in:
parent
406a7f05f4
commit
77ccfee5d2
@ -1,5 +1,9 @@
|
||||
2005-03-03 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* config/tc-mn10200.c (tc_gen_reloc): Handle the case where the
|
||||
reloc is the difference of two symbols defined in the same
|
||||
section.
|
||||
|
||||
* config/tc-iq2000.c (line_comment_chars): Include the # character
|
||||
as otherwise this breaks #APP/#NO_APP processing.
|
||||
|
||||
|
@ -1235,17 +1235,24 @@ tc_gen_reloc (seg, fixp)
|
||||
|
||||
if (fixp->fx_subsy != NULL)
|
||||
{
|
||||
/* FIXME: We should resolve difference expressions if possible
|
||||
here. At least this is better than silently ignoring the
|
||||
subtrahend. */
|
||||
as_bad_where (fixp->fx_file, fixp->fx_line,
|
||||
_("can't resolve `%s' {%s section} - `%s' {%s section}"),
|
||||
fixp->fx_addsy ? S_GET_NAME (fixp->fx_addsy) : "0",
|
||||
segment_name (fixp->fx_addsy
|
||||
? S_GET_SEGMENT (fixp->fx_addsy)
|
||||
: absolute_section),
|
||||
S_GET_NAME (fixp->fx_subsy),
|
||||
segment_name (S_GET_SEGMENT (fixp->fx_addsy)));
|
||||
if (S_GET_SEGMENT (fixp->fx_addsy) == S_GET_SEGMENT (fixp->fx_subsy)
|
||||
&& S_IS_DEFINED (fixp->fx_subsy))
|
||||
{
|
||||
fixp->fx_offset -= S_GET_VALUE (fixp->fx_subsy);
|
||||
fixp->fx_subsy = NULL;
|
||||
}
|
||||
else
|
||||
/* FIXME: We should try more ways to resolve difference expressions
|
||||
here. At least this is better than silently ignoring the
|
||||
subtrahend. */
|
||||
as_bad_where (fixp->fx_file, fixp->fx_line,
|
||||
_("can't resolve `%s' {%s section} - `%s' {%s section}"),
|
||||
fixp->fx_addsy ? S_GET_NAME (fixp->fx_addsy) : "0",
|
||||
segment_name (fixp->fx_addsy
|
||||
? S_GET_SEGMENT (fixp->fx_addsy)
|
||||
: absolute_section),
|
||||
S_GET_NAME (fixp->fx_subsy),
|
||||
segment_name (S_GET_SEGMENT (fixp->fx_addsy)));
|
||||
}
|
||||
|
||||
reloc->howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type);
|
||||
|
Loading…
Reference in New Issue
Block a user