mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-12-15 08:08:55 +00:00
* elflink.c (elf_link_add_object_symbols): Improve error
message generated when a symbol is left unresolved because a --no-add-needed command line option has prevented the inclusion of the DSO defining it.
This commit is contained in:
parent
cdcf946711
commit
3cbc5de02a
@ -1,3 +1,10 @@
|
||||
2009-11-05 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* elflink.c (elf_link_add_object_symbols): Improve error
|
||||
message generated when a symbol is left unresolved because a
|
||||
--no-add-needed command line option has prevented the
|
||||
inclusion of the DSO defining it.
|
||||
|
||||
2009-11-03 Alan Modra <amodra@bigpond.net.au>
|
||||
Ulrich Weigand <uweigand@de.ibm.com>
|
||||
|
||||
|
@ -3877,6 +3877,7 @@ error_free_dyn:
|
||||
bfd_boolean common;
|
||||
unsigned int old_alignment;
|
||||
bfd *old_bfd;
|
||||
bfd * undef_bfd = NULL;
|
||||
|
||||
override = FALSE;
|
||||
|
||||
@ -4108,6 +4109,20 @@ error_free_dyn:
|
||||
name = newname;
|
||||
}
|
||||
|
||||
/* If this is a definition of a previously undefined symbol
|
||||
make a note of the bfd that contained the reference in
|
||||
case we need to refer to it later on in error messages. */
|
||||
if (! bfd_is_und_section (sec))
|
||||
{
|
||||
h = elf_link_hash_lookup (elf_hash_table (info), name, FALSE, FALSE, FALSE);
|
||||
|
||||
if (h != NULL
|
||||
&& (h->root.type == bfd_link_hash_undefined
|
||||
|| h->root.type == bfd_link_hash_undefweak)
|
||||
&& h->root.u.undef.abfd)
|
||||
undef_bfd = h->root.u.undef.abfd;
|
||||
}
|
||||
|
||||
if (!_bfd_elf_merge_symbol (abfd, info, name, isym, &sec,
|
||||
&value, &old_alignment,
|
||||
sym_hash, &skip, &override,
|
||||
@ -4447,9 +4462,12 @@ error_free_dyn:
|
||||
if ((elf_dyn_lib_class (abfd) & DYN_NO_NEEDED) != 0)
|
||||
{
|
||||
(*_bfd_error_handler)
|
||||
(_("%B: invalid DSO for symbol `%s' definition"),
|
||||
(_("%B: undefined reference to symbol '%s'"),
|
||||
undef_bfd == NULL ? info->output_bfd : undef_bfd, name);
|
||||
(*_bfd_error_handler)
|
||||
(_("note: '%s' is defined in DSO %B so try adding it to the linker command line"),
|
||||
abfd, name);
|
||||
bfd_set_error (bfd_error_bad_value);
|
||||
bfd_set_error (bfd_error_invalid_operation);
|
||||
goto error_free_vers;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user