summaryrefslogtreecommitdiff
path: root/bfd/elflink.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2015-10-23 10:14:51 +1030
committerAlan Modra <amodra@gmail.com>2015-10-23 10:22:26 +1030
commit1e7eae0dcc0e5473dda573b30107ffdd501b0d73 (patch)
tree5d170d977392fcd0784425071d5ec5377e8b0118 /bfd/elflink.c
parentbba037e0aef1f3b17cc6cf6fd041ed6110cc375a (diff)
Re: Always keep sections marked with SEC_KEEP
Revert bba037e0, it breaks the gc-sections model. Instead fix the underlying problem which is that _bfd_elf_gc_mark_hook is too late to be setting SEC_KEEP. PR ld/11133 PR ld/19161 * elflink.c (elf_gc_sweep): Revert last patch. (_bfd_elf_gc_mark_hook): Don't set SEC_KEEP here.
Diffstat (limited to 'bfd/elflink.c')
-rw-r--r--bfd/elflink.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 06df821956..6dcc43181c 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -12101,7 +12101,7 @@ _bfd_elf_gc_mark_hook (asection *sec,
{
sec = bfd_get_section_by_name (i, sec_name);
if (sec)
- sec->flags |= SEC_KEEP;
+ return sec;
}
}
break;
@@ -12449,8 +12449,7 @@ elf_gc_sweep (bfd *abfd, struct bfd_link_info *info)
o->gc_mark = first->gc_mark;
}
- /* Always keep sections marked with SEC_KEEP. */
- if (o->gc_mark || (o->flags & SEC_KEEP))
+ if (o->gc_mark)
continue;
/* Skip sweeping sections already excluded. */