aboutsummaryrefslogtreecommitdiff
path: root/ld/ldlang.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2015-01-17 21:33:43 +1030
committerAlan Modra <amodra@gmail.com>2015-01-19 21:26:30 +1030
commitc4621b339e6f3153649898b254685f72df8c013d (patch)
tree4072fc9a77851dc3acf41c40b3452db137a2c7a5 /ld/ldlang.c
parent740bdc67c057ee8012327420848eb134e1db4211 (diff)
downloadgdb-c4621b339e6f3153649898b254685f72df8c013d.zip
gdb-c4621b339e6f3153649898b254685f72df8c013d.tar.gz
gdb-c4621b339e6f3153649898b254685f72df8c013d.tar.bz2
Fix garbage collection of common symbols
Running lang_common before garbage collection means slightly less work in garbage collection code, since common symbols should no longer appear there. It does have the side effect of keeping linker script symbols (at least those defined outside of sections) global too, hence some testsuite churn. bfd/ PR 17165 * elf-bfd.h (ELF_COMMON_DEF): Note that this might be true for linker script assignments too. * elflink.c (elf_gc_sweep_symbol): Don't drop ELF_COMMON_DEF syms. (bfd_elf_gc_mark_dynamic_ref_symbol): Similarly. ld/ PR 17165 * ldlang.c (lang_process): Run lang_common before lang_gc_sections. ld/testsuite/ * ld-gc/pr14265.d, * ld-cris/tls-gc-68.d, * ld-cris/tls-gc-69.d, * ld-cris/tls-gc-70.d, * ld-cris/tls-gc-71.d, * ld-cris/tls-gc-75.d, * ld-cris/tls-gc-76.d, * ld-cris/tls-gc-79.d, * ld-mmix/bpo-10.d, * ld-mmix/bpo-11.d: Update.
Diffstat (limited to 'ld/ldlang.c')
-rw-r--r--ld/ldlang.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 9f3d209..0c72333 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -6701,12 +6701,12 @@ lang_process (void)
lang_do_assignments (lang_mark_phase_enum);
expld.phase = lang_first_phase_enum;
- /* Remove unreferenced sections if asked to. */
- lang_gc_sections ();
-
/* Size up the common data. */
lang_common ();
+ /* Remove unreferenced sections if asked to. */
+ lang_gc_sections ();
+
/* Update wild statements. */
update_wild_statements (statement_list.head);