aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ld/ChangeLog6
-rw-r--r--ld/ldexp.c17
2 files changed, 15 insertions, 8 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 8239873..30cb4eb 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,9 @@
+2010-08-12 Alan Modra <amodra@gmail.com>
+
+ * ldexp.c (new_rel): Remove "str". Update all call sites.
+ (exp_fold_tree_1): When assigning to dot, calculate nextdot
+ using expld.result.section rather than expld.section.
+
2010-08-06 Alan Modra <amodra@gmail.com>
PR ld/11887
diff --git a/ld/ldexp.c b/ld/ldexp.c
index aae94c6..050227d 100644
--- a/ld/ldexp.c
+++ b/ld/ldexp.c
@@ -1,6 +1,6 @@
/* This module handles expression trees.
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
Written by Steve Chamberlain of Cygnus Support <sac@cygnus.com>.
@@ -190,11 +190,11 @@ exp_relop (asection *section, bfd_vma value)
}
static void
-new_rel (bfd_vma value, char *str, asection *section)
+new_rel (bfd_vma value, asection *section)
{
expld.result.valid_p = TRUE;
expld.result.value = value;
- expld.result.str = str;
+ expld.result.str = NULL;
expld.result.section = section;
}
@@ -561,7 +561,7 @@ fold_name (etree_type *tree)
}
else
new_rel (h->u.def.value + h->u.def.section->output_offset,
- NULL, output_section);
+ output_section);
}
}
else if (expld.phase == lang_final_phase_enum
@@ -591,7 +591,7 @@ fold_name (etree_type *tree)
tree->name.name);
}
else if (os->processed_vma)
- new_rel (0, NULL, os->bfd_section);
+ new_rel (0, os->bfd_section);
}
break;
@@ -704,7 +704,8 @@ exp_fold_tree_1 (etree_type *tree)
switch (tree->type.node_class)
{
case etree_value:
- new_rel (tree->value.value, tree->value.str, expld.section);
+ new_rel (tree->value.value, expld.section);
+ expld.result.str = tree->value.str;
break;
case etree_rel:
@@ -712,7 +713,7 @@ exp_fold_tree_1 (etree_type *tree)
{
asection *output_section = tree->rel.section->output_section;
new_rel (tree->rel.value + tree->rel.section->output_offset,
- NULL, output_section);
+ output_section);
}
else
memset (&expld.result, 0, sizeof (expld.result));
@@ -766,7 +767,7 @@ exp_fold_tree_1 (etree_type *tree)
{
bfd_vma nextdot;
- nextdot = expld.result.value + expld.section->vma;
+ nextdot = expld.result.value + expld.result.section->vma;
if (nextdot < expld.dot
&& expld.section != bfd_abs_section_ptr)
einfo (_("%F%S cannot move location counter backwards"