mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-23 03:29:47 +08:00
2009-03-18 Andrew Stubbs <ams@codesourcery.com>
gas/ * config/tc-arm.c (md_apply_fix): Check BFD_RELOC_ARM_IMMEDIATE and BFD_RELOC_ARM_ADRL_IMMEDIATE value is in the correct section. Check BFD_RELOC_ARM_ADRL_IMMEDIATE has a defined symbol. gas/testsuites/ * gas/arm/adr-invalid.d: New file. * gas/arm/adr-invalid.l: New file. * gas/arm/adr-invalid.s: New file.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2009-03-18 Andrew Stubbs <ams@codesourcery.com>
|
||||||
|
|
||||||
|
* config/tc-arm.c (md_apply_fix): Check BFD_RELOC_ARM_IMMEDIATE and
|
||||||
|
BFD_RELOC_ARM_ADRL_IMMEDIATE value is in the correct section.
|
||||||
|
Check BFD_RELOC_ARM_ADRL_IMMEDIATE has a defined symbol.
|
||||||
|
|
||||||
2009-03-18 Alan Modra <amodra@bigpond.net.au>
|
2009-03-18 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
* as.h: Include alloca-conf.h instead of config.h and remove
|
* as.h: Include alloca-conf.h instead of config.h and remove
|
||||||
|
@ -18537,6 +18537,15 @@ md_apply_fix (fixS * fixP,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (fixP->fx_addsy
|
||||||
|
&& S_GET_SEGMENT (fixP->fx_addsy) != seg)
|
||||||
|
{
|
||||||
|
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||||
|
_("symbol %s is in a different section"),
|
||||||
|
S_GET_NAME (fixP->fx_addsy));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
newimm = encode_arm_immediate (value);
|
newimm = encode_arm_immediate (value);
|
||||||
temp = md_chars_to_number (buf, INSN_SIZE);
|
temp = md_chars_to_number (buf, INSN_SIZE);
|
||||||
|
|
||||||
@ -18560,6 +18569,24 @@ md_apply_fix (fixS * fixP,
|
|||||||
unsigned int highpart = 0;
|
unsigned int highpart = 0;
|
||||||
unsigned int newinsn = 0xe1a00000; /* nop. */
|
unsigned int newinsn = 0xe1a00000; /* nop. */
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fixP->fx_addsy
|
||||||
|
&& S_GET_SEGMENT (fixP->fx_addsy) != seg)
|
||||||
|
{
|
||||||
|
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||||
|
_("symbol %s is in a different section"),
|
||||||
|
S_GET_NAME (fixP->fx_addsy));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
newimm = encode_arm_immediate (value);
|
newimm = encode_arm_immediate (value);
|
||||||
temp = md_chars_to_number (buf, INSN_SIZE);
|
temp = md_chars_to_number (buf, INSN_SIZE);
|
||||||
|
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2009-03-18 Andrew Stubbs <ams@codesourcery.com>
|
||||||
|
|
||||||
|
* gas/arm/adr-invalid.d: New file.
|
||||||
|
* gas/arm/adr-invalid.l: New file.
|
||||||
|
* gas/arm/adr-invalid.s: New file.
|
||||||
|
|
||||||
2009-03-14 Richard Sandiford <r.sandiford@uk.ibm.com>
|
2009-03-14 Richard Sandiford <r.sandiford@uk.ibm.com>
|
||||||
|
|
||||||
* gas/ppc/textalign-xcoff-001.d: Expect the section VMAs to be
|
* gas/ppc/textalign-xcoff-001.d: Expect the section VMAs to be
|
||||||
|
2
gas/testsuite/gas/arm/adr-invalid.d
Normal file
2
gas/testsuite/gas/arm/adr-invalid.d
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# name: Invalid use of ADR and ADRL
|
||||||
|
# error-output: adr-invalid.l
|
5
gas/testsuite/gas/arm/adr-invalid.l
Normal file
5
gas/testsuite/gas/arm/adr-invalid.l
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[^:]*: Assembler messages:
|
||||||
|
[^:]*:3: Error: symbol var is in a different section
|
||||||
|
[^:]*:4: Error: undefined symbol undefinedvar used as an immediate value
|
||||||
|
[^:]*:5: Error: symbol var is in a different section
|
||||||
|
[^:]*:6: Error: undefined symbol undefinedvar used as an immediate value
|
12
gas/testsuite/gas/arm/adr-invalid.s
Normal file
12
gas/testsuite/gas/arm/adr-invalid.s
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
.text
|
||||||
|
start:
|
||||||
|
adr r0, var
|
||||||
|
adr r0, undefinedvar
|
||||||
|
adrl r1, var
|
||||||
|
adrl r1, undefinedvar
|
||||||
|
|
||||||
|
.data
|
||||||
|
.globl var
|
||||||
|
var:
|
||||||
|
.word 0x00000000
|
||||||
|
|
Reference in New Issue
Block a user