(md_apply_fix3:BFD_RELOC_ARM_IMMEDIATE): Do not allow values which have come
from undefined symbols. Always consider this fixup to have been processed as a reloc cannot be generated for it.
This commit is contained in:
parent
6a9cf61e0f
commit
310ea3086d
2 changed files with 21 additions and 1 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2004-07-02 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* config/tc-arm.c (md_apply_fix3:BFD_RELOC_ARM_IMMEDIATE): Do not
|
||||||
|
allow values which have come from undefined symbols.
|
||||||
|
Always consider this fixup to have been processed as a reloc
|
||||||
|
cannot be generated for it.
|
||||||
|
|
||||||
2004-07-02 Alan Modra <amodra@bigpond.net.au>
|
2004-07-02 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
* frags.h (struct frag): Add has_code and insn_addr fields.
|
* frags.h (struct frag): Add has_code and insn_addr fields.
|
||||||
|
|
|
@ -12186,6 +12186,20 @@ md_apply_fix3 (fixP, valP, seg)
|
||||||
switch (fixP->fx_r_type)
|
switch (fixP->fx_r_type)
|
||||||
{
|
{
|
||||||
case BFD_RELOC_ARM_IMMEDIATE:
|
case BFD_RELOC_ARM_IMMEDIATE:
|
||||||
|
/* We claim that this fixup has been processed here,
|
||||||
|
even if in fact we generate an error because we do
|
||||||
|
not have a reloc for it, so tc_gen_reloc will reject it. */
|
||||||
|
fixP->fx_done = 1;
|
||||||
|
|
||||||
|
if (fixP->fx_addsy
|
||||||
|
&& ! S_IS_DEFINED (fixP->fx_addsy))
|
||||||
|
{
|
||||||
|
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||||
|
_("undefined symbol %s used as an immediate value"),
|
||||||
|
S_GET_NAME (fixP->fx_addsy));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
newimm = validate_immediate (value);
|
newimm = validate_immediate (value);
|
||||||
temp = md_chars_to_number (buf, INSN_SIZE);
|
temp = md_chars_to_number (buf, INSN_SIZE);
|
||||||
|
|
||||||
|
@ -12202,7 +12216,6 @@ md_apply_fix3 (fixP, valP, seg)
|
||||||
|
|
||||||
newimm |= (temp & 0xfffff000);
|
newimm |= (temp & 0xfffff000);
|
||||||
md_number_to_chars (buf, (valueT) newimm, INSN_SIZE);
|
md_number_to_chars (buf, (valueT) newimm, INSN_SIZE);
|
||||||
fixP->fx_done = 1;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BFD_RELOC_ARM_ADRL_IMMEDIATE:
|
case BFD_RELOC_ARM_ADRL_IMMEDIATE:
|
||||||
|
|
Loading…
Reference in a new issue