aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2014-10-13 15:18:21 +1030
committerAlan Modra <amodra@gmail.com>2014-10-13 22:58:44 +1030
commit5b69e3572d1ee8e8e6e1991fd07f87a96c48746d (patch)
treee5688986dcaa7b0882440ee3f568f55f3cb03e58 /ld
parentc780cc2f5062451a568458b6ef9b8aef7cc1dd8a (diff)
downloadgdb-5b69e3572d1ee8e8e6e1991fd07f87a96c48746d.zip
gdb-5b69e3572d1ee8e8e6e1991fd07f87a96c48746d.tar.gz
gdb-5b69e3572d1ee8e8e6e1991fd07f87a96c48746d.tar.bz2
Run eh_frame optimisation for relocatable link
The idea here is to drop .eh_frame FDEs corresponding to dropped comdat group sections or linkonce sections, but not perform changes in encoding. bfd/ PR 17467 * elf-eh-frame.c (ENSURE_NO_RELOCS): Don't stop at first NONE reloc. (_bfd_elf_parse_eh_frame): When relocatable output, don't set flags enabling conversion of CIEs and FDEs to use relative encoding. (find_merged_cie): Similarly. (_bfd_elf_write_section_eh_frame): Don't edit FDEs when relocatable, except for CIE pointer. * elflink.c (bfd_elf_reloc_symbol_deleted_p): Return true for relocs against symbols in dropped comdat group sections. (bfd_elf_discard_info): Do some eh_frame optimisation when relocatable. ld/ * ldlang.c (lang_add_section): Set up map_head.s and map_tail.s when relocatable.
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog5
-rw-r--r--ld/ldlang.c3
2 files changed, 6 insertions, 2 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index ca27cc2..effacb0 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+2014-10-13 Alan Modra <amodra@gmail.com>
+
+ * ldlang.c (lang_add_section): Set up map_head.s and map_tail.s when
+ relocatable.
+
2014-09-16 Kuan-Lin Chen <kuanlinchentw@gmail.com>
* emultempl/nds32elf.em (nds32_elf_after_open): Do not keep
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 899f710..5960e5c 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -2411,8 +2411,7 @@ lang_add_section (lang_statement_list_type *ptr,
section->output_section = output->bfd_section;
- if (!link_info.relocatable
- && !map_head_is_link_order)
+ if (!map_head_is_link_order)
{
asection *s = output->bfd_section->map_tail.s;
output->bfd_section->map_tail.s = section;