diff options
author | Alan Modra <amodra@gmail.com> | 2011-01-12 12:07:19 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2011-01-12 12:07:19 +0000 |
commit | ea7c2e6c9b3798ae7d73c370857761f130e95e00 (patch) | |
tree | a258cb40d9bd565acdc8376ef33bcfa0a2039c24 /ld/ldlang.c | |
parent | d5ae309f069331dbec7bfd3e5d8c597aa0619ba2 (diff) | |
download | gdb-ea7c2e6c9b3798ae7d73c370857761f130e95e00.zip gdb-ea7c2e6c9b3798ae7d73c370857761f130e95e00.tar.gz gdb-ea7c2e6c9b3798ae7d73c370857761f130e95e00.tar.bz2 |
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/ldlang.c')
-rw-r--r-- | ld/ldlang.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/ld/ldlang.c b/ld/ldlang.c index 5251804..4fe80a8 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -1,6 +1,6 @@ /* Linker command language support. Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. This file is part of the GNU Binutils. @@ -5425,9 +5425,11 @@ lang_size_sections (bfd_boolean *relax, bfd_boolean check_regions) lang_reset_memory_regions (); one_lang_size_sections_pass (relax, check_regions); } + else + expld.dataseg.phase = exp_dataseg_done; } - - expld.phase = lang_final_phase_enum; + else + expld.dataseg.phase = exp_dataseg_done; } /* Worker function for lang_do_assignments. Recursiveness goes here. */ @@ -6520,7 +6522,7 @@ lang_process (void) /* Do all the assignments, now that we know the final resting places of all the symbols. */ - + expld.phase = lang_final_phase_enum; lang_do_assignments (); ldemul_finish (); |