* ldexp.h (etree_value_type): Use "asection *" in place of

"struct lang_output_section_statement_struct *" for "section".
	(exp_fold_tree): Likewise.
	(exp_mark_used_section): Likewise.
	* ldexp.c (new_rel, new_rel_from_section, fold_unary, fold_binary,
	fold_trinary, fold_name, exp_fold_tree_1, exp_fold_tree,
	exp_mark_used_section): Likewise for "current_section" param.
	(make_abs, new_abs, exp_binop, exp_unop, exp_get_vma, exp_get_fill,
	exp_get_abs_int): Adjust for above changes.
	* ldlang.c (lang_mark_used_section_1, print_assignment,
	lang_size_sections_1, lang_do_assignments_1): Likewise.
	* ldexp.c (fold_name): Init entire result struct.
This commit is contained in:
Alan Modra 2005-06-02 03:08:41 +00:00
parent c2bd6e35d3
commit 408082ec18
4 changed files with 77 additions and 76 deletions

View file

@ -1,3 +1,18 @@
2005-06-02 Alan Modra <amodra@bigpond.net.au>
* ldexp.h (etree_value_type): Use "asection *" in place of
"struct lang_output_section_statement_struct *" for "section".
(exp_fold_tree): Likewise.
(exp_mark_used_section): Likewise.
* ldexp.c (new_rel, new_rel_from_section, fold_unary, fold_binary,
fold_trinary, fold_name, exp_fold_tree_1, exp_fold_tree,
exp_mark_used_section): Likewise for "current_section" param.
(make_abs, new_abs, exp_binop, exp_unop, exp_get_vma, exp_get_fill,
exp_get_abs_int): Adjust for above changes.
* ldlang.c (lang_mark_used_section_1, print_assignment,
lang_size_sections_1, lang_do_assignments_1): Likewise.
* ldexp.c (fold_name): Init entire result struct.
2005-06-01 Maciej W. Rozycki <macro@linux-mips.org> 2005-06-01 Maciej W. Rozycki <macro@linux-mips.org>
* emulparams/elf32btsmip.sh: Unset DATA_ADDR. * emulparams/elf32btsmip.sh: Unset DATA_ADDR.

View file

