Browse Source

* 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.
binutils-2_21-branch
Alan Modra 16 years ago
parent
commit
5942515f80
  1. 6
      ld/ChangeLog
  2. 17
      ld/ldexp.c

6
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

17
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"

Loading…
Cancel
Save