yann@1
|
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
|
2 |
See also http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2004-July/023128.html,
|
yann@1
|
3 |
"[CRITICAL PATCH] 2.6: fix silent build error]"
|
yann@1
|
4 |
|
yann@1
|
5 |
Revision 1.169, Fri Jul 2 11:12:29 2004 UTC (19 hours, 4 minutes ago) by nickc
|
yann@1
|
6 |
Branch: MAIN
|
yann@1
|
7 |
CVS Tags: binutils_latest_snapshot, HEAD
|
yann@1
|
8 |
Changes since 1.168: +14 -1 lines
|
yann@1
|
9 |
|
yann@1
|
10 |
(md_apply_fix3:BFD_RELOC_ARM_IMMEDIATE): Do not allow values which have come
|
yann@1
|
11 |
from undefined symbols.
|
yann@1
|
12 |
Always consider this fixup to have been processed as a reloc cannot be
|
yann@1
|
13 |
generated for it.
|
yann@1
|
14 |
|
yann@1
|
15 |
|
yann@1
|
16 |
===================================================================
|
yann@1
|
17 |
RCS file: /cvs/src/src/gas/config/tc-arm.c,v
|
yann@1
|
18 |
retrieving revision 1.168
|
yann@1
|
19 |
retrieving revision 1.169
|
yann@1
|
20 |
diff -u -r1.168 -r1.169
|
yann@1
|
21 |
--- src/gas/config/tc-arm.c 2004/04/30 10:51:12 1.168
|
yann@1
|
22 |
+++ src/gas/config/tc-arm.c 2004/07/02 11:12:29 1.169
|
yann@1
|
23 |
@@ -12186,6 +12186,20 @@
|
yann@1
|
24 |
switch (fixP->fx_r_type)
|
yann@1
|
25 |
{
|
yann@1
|
26 |
case BFD_RELOC_ARM_IMMEDIATE:
|
yann@1
|
27 |
+ /* We claim that this fixup has been processed here,
|
yann@1
|
28 |
+ even if in fact we generate an error because we do
|
yann@1
|
29 |
+ not have a reloc for it, so tc_gen_reloc will reject it. */
|
yann@1
|
30 |
+ fixP->fx_done = 1;
|
yann@1
|
31 |
+
|
yann@1
|
32 |
+ if (fixP->fx_addsy
|
yann@1
|
33 |
+ && ! S_IS_DEFINED (fixP->fx_addsy))
|
yann@1
|
34 |
+ {
|
yann@1
|
35 |
+ as_bad_where (fixP->fx_file, fixP->fx_line,
|
yann@1
|
36 |
+ _("undefined symbol %s used as an immediate value"),
|
yann@1
|
37 |
+ S_GET_NAME (fixP->fx_addsy));
|
yann@1
|
38 |
+ break;
|
yann@1
|
39 |
+ }
|
yann@1
|
40 |
+
|
yann@1
|
41 |
newimm = validate_immediate (value);
|
yann@1
|
42 |
temp = md_chars_to_number (buf, INSN_SIZE);
|
yann@1
|
43 |
|
yann@1
|
44 |
@@ -12202,7 +12216,6 @@
|
yann@1
|
45 |
|
yann@1
|
46 |
newimm |= (temp & 0xfffff000);
|
yann@1
|
47 |
md_number_to_chars (buf, (valueT) newimm, INSN_SIZE);
|
yann@1
|
48 |
- fixP->fx_done = 1;
|
yann@1
|
49 |
break;
|
yann@1
|
50 |
|
yann@1
|
51 |
case BFD_RELOC_ARM_ADRL_IMMEDIATE:
|