lang_output_section_statement_type *os;
os = lang_output_section_find (tree->name.name);
- if (os != NULL && os->processed > 0)
+ if (os != NULL && os->processed)
new_rel (0, NULL, os->bfd_section);
}
break;
lang_output_section_statement_type *os;
os = lang_output_section_find (tree->name.name);
- if (os != NULL && os->processed > 0)
+ if (os != NULL && os->processed)
{
if (os->load_base == NULL)
new_rel (0, NULL, os->bfd_section);
lang_output_section_statement_type *os;
os = lang_output_section_find (tree->name.name);
- if (os != NULL && os->processed > 0)
+ if (os == NULL)
+ new_abs (0);
+ else if (os->processed)
new_abs (os->bfd_section->size / opb);
}
break;
case etree_assert:
exp_fold_tree_1 (tree->assert_s.child);
- if (expld.result.valid_p)
- {
- if (expld.phase == lang_mark_phase_enum)
- /* We don't care if assert fails or not when we are just
- marking if a section is used or not. */
- expld.result.value = 1;
- else if (!expld.result.value)
- einfo ("%X%P: %s\n", tree->assert_s.message);
- }
+ if (expld.phase == lang_final_phase_enum && !expld.result.value)
+ einfo ("%X%P: %s\n", tree->assert_s.message);
break;
case etree_unary:
defined by some object. */
break;
}
+ if (tree->assign.hidden)
+ bfd_hide_symbol (output_bfd, &link_info, h, TRUE);
}
exp_fold_tree_1 (tree->assign.src);
/* Handle PROVIDE. */
etree_type *
-exp_provide (const char *dst, etree_type *src)
+exp_provide (const char *dst, etree_type *src, bfd_boolean hidden)
{
etree_type *n;
n->assign.type.node_class = etree_provide;
n->assign.src = src;
n->assign.dst = dst;
+ n->assign.hidden = hidden;
return n;
}