Abort if input format is ARM and output format is not
This commit is contained in:
parent
9f20bbfd4c
commit
f11523b013
4 changed files with 49 additions and 7 deletions
|
@ -1,3 +1,12 @@
|
|||
1999-07-05 Nick Clifton <nickc@cygnus.com>
|
||||
|
||||
* emultempl/pe.em (after_open): Abort if input format is ARM and
|
||||
output format is not.
|
||||
* emultempl/armcoff.em (after_open): Abort if input format is ARM
|
||||
and output format is not.
|
||||
* emultempl/armelf.em (after_open): Abort if input format is ARM
|
||||
and output format is not.
|
||||
|
||||
1999-07-02 Ian Lance Taylor <ian@zembu.com>
|
||||
|
||||
* ldlang.c: Revert change of 1999-06-23.
|
||||
|
|
|
@ -148,11 +148,23 @@ gld${EMULATION_NAME}_before_allocation ()
|
|||
static void
|
||||
gld${EMULATION_NAME}_after_open ()
|
||||
{
|
||||
LANG_FOR_EACH_INPUT_STATEMENT (is)
|
||||
if (strstr (bfd_get_target (output_bfd), "arm") == NULL)
|
||||
{
|
||||
if (bfd_arm_get_bfd_for_interworking (is->the_bfd, & link_info))
|
||||
break;
|
||||
/* The arm 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 whilst linking ARM binaries\n");
|
||||
return;
|
||||
}
|
||||
|
||||
{
|
||||
LANG_FOR_EACH_INPUT_STATEMENT (is)
|
||||
{
|
||||
if (bfd_arm_get_bfd_for_interworking (is->the_bfd, & link_info))
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -308,13 +308,25 @@ gld${EMULATION_NAME}_after_open ()
|
|||
{
|
||||
struct bfd_link_needed_list *needed, *l;
|
||||
|
||||
LANG_FOR_EACH_INPUT_STATEMENT (is)
|
||||
if (strstr (bfd_get_target (output_bfd), "arm") == NULL)
|
||||
{
|
||||
/* The interworking bfd must be the last one to be processed */
|
||||
if (!is->next)
|
||||
bfd_elf32_arm_get_bfd_for_interworking (is->the_bfd, & link_info);
|
||||
/* The arm 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 whilst linking ARM binaries\n");
|
||||
return;
|
||||
}
|
||||
|
||||
{
|
||||
LANG_FOR_EACH_INPUT_STATEMENT (is)
|
||||
{
|
||||
/* The interworking bfd must be the last one to be processed */
|
||||
if (!is->next)
|
||||
bfd_elf32_arm_get_bfd_for_interworking (is->the_bfd, & link_info);
|
||||
}
|
||||
}
|
||||
|
||||
/* We only need to worry about this when doing a final link. */
|
||||
if (link_info.relocateable || link_info.shared)
|
||||
return;
|
||||
|
|
|
@ -652,6 +652,15 @@ gld_${EMULATION_NAME}_after_open ()
|
|||
#endif
|
||||
|
||||
#if defined(TARGET_IS_armpe) || defined(TARGET_IS_arm_epoc_pe)
|
||||
if (strstr (bfd_get_target (output_bfd), "arm") == NULL)
|
||||
{
|
||||
/* The arm 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 whilst linking ARM binaries\n");
|
||||
return;
|
||||
}
|
||||
{
|
||||
/* Find a BFD that can hold the interworking stubs. */
|
||||
LANG_FOR_EACH_INPUT_STATEMENT (is)
|
||||
|
|
Loading…
Reference in a new issue