yann@1: From http://sources.redhat.com/cgi-bin/cvsweb.cgi/src/gas/config/tc-arm.c.diff?r1=1.168&r2=1.169&cvsroot=src yann@1: See also http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2004-July/023128.html, yann@1: "[CRITICAL PATCH] 2.6: fix silent build error]" yann@1: yann@1: Revision 1.169, Fri Jul 2 11:12:29 2004 UTC (19 hours, 4 minutes ago) by nickc yann@1: Branch: MAIN yann@1: CVS Tags: binutils_latest_snapshot, HEAD yann@1: Changes since 1.168: +14 -1 lines yann@1: yann@1: (md_apply_fix3:BFD_RELOC_ARM_IMMEDIATE): Do not allow values which have come yann@1: from undefined symbols. yann@1: Always consider this fixup to have been processed as a reloc cannot be yann@1: generated for it. yann@1: yann@1: yann@1: =================================================================== yann@1: RCS file: /cvs/src/src/gas/config/tc-arm.c,v yann@1: retrieving revision 1.168 yann@1: retrieving revision 1.169 yann@1: diff -u -r1.168 -r1.169 yann@1: --- src/gas/config/tc-arm.c 2004/04/30 10:51:12 1.168 yann@1: +++ src/gas/config/tc-arm.c 2004/07/02 11:12:29 1.169 yann@1: @@ -12186,6 +12186,20 @@ yann@1: switch (fixP->fx_r_type) yann@1: { yann@1: case BFD_RELOC_ARM_IMMEDIATE: yann@1: + /* We claim that this fixup has been processed here, yann@1: + even if in fact we generate an error because we do yann@1: + not have a reloc for it, so tc_gen_reloc will reject it. */ yann@1: + fixP->fx_done = 1; yann@1: + yann@1: + if (fixP->fx_addsy yann@1: + && ! S_IS_DEFINED (fixP->fx_addsy)) yann@1: + { yann@1: + as_bad_where (fixP->fx_file, fixP->fx_line, yann@1: + _("undefined symbol %s used as an immediate value"), yann@1: + S_GET_NAME (fixP->fx_addsy)); yann@1: + break; yann@1: + } yann@1: + yann@1: newimm = validate_immediate (value); yann@1: temp = md_chars_to_number (buf, INSN_SIZE); yann@1: yann@1: @@ -12202,7 +12216,6 @@ yann@1: yann@1: newimm |= (temp & 0xfffff000); yann@1: md_number_to_chars (buf, (valueT) newimm, INSN_SIZE); yann@1: - fixP->fx_done = 1; yann@1: break; yann@1: yann@1: case BFD_RELOC_ARM_ADRL_IMMEDIATE: