mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-02-01 22:42:18 +00:00
* emultempl/elf32.em (gld${EMULATION_NAME}_find_exp_assignment):
Handle etree_provide. PR 7164.
This commit is contained in:
parent
b5279eb6a9
commit
7158d2b1a3
@ -1,5 +1,8 @@
|
||||
Tue Jul 4 12:55:48 1995 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* emultempl/elf32.em (gld${EMULATION_NAME}_find_exp_assignment):
|
||||
Handle etree_provide.
|
||||
|
||||
* emultempl/elf32.em (global_needed): New static variable.
|
||||
(global_found): Likewise.
|
||||
(gld${EMULATION_NAME}_after_open): New static function.
|
||||
|
@ -399,13 +399,31 @@ static void
|
||||
gld${EMULATION_NAME}_find_exp_assignment (exp)
|
||||
etree_type *exp;
|
||||
{
|
||||
struct bfd_link_hash_entry *h;
|
||||
|
||||
switch (exp->type.node_class)
|
||||
{
|
||||
case etree_provide:
|
||||
h = bfd_link_hash_lookup (link_info.hash, exp->assign.dst,
|
||||
false, false, false);
|
||||
if (h == NULL)
|
||||
break;
|
||||
|
||||
/* We call record_link_assignment even if the symbol is defined.
|
||||
This is because if it is defined by a dynamic object, we
|
||||
actually want to use the value defined by the linker script,
|
||||
not the value from the dynamic object (because we are setting
|
||||
symbols like etext). If the symbol is defined by a regular
|
||||
object, then, as it happens, calling record_link_assignment
|
||||
will do no harm. */
|
||||
|
||||
/* Fall through. */
|
||||
case etree_assign:
|
||||
if (strcmp (exp->assign.dst, ".") != 0)
|
||||
{
|
||||
if (! bfd_elf32_record_link_assignment (output_bfd, &link_info,
|
||||
exp->assign.dst))
|
||||
if (! (bfd_elf32_record_link_assignment
|
||||
(output_bfd, &link_info, exp->assign.dst,
|
||||
exp->type.node_class == etree_provide ? true : false)))
|
||||
einfo ("%P%F: failed to record assignment to %s: %E\n",
|
||||
exp->assign.dst);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user