From: Alan Modra Date: Thu, 22 Oct 2015 23:44:51 +0000 (+1030) Subject: Re: Always keep sections marked with SEC_KEEP X-Git-Tag: users/ARM/embedded-binutils-2_26-branch-2016q1~333 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1e7eae0dcc0e5473dda573b30107ffdd501b0d73;p=external%2Fbinutils.git 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. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 60b79ed..481d972 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2015-10-23 Alan Modra + + 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. + 2015-10-22 H.J. Lu PR ld/19161 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. */