* ldlang.c (lang_check): Do relocatable link checks first, so that
warn_mismatch can't override. Check compatible and word size too.
This commit is contained in:
parent
4ddafab0a6
commit
30cba02509
2 changed files with 26 additions and 14 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2002-03-13 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
* ldlang.c (lang_check): Do relocatable link checks first, so that
|
||||||
|
warn_mismatch can't override. Check compatible and word size too.
|
||||||
|
|
||||||
2002-03-07 Daniel Jacobowitz <drow@mvista.com>
|
2002-03-07 Daniel Jacobowitz <drow@mvista.com>
|
||||||
|
|
||||||
* ld.texinfo: Wrap @menu in @ifnottex, not @ifinfo.
|
* ld.texinfo: Wrap @menu in @ifnottex, not @ifinfo.
|
||||||
|
|
35
ld/ldlang.c
35
ld/ldlang.c
|
@ -3569,8 +3569,27 @@ lang_check ()
|
||||||
file = file->input_statement.next)
|
file = file->input_statement.next)
|
||||||
{
|
{
|
||||||
input_bfd = file->input_statement.the_bfd;
|
input_bfd = file->input_statement.the_bfd;
|
||||||
compatible = bfd_arch_get_compatible (input_bfd,
|
compatible = bfd_arch_get_compatible (input_bfd, output_bfd);
|
||||||
output_bfd);
|
|
||||||
|
/* In general it is not possible to perform a relocatable
|
||||||
|
link between differing object formats when the input
|
||||||
|
file has relocations, because the relocations in the
|
||||||
|
input format may not have equivalent representations in
|
||||||
|
the output format (and besides BFD does not translate
|
||||||
|
relocs for other link purposes than a final link). */
|
||||||
|
if (link_info.relocateable
|
||||||
|
&& (compatible == NULL
|
||||||
|
|| bfd_get_flavour (input_bfd) != bfd_get_flavour (output_bfd)
|
||||||
|
|| (input_bfd->arch_info->bits_per_word
|
||||||
|
!= output_bfd->arch_info->bits_per_word))
|
||||||
|
&& (bfd_get_file_flags (input_bfd) & HAS_RELOC) != 0)
|
||||||
|
{
|
||||||
|
einfo (_("%P%F: Relocatable linking with relocations from format %s (%B) to format %s (%B) is not supported\n"),
|
||||||
|
bfd_get_target (input_bfd), input_bfd,
|
||||||
|
bfd_get_target (output_bfd), output_bfd);
|
||||||
|
/* einfo with %F exits. */
|
||||||
|
}
|
||||||
|
|
||||||
if (compatible == NULL)
|
if (compatible == NULL)
|
||||||
{
|
{
|
||||||
if (command_line.warn_mismatch)
|
if (command_line.warn_mismatch)
|
||||||
|
@ -3578,18 +3597,6 @@ lang_check ()
|
||||||
bfd_printable_name (input_bfd), input_bfd,
|
bfd_printable_name (input_bfd), input_bfd,
|
||||||
bfd_printable_name (output_bfd));
|
bfd_printable_name (output_bfd));
|
||||||
}
|
}
|
||||||
else if (link_info.relocateable
|
|
||||||
/* In general it is not possible to perform a relocatable
|
|
||||||
link between differing object formats when the input
|
|
||||||
file has relocations, because the relocations in the
|
|
||||||
input format may not have equivalent representations in
|
|
||||||
the output format (and besides BFD does not translate
|
|
||||||
relocs for other link purposes than a final link). */
|
|
||||||
&& bfd_get_flavour (input_bfd) != bfd_get_flavour (output_bfd)
|
|
||||||
&& (bfd_get_file_flags (input_bfd) & HAS_RELOC) != 0)
|
|
||||||
einfo (_("%P%F: Relocatable linking with relocations from format %s (%B) to format %s (%B) is not supported\n"),
|
|
||||||
bfd_get_target (input_bfd), input_bfd,
|
|
||||||
bfd_get_target (output_bfd), output_bfd);
|
|
||||||
else if (bfd_count_sections (input_bfd))
|
else if (bfd_count_sections (input_bfd))
|
||||||
{
|
{
|
||||||
/* If the input bfd has no contents, it shouldn't set the
|
/* If the input bfd has no contents, it shouldn't set the
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue