Stop the v850 linker from converting to other output formats whilst linking.

PR 22419
	* emultempl/v850elf.em (v850_create_output_section_statements):
	New function.  Generate an error if attempting to convert the
	format of the output file.
	* testsuite/ld-unique/pr21529.d: Skip for the V850.
	* testsuite/ld-elf/pr21884.d: Skip for the V850.
This commit is contained in:
Nick Clifton 2017-11-21 14:15:51 +00:00
parent bd560f571f
commit 2824e1bd4f
4 changed files with 32 additions and 2 deletions

View File

@ -1,3 +1,12 @@
2017-11-21 Nick Clifton <nickc@redhat.com>
PR 22419
* emultempl/v850elf.em (v850_create_output_section_statements):
New function. Generate an error if attempting to convert the
format of the output file.
* testsuite/ld-unique/pr21529.d: Skip for the V850.
* testsuite/ld-elf/pr21884.d: Skip for the V850.
2017-11-21 Claudiu Zissulescu <claziss@synopsys.com>
* testsuite/ld-arc/jli-simple.d: Update test.

View File

@ -49,6 +49,27 @@ v850_after_open (void)
gld${EMULATION_NAME}_after_open ();
}
/* This is a convenient point to tell BFD about target specific flags.
After the output has been created, but before inputs are read. */
static void
v850_create_output_section_statements (void)
{
/* See PR 22419 for an example of why this is necessary. */
if (strstr (bfd_get_target (link_info.output_bfd), "v850") == NULL)
{
/* The V850 backend needs special fields in the output hash structure.
These will only be created if the output format is an arm format,
hence we do not support linking and changing output formats at the
same time. Use a link followed by objcopy to change output formats. */
einfo (_("%F%X%P: error: Cannot change output format (to %s) whilst linking V850 binaries.\n"),
bfd_get_target (link_info.output_bfd));
return;
}
}
EOF
LDEMUL_AFTER_OPEN=v850_after_open
LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS=v850_create_output_section_statements

View File

@ -2,7 +2,7 @@
#source: pr21884b.s
#ld: -T pr21884.t
#objdump: -b binary -s
#notarget: aarch64*-*-* arm*-*-* avr-*-* hppa-*-* ia64-*-* m68hc1*-*-* nds32*-*-* score-*-*
#notarget: aarch64*-*-* arm*-*-* avr-*-* hppa-*-* ia64-*-* m68hc1*-*-* nds32*-*-* score-*-* v850-*-*
# Skip targets which can't change output format to binary.
.*: file format binary

View File

@ -1,6 +1,6 @@
#ld: --oformat binary -T pr21529.ld -e main
#objdump: -s -b binary
#notarget: aarch64*-*-* arm*-*-* avr-*-* ia64-*-* m68hc1*-*-* nds32*-*-* score-*-*
#notarget: aarch64*-*-* arm*-*-* avr-*-* ia64-*-* m68hc1*-*-* nds32*-*-* score-*-* v850-*-*
# Skip targets which can't change output format to binary.
#pass