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.
This commit is contained in:
Alan Modra 2015-10-23 10:14:51 +10:30
parent bba037e0ae
commit 1e7eae0dcc
2 changed files with 9 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2015-10-23 Alan Modra <amodra@gmail.com>
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 <hongjiu.lu@intel.com>
PR ld/19161

View File

@ -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. */