aboutsummaryrefslogtreecommitdiff
path: root/ld/ldexp.c
diff options
context:
space:
mode:
Diffstat (limited to 'ld/ldexp.c')
-rw-r--r--ld/ldexp.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/ld/ldexp.c b/ld/ldexp.c
index 326a0aa..b7dc171 100644
--- a/ld/ldexp.c
+++ b/ld/ldexp.c
@@ -512,7 +512,6 @@ fold_name (etree_type *tree)
break;
case DEFINED:
- expld.uses_defined = TRUE;
if (expld.phase == lang_first_phase_enum)
lang_track_definedness (tree->name.name);
else
@@ -564,7 +563,7 @@ fold_name (etree_type *tree)
}
else if (output_section == bfd_abs_section_ptr
&& (expld.section != bfd_abs_section_ptr
- || ld_compatibility >= 221))
+ || config.sane_expr))
new_number (h->u.def.value + h->u.def.section->output_offset);
else
new_rel (h->u.def.value + h->u.def.section->output_offset,
@@ -712,7 +711,7 @@ exp_fold_tree_1 (etree_type *tree)
{
case etree_value:
if (expld.section == bfd_abs_section_ptr
- && ld_compatibility < 221)
+ && !config.sane_expr)
new_abs (tree->value.value);
else
new_number (tree->value.value);
@@ -819,7 +818,8 @@ exp_fold_tree_1 (etree_type *tree)
exp_fold_tree_1 (tree->assign.src);
if (expld.result.valid_p
|| (expld.phase == lang_first_phase_enum
- && !expld.uses_defined))
+ && tree->type.node_class == etree_assign
+ && tree->assign.hidden))
{
if (h == NULL)
{
@@ -883,7 +883,6 @@ exp_fold_tree (etree_type *tree, asection *current_section, bfd_vma *dotp)
expld.dot = *dotp;
expld.dotp = dotp;
expld.section = current_section;
- expld.uses_defined = FALSE;
exp_fold_tree_1 (tree);
}
@@ -893,7 +892,6 @@ exp_fold_tree_no_dot (etree_type *tree)
expld.dot = 0;
expld.dotp = NULL;
expld.section = bfd_abs_section_ptr;
- expld.uses_defined = FALSE;
exp_fold_tree_1 (tree);
}