+2001-02-13 H.J. Lu <hjl@gnu.org>
+
+ * ldexp.h (node_type): Add etree_provided.
+ * ldexp.c (exp_fold_tree): Handle etree_provided. Set the node
+ type to etree_provided if defined by PROVIDE. Allow updating
+ for etree_provided.
+ (exp_print_tree): Handle etree_provided.
+ * mpw-elfmips.c (gldelf32ebmip_find_exp_assignment): Handle
+ etree_provided.
+
2001-02-09 David Mosberger <davidm@hpl.hp.com>
* emulparams/elf64_ia64.sh (OTHER_READONLY_SECTIONS): Add
case etree_assign:
case etree_provide:
+ case etree_provided:
if (tree->assign.dst[0] == '.' && tree->assign.dst[1] == 0)
{
/* Assignment to dot can only be done during allocation */
- if (tree->type.node_class == etree_provide)
+ if (tree->type.node_class != etree_assign)
einfo (_("%F%S can not PROVIDE assignment to location counter\n"));
if (allocation_done == lang_allocating_phase_enum
|| (allocation_done == lang_final_phase_enum
h->type = bfd_link_hash_defined;
h->u.def.value = result.value;
h->u.def.section = result.section->bfd_section;
+ if (tree->type.node_class == etree_provide)
+ tree->type.node_class = etree_provided;
}
}
}
exp_print_tree (tree->assign.src);
break;
case etree_provide:
+ case etree_provided:
fprintf (config.map_file, "PROVIDE (%s, ", tree->assign.dst);
exp_print_tree (tree->assign.src);
fprintf (config.map_file, ")");
switch (exp->type.node_class)
{
case etree_provide:
+ case etree_provided:
h = bfd_link_hash_lookup (link_info.hash, exp->assign.dst,
false, false, false);
if (h == NULL)
{
if (! (bfd_elf32_record_link_assignment
(output_bfd, &link_info, exp->assign.dst,
- exp->type.node_class == etree_provide ? true : false)))
+ exp->type.node_class != etree_assign ? true : false)))
einfo (_("%P%F: failed to record assignment to %s: %E\n"),
exp->assign.dst);
}