mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-27 14:39:09 +08:00
* config/tc-arm.c (arm_fix_adjustable) [OBJ_COFF]: Delete.
(arm_fix_adjustable) [OBJ_ELF]: Use it on coff targets too. * gas/arm/local_label_coff.s: New test. * gas/arm/local_label_coff.d: New test. * gas/arm/local_label_elf.s: New test. * gas/arm/local_label_elf.d: New test. * gas/arm/local_label_wince.s: New test. * gas/arm/local_label_wince.d: New test.
This commit is contained in:
@ -1,3 +1,8 @@
|
||||
2006-11-10 Pedro Alves <pedro_alves@portugalmail.pt>
|
||||
|
||||
* config/tc-arm.c (arm_fix_adjustable) [OBJ_COFF]: Delete.
|
||||
(arm_fix_adjustable) [OBJ_ELF]: Use it on coff targets too.
|
||||
|
||||
2006-11-10 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR gas/3456:
|
||||
|
@ -18959,36 +18959,7 @@ arm_force_relocation (struct fix * fixp)
|
||||
return generic_force_reloc (fixp);
|
||||
}
|
||||
|
||||
#ifdef OBJ_COFF
|
||||
bfd_boolean
|
||||
arm_fix_adjustable (fixS * fixP)
|
||||
{
|
||||
/* This is a little hack to help the gas/arm/adrl.s test. It prevents
|
||||
local labels from being added to the output symbol table when they
|
||||
are used with the ADRL pseudo op. The ADRL relocation should always
|
||||
be resolved before the binbary is emitted, so it is safe to say that
|
||||
it is adjustable. */
|
||||
if (fixP->fx_r_type == BFD_RELOC_ARM_ADRL_IMMEDIATE)
|
||||
return 1;
|
||||
|
||||
/* This is a hack for the gas/all/redef2.s test. This test causes symbols
|
||||
to be cloned, and without this test relocs would still be generated
|
||||
against the original, pre-cloned symbol. Such symbols would not appear
|
||||
in the symbol table however, and so a valid reloc could not be
|
||||
generated. So check to see if the fixup is against a symbol which has
|
||||
been removed from the symbol chain, and if it is, then allow it to be
|
||||
adjusted into a reloc against a section symbol. */
|
||||
if (fixP->fx_addsy != NULL
|
||||
&& ! S_IS_LOCAL (fixP->fx_addsy)
|
||||
&& symbol_next (fixP->fx_addsy) == NULL
|
||||
&& symbol_next (fixP->fx_addsy) == symbol_previous (fixP->fx_addsy))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef OBJ_ELF
|
||||
#if defined (OBJ_ELF) || defined (OBJ_COFF)
|
||||
/* Relocations against function names must be left unadjusted,
|
||||
so that the linker can use this information to generate interworking
|
||||
stubs. The MIPS version of this function
|
||||
@ -19041,6 +19012,9 @@ arm_fix_adjustable (fixS * fixP)
|
||||
|
||||
return 1;
|
||||
}
|
||||
#endif /* defined (OBJ_ELF) || defined (OBJ_COFF) */
|
||||
|
||||
#ifdef OBJ_ELF
|
||||
|
||||
const char *
|
||||
elf32_arm_target_format (void)
|
||||
|
@ -3,6 +3,13 @@
|
||||
* gas/arm/undefined.d: Run test on Windows CE.
|
||||
* gas/arm/undefined_coff.d: Don't run test on Windows CE.
|
||||
|
||||
* gas/arm/local_label_coff.s: New test.
|
||||
* gas/arm/local_label_coff.d: New test.
|
||||
* gas/arm/local_label_elf.s: New test.
|
||||
* gas/arm/local_label_elf.d: New test.
|
||||
* gas/arm/local_label_wince.s: New test.
|
||||
* gas/arm/local_label_wince.d: New test.
|
||||
|
||||
2006-11-09 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* gas/i386/sse2.s: Test movdqa with memory destination.
|
||||
|
11
gas/testsuite/gas/arm/local_label_coff.d
Normal file
11
gas/testsuite/gas/arm/local_label_coff.d
Normal file
@ -0,0 +1,11 @@
|
||||
#nm: -n
|
||||
#name: ARM local label relocs to section symbol relocs (COFF)
|
||||
# This test is only valid on COFF based targets, except Windows CE.
|
||||
# There are ELF and Windows CE versions of this test.
|
||||
#not-skip: *-unknown-pe *-epoc-pe *-*-*coff
|
||||
|
||||
# Check if relocations against local symbols are converted to
|
||||
# relocations against section symbols.
|
||||
0+0 b .bss
|
||||
0+0 d .data
|
||||
0+0 t .text
|
3
gas/testsuite/gas/arm/local_label_coff.s
Normal file
3
gas/testsuite/gas/arm/local_label_coff.s
Normal file
@ -0,0 +1,3 @@
|
||||
.text
|
||||
Lused_label:
|
||||
.word Lused_label
|
9
gas/testsuite/gas/arm/local_label_elf.d
Normal file
9
gas/testsuite/gas/arm/local_label_elf.d
Normal file
@ -0,0 +1,9 @@
|
||||
#nm: -n
|
||||
#name: ARM local label relocs to section symbol relocs (ELF)
|
||||
# This test is only valid on ELF targets.
|
||||
# There are COFF and Windows CE versions of this test.
|
||||
#skip: *-*-*coff *-*-pe *-wince-* *-*-wince *-*-*aout* *-*-netbsd *-*-riscix*
|
||||
|
||||
# Check if relocations against local symbols are converted to
|
||||
# relocations against section symbols.
|
||||
|
3
gas/testsuite/gas/arm/local_label_elf.s
Normal file
3
gas/testsuite/gas/arm/local_label_elf.s
Normal file
@ -0,0 +1,3 @@
|
||||
.text
|
||||
.Lused_label:
|
||||
.word .Lused_label
|
11
gas/testsuite/gas/arm/local_label_wince.d
Normal file
11
gas/testsuite/gas/arm/local_label_wince.d
Normal file
@ -0,0 +1,11 @@
|
||||
#nm: -n
|
||||
#name: ARM local label relocs to section symbol relocs (WinCE)
|
||||
# This test is only valid on Windows CE.
|
||||
# There are ELF and COFF versions of this test.
|
||||
#not-skip: *-*-wince *-wince-*
|
||||
|
||||
# Check if relocations against local symbols are converted to
|
||||
# relocations against section symbols.
|
||||
0+0 b .bss
|
||||
0+0 d .data
|
||||
0+0 t .text
|
3
gas/testsuite/gas/arm/local_label_wince.s
Normal file
3
gas/testsuite/gas/arm/local_label_wince.s
Normal file
@ -0,0 +1,3 @@
|
||||
.text
|
||||
.Lused_label:
|
||||
.word .Lused_label
|
Reference in New Issue
Block a user