[PATCH] gold: NOLOAD behavior compatible with GNU ld.
Johan Karlsson
Johan.Karlsson@enea.com
Wed Oct 7 12:50:00 GMT 2015
I don't know how to build the ARM kernel so I would appreciate if someone could try it out using the patch. This patch together with the fix I did for PR 16711 greatly improves the ELF size when using NOLOAD and lots of bss.
> From: Doug Kwan (關振德) [mailto:dougkwan@google.com]
> Sent: den 7 oktober 2015 00:26
>
> Expected behaviour was gold being able to build an ARM kernel that boots.
> The original patch was added because gold had not been able to build the
> kernel used in Android.
>
> As long as Johan can build an ARM kernel that boots with this patch. I am
> okay.
>
> On Tue, Oct 6, 2015 at 3:18 PM, Cary Coutant <ccoutant@gmail.com> wrote:
> > Based on
> >
> > https://sourceware.org/ml/binutils/2010-04/msg00094.html
> >
> > it seems to me that ripping out the original NOLOAD patch would break
> > building the ARM compressed kernel.
> >
> > Doug, do you remember what the expected behavior was at the time?
> >
> > -cary
> >
> >
> >
> >
> > On Sun, Sep 20, 2015 at 12:54 PM, Doug Kwan (關振德)
> <dougkwan@google.com> wrote:
> >> Looks good to me. I don't have right to approve the patch though.
> >>
> >> On Thu, Sep 17, 2015 at 2:47 AM, Johan Karlsson
> <Johan.Karlsson@enea.com> wrote:
> >>> Hi all,
> >>> This patch makes gold handle the NOLOAD section attribute in the same
> way GNU ld does for elf.
> >>>
> >>> Instead of creating a SHT_PROGBITS with no flags section it creates one
> with SHT_NOBITS and SHF_ALLOC set. With this change all special handling of
> noload sections can be removed and all NOLOAD sections as handled as
> NOBITS.
> >>>
> >>> 2015-09-17 Johan Karlsson <johan.karlsson@enea.com>
> >>>
> >>> NOLOAD section attribute compatible with GNU ld.
> >>>
> >>> * layout.cc (Layout::choose_output_section): Create NOLOAD
> sections as
> >>> SHT_NOBITS and removed special handling of NOLOAD sections.
> >>> (Layout::make_output_section_for_script): Create NOLOAD as
> SHT_NOBIT
> >>> with SHF_ALLOC set.
> >>> * output.cc (Output_section::Output_section): Removed member
> is_noload.
> >>> (Output_section::do_reset_address_and_file_offset): Removed
> special
> >>> handling of NOLOAD.
> >>> * output.h (Output_section): Removed is_noload() and
> set_is_noload().
> >>> removed member is_noload_.
> >>> * script-sections.cc
> (Output_section_definition::set_section_addresses):
> >>> removed special handling of NOLOAD.
> >>> (Sort_output_sections::operator()): Removed sorting of NOLOAD
> sections.
> >>>
More information about the Binutils
mailing list