summaryrefslogtreecommitdiff
path: root/ld/ldexp.h
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2011-01-12 12:07:19 +0000
committerAlan Modra <amodra@bigpond.net.au>2011-01-12 12:07:19 +0000
commit19f43cc1c8b21de0f5cefd57971d0703bee5d809 (patch)
tree5386d31af1af71f9be8ec9dcbf6ca26c5d4fb598 /ld/ldexp.h
parentde1174204492861212f8676d1386cbbec3e76008 (diff)
downloadbinutils-redhat-19f43cc1c8b21de0f5cefd57971d0703bee5d809.tar.gz
PR ld/12380
* ldexp.h (enum phase_enum): Comment. Add exp_dataseg_done. * ldexp.c (fold_unary <DATA_SEGMENT_END>): Rearrange code. Test for exp_dataseg_done rather than expld.phase == lang_final_phase_enum to detect when we've finished sizing sections. (fold_binary <DATA_SEGMENT_ALIGN>): Likewise. (fold_binary <DATA_SEGMENT_RELRO_END>): Likewise. Also test that we are not inside an output section statement. * ldlang.c (lang_size_sections): Set exp_dataseg_done on exit if not exp_dataseg_relro_adjust or exp_dataseg_adjust. Don't set lang_final_phase_enum here. (lang_process): Set lang_final_phase_enum here.
Diffstat (limited to 'ld/ldexp.h')
-rw-r--r--ld/ldexp.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/ld/ldexp.h b/ld/ldexp.h
index 31a06ac86b..6c94be2eab 100644
--- a/ld/ldexp.h
+++ b/ld/ldexp.h
@@ -1,6 +1,6 @@
/* ldexp.h -
Copyright 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001, 2002,
- 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
+ 2003, 2004, 2005, 2007, 2011 Free Software Foundation, Inc.
This file is part of the GNU Binutils.
@@ -103,12 +103,17 @@ typedef enum {
union lang_statement_union;
enum phase_enum {
+ /* We step through the first four states here as we see the
+ associated linker script tokens. */
exp_dataseg_none,
exp_dataseg_align_seen,
exp_dataseg_relro_seen,
exp_dataseg_end_seen,
+ /* The last three states are final, and affect the value returned
+ by DATA_SEGMENT_ALIGN. */
exp_dataseg_relro_adjust,
- exp_dataseg_adjust
+ exp_dataseg_adjust,
+ exp_dataseg_done
};
enum relro_enum {