diff options
author | Alan Modra <amodra@gmail.com> | 2015-10-23 10:14:51 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2015-10-23 10:22:26 +1030 |
commit | 1e7eae0dcc0e5473dda573b30107ffdd501b0d73 (patch) | |
tree | 5d170d977392fcd0784425071d5ec5377e8b0118 /bfd/elflink.c | |
parent | bba037e0aef1f3b17cc6cf6fd041ed6110cc375a (diff) | |
download | gdb-1e7eae0dcc0e5473dda573b30107ffdd501b0d73.zip gdb-1e7eae0dcc0e5473dda573b30107ffdd501b0d73.tar.gz gdb-1e7eae0dcc0e5473dda573b30107ffdd501b0d73.tar.bz2 |
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.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/bfd/elflink.c b/bfd/elflink.c index 06df821..6dcc431 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. */ |