@ -42,11 +42,9 @@
#include "safe-ctype.h" #include "safe-ctype.h"
static etree_value_type exp_fold_tree_1 static etree_value_type exp_fold_tree_1
(etree_type *, lang_output_section_statement_type *, (etree_type *, asection *, lang_phase_type, bfd_vma, bfd_vma *, bfd_boolean);
lang_phase_type, bfd_vma, bfd_vma *, bfd_boolean);
static etree_value_type exp_fold_tree_no_dot static etree_value_type exp_fold_tree_no_dot
(etree_type *, lang_output_section_statement_type *, lang_phase_type, (etree_type *, asection *, lang_phase_type, bfd_boolean);
bfd_boolean);
static bfd_vma align_n static bfd_vma align_n
(bfd_vma, bfd_vma); (bfd_vma, bfd_vma);
@ -139,9 +137,8 @@ exp_print_token (token_code_type code, int infix_p)
static void static void
make_abs (etree_value_type *ptr) make_abs (etree_value_type *ptr)
{ {
asection *s = ptr->section->bfd_section; ptr->value += ptr->section->vma;
ptr->value += s->vma; ptr->section = bfd_abs_section_ptr;
ptr->section = abs_output_section;
} }
static etree_value_type static etree_value_type
@ -149,7 +146,7 @@ new_abs (bfd_vma value)
{ {
etree_value_type new; etree_value_type new;
new.valid_p = TRUE; new.valid_p = TRUE;
new.section = abs_output_section; new.section = bfd_abs_section_ptr;
new.value = value; new.value = value;
new.str = NULL; new.str = NULL;
return new; return new;
@ -193,7 +190,7 @@ exp_relop (asection *section, bfd_vma value)
static etree_value_type static etree_value_type
new_rel (bfd_vma value, new_rel (bfd_vma value,
char *str, char *str,
lang_output_section_statement_type *section) asection *section)
{ {
etree_value_type new; etree_value_type new;
new.valid_p = TRUE; new.valid_p = TRUE;
@ -204,8 +201,7 @@ new_rel (bfd_vma value,
} }
static etree_value_type static etree_value_type
new_rel_from_section (bfd_vma value, new_rel_from_section (bfd_vma value, asection *section)
lang_output_section_statement_type *section)
{ {
etree_value_type new; etree_value_type new;
new.valid_p = TRUE; new.valid_p = TRUE;
@ -213,14 +209,14 @@ new_rel_from_section (bfd_vma value,
new.str = NULL; new.str = NULL;
new.section = section; new.section = section;
new.value -= section->bfd_section->vma; new.value -= section->vma;
return new; return new;
} }
static etree_value_type static etree_value_type
fold_unary (etree_type *tree, fold_unary (etree_type *tree,
lang_output_section_statement_type *current_section, asection *current_section,
lang_phase_type allocation_done, lang_phase_type allocation_done,
bfd_vma dot, bfd_vma dot,
bfd_vma *dotp, bfd_vma *dotp,
@ -246,8 +242,8 @@ fold_unary (etree_type *tree,
case ABSOLUTE: case ABSOLUTE:
if (allocation_done != lang_first_phase_enum) if (allocation_done != lang_first_phase_enum)
{ {
result.value += result.section->bfd_section->vma; result.value += result.section->vma;
result.section = abs_output_section; result.section = bfd_abs_section_ptr;
} }
else else
result.valid_p = FALSE; result.valid_p = FALSE;
@ -281,7 +277,7 @@ fold_unary (etree_type *tree,
case DATA_SEGMENT_END: case DATA_SEGMENT_END:
if (allocation_done != lang_first_phase_enum if (allocation_done != lang_first_phase_enum
&& current_section == abs_output_section && current_section == bfd_abs_section_ptr
&& (exp_data_seg.phase == exp_dataseg_align_seen && (exp_data_seg.phase == exp_dataseg_align_seen
|| exp_data_seg.phase == exp_dataseg_relro_seen || exp_data_seg.phase == exp_dataseg_relro_seen
|| exp_data_seg.phase == exp_dataseg_adjust || exp_data_seg.phase == exp_dataseg_adjust
@ -310,7 +306,7 @@ fold_unary (etree_type *tree,
static etree_value_type static etree_value_type
fold_binary (etree_type *tree, fold_binary (etree_type *tree,
lang_output_section_statement_type *current_section, asection *current_section,
lang_phase_type allocation_done, lang_phase_type allocation_done,
bfd_vma dot, bfd_vma dot,
bfd_vma *dotp, bfd_vma *dotp,
@ -355,14 +351,14 @@ fold_binary (etree_type *tree,
absolute. However, adding or subtracting an absolute absolute. However, adding or subtracting an absolute
value from a relative value is meaningful, and is an value from a relative value is meaningful, and is an
exception. */ exception. */
if (current_section != abs_output_section if (current_section != bfd_abs_section_ptr
&& (other.section == abs_output_section && (other.section == bfd_abs_section_ptr
|| (result.section == abs_output_section || (result.section == bfd_abs_section_ptr
&& tree->type.node_code == '+')) && tree->type.node_code == '+'))
&& (tree->type.node_code == '+' && (tree->type.node_code == '+'
|| tree->type.node_code == '-')) || tree->type.node_code == '-'))
{ {
if (other.section != abs_output_section) if (other.section != bfd_abs_section_ptr)
{ {
/* Keep the section of the other term. */ /* Keep the section of the other term. */
if (tree->type.node_code == '+') if (tree->type.node_code == '+')
@ -373,7 +369,7 @@ fold_binary (etree_type *tree,
} }
} }
else if (result.section != other.section else if (result.section != other.section
|| current_section == abs_output_section) || current_section == bfd_abs_section_ptr)
{ {
make_abs (&result); make_abs (&result);
make_abs (&other); make_abs (&other);
@ -429,7 +425,7 @@ fold_binary (etree_type *tree,
case DATA_SEGMENT_ALIGN: case DATA_SEGMENT_ALIGN:
if (allocation_done != lang_first_phase_enum if (allocation_done != lang_first_phase_enum
&& current_section == abs_output_section && current_section == bfd_abs_section_ptr
&& (exp_data_seg.phase == exp_dataseg_none && (exp_data_seg.phase == exp_dataseg_none
|| exp_data_seg.phase == exp_dataseg_adjust || exp_data_seg.phase == exp_dataseg_adjust
|| exp_data_seg.phase == exp_dataseg_relro_adjust || exp_data_seg.phase == exp_dataseg_relro_adjust
@ -502,7 +498,7 @@ fold_binary (etree_type *tree,
static etree_value_type static etree_value_type
fold_trinary (etree_type *tree, fold_trinary (etree_type *tree,
lang_output_section_statement_type *current_section, asection *current_section,
lang_phase_type allocation_done, lang_phase_type allocation_done,
bfd_vma dot, bfd_vma dot,
bfd_vma *dotp, bfd_vma *dotp,
@ -525,14 +521,14 @@ fold_trinary (etree_type *tree,
static etree_value_type static etree_value_type
fold_name (etree_type *tree, fold_name (etree_type *tree,
lang_output_section_statement_type *current_section, asection *current_section,
lang_phase_type allocation_done, lang_phase_type allocation_done,
bfd_vma dot, bfd_vma dot,
bfd_boolean mark_used) bfd_boolean mark_used)
{ {
etree_value_type result; etree_value_type result;
result.valid_p = FALSE; memset (&result, 0, sizeof (result));
switch (tree->type.node_code) switch (tree->type.node_code)
{ {
@ -559,7 +555,7 @@ fold_name (etree_type *tree,
|| h->type == bfd_link_hash_common) || h->type == bfd_link_hash_common)
&& (def_iteration == lang_statement_iteration && (def_iteration == lang_statement_iteration
|| def_iteration == -1)); || def_iteration == -1));
result.section = abs_output_section; result.section = bfd_abs_section_ptr;
result.valid_p = TRUE; result.valid_p = TRUE;
} }
break; break;
@ -594,19 +590,13 @@ fold_name (etree_type *tree,
tree->name.name); tree->name.name);
else else
{ {
lang_output_section_statement_type *os;
os = (lang_output_section_statement_lookup
(bfd_get_section_name (output_bfd,
output_section)));
/* FIXME: Is this correct if this section is /* FIXME: Is this correct if this section is
being linked with -R? */ being linked with -R? */
result = new_rel ((h->u.def.value result = new_rel ((h->u.def.value
+ h->u.def.section->output_offset), + h->u.def.section->output_offset),
NULL, NULL,
os); output_section);
os->bfd_section->flags |= SEC_KEEP; output_section->flags |= SEC_KEEP;
} }
} }
} }
@ -634,7 +624,7 @@ fold_name (etree_type *tree,
{ {
os->bfd_section->flags |= SEC_KEEP; os->bfd_section->flags |= SEC_KEEP;
if (os->processed > 0) if (os->processed > 0)
result = new_rel (0, NULL, os); result = new_rel (0, NULL, os->bfd_section);
} }
} }
break; break;
@ -651,10 +641,10 @@ fold_name (etree_type *tree,
if (os->processed != 0) if (os->processed != 0)
{ {
if (os->load_base == NULL) if (os->load_base == NULL)
result = new_rel (0, NULL, os); result = new_rel (0, NULL, os->bfd_section);
else else
result = exp_fold_tree_no_dot (os->load_base, result = exp_fold_tree_no_dot (os->load_base,
abs_output_section, bfd_abs_section_ptr,
allocation_done, allocation_done,
mark_used); mark_used);
} }
@ -714,7 +704,7 @@ fold_name (etree_type *tree,
static etree_value_type static etree_value_type
exp_fold_tree_1 (etree_type *tree, exp_fold_tree_1 (etree_type *tree,
lang_output_section_statement_type *current_section, asection *current_section,
lang_phase_type allocation_done, lang_phase_type allocation_done,
bfd_vma dot, bfd_vma dot,
bfd_vma *dotp, bfd_vma *dotp,
@ -786,7 +776,7 @@ exp_fold_tree_1 (etree_type *tree,
einfo (_("%F%S can not PROVIDE assignment to location counter\n")); einfo (_("%F%S can not PROVIDE assignment to location counter\n"));
if (allocation_done == lang_allocating_phase_enum if (allocation_done == lang_allocating_phase_enum
|| (allocation_done == lang_final_phase_enum || (allocation_done == lang_final_phase_enum
&& current_section == abs_output_section)) && current_section == bfd_abs_section_ptr))
{ {
/* Notify the folder that this is an assignment to dot. */ /* Notify the folder that this is an assignment to dot. */
assigning_to_dot = TRUE; assigning_to_dot = TRUE;
@ -806,10 +796,9 @@ exp_fold_tree_1 (etree_type *tree,
{ {
bfd_vma nextdot; bfd_vma nextdot;
nextdot = (result.value nextdot = result.value + current_section->vma;
+ current_section->bfd_section->vma);
if (nextdot < dot if (nextdot < dot
&& current_section != abs_output_section) && current_section != bfd_abs_section_ptr)
einfo (_("%F%S cannot move location counter backwards (from %V to %V)\n"), einfo (_("%F%S cannot move location counter backwards (from %V to %V)\n"),
dot, nextdot); dot, nextdot);
else else
@ -857,7 +846,7 @@ exp_fold_tree_1 (etree_type *tree,
lang_update_definedness (tree->assign.dst, h); lang_update_definedness (tree->assign.dst, h);
h->type = bfd_link_hash_defined; h->type = bfd_link_hash_defined;
h->u.def.value = result.value; h->u.def.value = result.value;
h->u.def.section = result.section->bfd_section; h->u.def.section = result.section;
if (tree->type.node_class == etree_provide) if (tree->type.node_class == etree_provide)
tree->type.node_class = etree_provided; tree->type.node_class = etree_provided;
} }
@ -881,7 +870,7 @@ exp_fold_tree_1 (etree_type *tree,
etree_value_type etree_value_type
exp_fold_tree (etree_type *tree, exp_fold_tree (etree_type *tree,
lang_output_section_statement_type *current_section, asection *current_section,
lang_phase_type allocation_done, lang_phase_type allocation_done,
bfd_vma dot, bfd_vma dot,
bfd_vma *dotp) bfd_vma *dotp)
@ -892,7 +881,7 @@ exp_fold_tree (etree_type *tree,
static etree_value_type static etree_value_type
exp_fold_tree_no_dot (etree_type *tree, exp_fold_tree_no_dot (etree_type *tree,
lang_output_section_statement_type *current_section, asection *current_section,
lang_phase_type allocation_done, lang_phase_type allocation_done,
bfd_boolean mark_used) bfd_boolean mark_used)
{ {
@ -911,7 +900,7 @@ exp_binop (int code, etree_type *lhs, etree_type *rhs)
value.binary.rhs = rhs; value.binary.rhs = rhs;
value.type.node_class = etree_binary; value.type.node_class = etree_binary;
r = exp_fold_tree_no_dot (&value, r = exp_fold_tree_no_dot (&value,
abs_output_section, bfd_abs_section_ptr,
lang_first_phase_enum, FALSE); lang_first_phase_enum, FALSE);
if (r.valid_p) if (r.valid_p)
{ {
@ -950,7 +939,7 @@ exp_unop (int code, etree_type *child)
value.unary.type.node_code = code; value.unary.type.node_code = code;
value.unary.child = child; value.unary.child = child;
value.unary.type.node_class = etree_unary; value.unary.type.node_class = etree_unary;
r = exp_fold_tree_no_dot (&value, abs_output_section, r = exp_fold_tree_no_dot (&value, bfd_abs_section_ptr,
lang_first_phase_enum, FALSE); lang_first_phase_enum, FALSE);
if (r.valid_p) if (r.valid_p)
return exp_intop (r.value); return exp_intop (r.value);
@ -1119,7 +1108,7 @@ exp_get_vma (etree_type *tree,
if (tree != NULL) if (tree != NULL)
{ {
r = exp_fold_tree_no_dot (tree, abs_output_section, r = exp_fold_tree_no_dot (tree, bfd_abs_section_ptr,
allocation_done, FALSE); allocation_done, FALSE);
if (! r.valid_p && name != NULL) if (! r.valid_p && name != NULL)
einfo (_("%F%S nonconstant expression for %s\n"), name); einfo (_("%F%S nonconstant expression for %s\n"), name);
@ -1152,7 +1141,7 @@ exp_get_fill (etree_type *tree,
if (tree == NULL) if (tree == NULL)
return def; return def;
r = exp_fold_tree_no_dot (tree, abs_output_section, allocation_done, r = exp_fold_tree_no_dot (tree, bfd_abs_section_ptr, allocation_done,
FALSE); FALSE);
if (! r.valid_p && name != NULL) if (! r.valid_p && name != NULL)
einfo (_("%F%S nonconstant expression for %s\n"), name); einfo (_("%F%S nonconstant expression for %s\n"), name);
@ -1204,11 +1193,11 @@ exp_get_abs_int (etree_type *tree,
lang_phase_type allocation_done) lang_phase_type allocation_done)
{ {
etree_value_type res; etree_value_type res;
res = exp_fold_tree_no_dot (tree, abs_output_section, allocation_done, res = exp_fold_tree_no_dot (tree, bfd_abs_section_ptr, allocation_done,
FALSE); FALSE);
if (res.valid_p) if (res.valid_p)
res.value += res.section->bfd_section->vma; res.value += res.section->vma;
else else
einfo (_("%F%S non constant expression for %s\n"), name); einfo (_("%F%S non constant expression for %s\n"), name);
@ -1226,9 +1215,7 @@ align_n (bfd_vma value, bfd_vma align)
} }
void void
exp_mark_used_section exp_mark_used_section (etree_type *tree, asection *current_section)
(etree_type *tree,
lang_output_section_statement_type *current_section)
{ {
switch (tree->type.node_class) switch (tree->type.node_class)
{ {
@ -1294,7 +1281,7 @@ exp_mark_used_section
lang_update_definedness (tree->assign.dst, h); lang_update_definedness (tree->assign.dst, h);
h->type = bfd_link_hash_defined; h->type = bfd_link_hash_defined;
h->u.def.value = result.value; h->u.def.value = result.value;
h->u.def.section = result.section->bfd_section; h->u.def.section = result.section;
if (tree->type.node_class == etree_provide) if (tree->type.node_class == etree_provide)
tree->type.node_class = etree_provided; tree->type.node_class = etree_provided;
} }

View file

@ -1,6 +1,6 @@
/* ldexp.h - /* ldexp.h -
Copyright 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001, 2002, Copyright 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001, 2002,
2003, 2004 Free Software Foundation, Inc. 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of GLD, the Gnu Linker. This file is part of GLD, the Gnu Linker.
@ -26,7 +26,7 @@
typedef struct { typedef struct {
bfd_vma value; bfd_vma value;
char *str; char *str;
struct lang_output_section_statement_struct *section; asection *section;
bfd_boolean valid_p; bfd_boolean valid_p;
} etree_value_type; } etree_value_type;
@ -130,8 +130,7 @@ etree_type *exp_relop
etree_value_type invalid etree_value_type invalid
(void); (void);
etree_value_type exp_fold_tree etree_value_type exp_fold_tree
(etree_type *, struct lang_output_section_statement_struct *, (etree_type *, asection *, lang_phase_type, bfd_vma, bfd_vma *);
lang_phase_type, bfd_vma, bfd_vma *);
etree_type *exp_binop etree_type *exp_binop
(int, etree_type *, etree_type *); (int, etree_type *, etree_type *);
etree_type *exp_trinop etree_type *exp_trinop
@ -157,6 +156,6 @@ fill_type *exp_get_fill
bfd_vma exp_get_abs_int bfd_vma exp_get_abs_int
(etree_type *, int, char *, lang_phase_type); (etree_type *, int, char *, lang_phase_type);
void exp_mark_used_section void exp_mark_used_section
(etree_type *, struct lang_output_section_statement_struct *); (etree_type *, asection *);
#endif #endif

View file

@ -3080,7 +3080,7 @@ lang_mark_used_section_1
break; break;
case lang_data_statement_enum: case lang_data_statement_enum:
exp_mark_used_section (s->data_statement.exp, exp_mark_used_section (s->data_statement.exp,
abs_output_section); bfd_abs_section_ptr);
break; break;
case lang_reloc_statement_enum: case lang_reloc_statement_enum:
@ -3095,7 +3095,7 @@ lang_mark_used_section_1
break; break;
case lang_assignment_statement_enum: case lang_assignment_statement_enum:
exp_mark_used_section (s->assignment_statement.exp, exp_mark_used_section (s->assignment_statement.exp,
output_section_statement); output_section_statement->bfd_section);
break; break;
case lang_padding_statement_enum: case lang_padding_statement_enum:
break; break;
@ -3319,8 +3319,8 @@ print_assignment (lang_assignment_statement_type *assignment,
computation_is_valid = is_dot || (scan_for_self_assignment (dst, tree) == FALSE); computation_is_valid = is_dot || (scan_for_self_assignment (dst, tree) == FALSE);
} }
result = exp_fold_tree (tree, output_section, lang_final_phase_enum, result = exp_fold_tree (tree, output_section->bfd_section,
print_dot, &print_dot); lang_final_phase_enum, print_dot, &print_dot);
if (result.valid_p) if (result.valid_p)
{ {
bfd_vma value; bfd_vma value;
@ -3330,7 +3330,7 @@ print_assignment (lang_assignment_statement_type *assignment,
value = result.value; value = result.value;
if (result.section) if (result.section)
value += result.section->bfd_section->vma; value += result.section->vma;
minfo ("0x%V", value); minfo ("0x%V", value);
if (is_dot) if (is_dot)
@ -3347,7 +3347,7 @@ print_assignment (lang_assignment_statement_type *assignment,
value = h->u.def.value; value = h->u.def.value;
if (result.section) if (result.section)
value += result.section->bfd_section->vma; value += result.section->vma;
minfo ("[0x%V]", value); minfo ("[0x%V]", value);
} }
@ -4149,7 +4149,7 @@ lang_size_sections_1
os->processed = -1; os->processed = -1;
r = exp_fold_tree (os->addr_tree, r = exp_fold_tree (os->addr_tree,
abs_output_section, bfd_abs_section_ptr,
lang_allocating_phase_enum, lang_allocating_phase_enum,
dot, &dot); dot, &dot);
os->processed = 0; os->processed = 0;
@ -4159,7 +4159,7 @@ lang_size_sections_1
" address expression for section %s\n"), " address expression for section %s\n"),
os->name); os->name);
dot = r.value + r.section->bfd_section->vma; dot = r.value + r.section->vma;
} }
/* The section starts here. /* The section starts here.
@ -4199,7 +4199,7 @@ lang_size_sections_1
os->processed = 1; os->processed = 1;
if (os->update_dot_tree != 0) if (os->update_dot_tree != 0)
exp_fold_tree (os->update_dot_tree, abs_output_section, exp_fold_tree (os->update_dot_tree, bfd_abs_section_ptr,
lang_allocating_phase_enum, dot, &dot); lang_allocating_phase_enum, dot, &dot);
/* Update dot in the region ? /* Update dot in the region ?
@ -4258,7 +4258,7 @@ lang_size_sections_1
/* We might refer to provided symbols in the expression, and /* We might refer to provided symbols in the expression, and
need to mark them as needed. */ need to mark them as needed. */
exp_fold_tree (s->data_statement.exp, abs_output_section, exp_fold_tree (s->data_statement.exp, bfd_abs_section_ptr,
lang_allocating_phase_enum, dot, &dot); lang_allocating_phase_enum, dot, &dot);
switch (s->data_statement.type) switch (s->data_statement.type)
@ -4347,7 +4347,7 @@ lang_size_sections_1
bfd_vma newdot = dot; bfd_vma newdot = dot;
exp_fold_tree (s->assignment_statement.exp, exp_fold_tree (s->assignment_statement.exp,
output_section_statement, output_section_statement->bfd_section,
lang_allocating_phase_enum, lang_allocating_phase_enum,
dot, dot,
&newdot); &newdot);
@ -4580,12 +4580,12 @@ lang_do_assignments_1
etree_value_type value; etree_value_type value;
value = exp_fold_tree (s->data_statement.exp, value = exp_fold_tree (s->data_statement.exp,
abs_output_section, bfd_abs_section_ptr,
lang_final_phase_enum, dot, &dot); lang_final_phase_enum, dot, &dot);
if (!value.valid_p) if (!value.valid_p)
einfo (_("%F%P: invalid data statement\n")); einfo (_("%F%P: invalid data statement\n"));
s->data_statement.value s->data_statement.value
= value.value + value.section->bfd_section->vma; = value.value + value.section->vma;
} }
{ {
unsigned int size; unsigned int size;
@ -4618,7 +4618,7 @@ lang_do_assignments_1
etree_value_type value; etree_value_type value;
value = exp_fold_tree (s->reloc_statement.addend_exp, value = exp_fold_tree (s->reloc_statement.addend_exp,
abs_output_section, bfd_abs_section_ptr,
lang_final_phase_enum, dot, &dot); lang_final_phase_enum, dot, &dot);
s->reloc_statement.addend_value = value.value; s->reloc_statement.addend_value = value.value;
if (!value.valid_p) if (!value.valid_p)
@ -4644,7 +4644,7 @@ lang_do_assignments_1
case lang_assignment_statement_enum: case lang_assignment_statement_enum:
{ {
exp_fold_tree (s->assignment_statement.exp, exp_fold_tree (s->assignment_statement.exp,
output_section_statement, output_section_statement->bfd_section,
lang_final_phase_enum, lang_final_phase_enum,
dot, dot,
&dot); &dot);