+2005-09-20 Alan Modra <amodra@bigpond.net.au>
+
+ PR ld/1353
+ * ldlang.c (lang_size_sections_1): Process addr_tree earlier,
+ so that unused output section statements affect dot.
+
2005-09-08 Jakub Jelinek <jakub@redhat.com>
* ld.texinfo: Document -z {no,}execstack, -z {no,}relro
lang_output_section_statement_type *os;
os = &s->output_section_statement;
+ if (os->addr_tree != NULL)
+ {
+ os->processed = -1;
+ exp_fold_tree (os->addr_tree, bfd_abs_section_ptr, &dot);
+ os->processed = 0;
+
+ if (!expld.result.valid_p
+ && expld.phase != lang_mark_phase_enum)
+ einfo (_("%F%S: non constant or forward reference"
+ " address expression for section %s\n"),
+ os->name);
+
+ dot = expld.result.value + expld.result.section->vma;
+ }
+
if (os->bfd_section == NULL)
/* This section was removed or never actually created. */
break;
break;
}
+ newdot = dot;
if (bfd_is_abs_section (os->bfd_section))
{
/* No matter what happens, an abs section starts at zero. */
os->name, (unsigned long) (newdot - savedot));
}
}
- else
- {
- newdot = dot;
- os->processed = -1;
- exp_fold_tree (os->addr_tree, bfd_abs_section_ptr,
- &newdot);
- os->processed = 0;
-
- if (!expld.result.valid_p
- && expld.phase != lang_mark_phase_enum)
- einfo (_("%F%S: non constant or forward reference"
- " address expression for section %s\n"),
- os->name);
-
- newdot = expld.result.value + expld.result.section->vma;
- }
/* The section starts here.
First, align to what the section needs. */