diff options
author | Alan Modra <amodra@gmail.com> | 2015-01-17 21:33:43 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2015-01-19 21:26:30 +1030 |
commit | c4621b339e6f3153649898b254685f72df8c013d (patch) | |
tree | 4072fc9a77851dc3acf41c40b3452db137a2c7a5 /bfd/elf-bfd.h | |
parent | 740bdc67c057ee8012327420848eb134e1db4211 (diff) | |
download | binutils-gdb-c4621b339e6f3153649898b254685f72df8c013d.tar.gz |
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 'bfd/elf-bfd.h')
-rw-r--r-- | bfd/elf-bfd.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index da7c5220744..49ffe797af5 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -241,7 +241,8 @@ struct elf_link_hash_entry _bfd_elf_symbol_refs_local_p (H, INFO, 1) /* Common symbols that are turned into definitions don't have the - DEF_REGULAR flag set, so they might appear to be undefined. */ + DEF_REGULAR flag set, so they might appear to be undefined. + Symbols defined in linker scripts also don't have DEF_REGULAR set. */ #define ELF_COMMON_DEF_P(H) \ (!(H)->def_regular \ && !(H)->def_dynamic \ |