This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] gold: NOLOAD behavior compatible with GNU ld.


I talked to the Android folks and it seems that they have never used
gold to build their kernels.  I will contact the ChromeOS folks to see
if they can help testing your patch.

I did some digging and found that NOLOAD is only use in the 2.x kernels:

https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/arch/arm/boot/compressed/vmlinux.lds.in?id=refs/tags/v2.6.32.68#n54

It is used to mark the stack for the decompression.   Interestingly,
the NOLOAD keyword is removed in 3.x kernels and above.

https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/arch/arm/boot/compressed/vmlinux.lds.in?id=b0c4d4ee4e4f13fa3f017c00319a18c1ea31b7d7

So, this patch should not affect any ARM kernel 3.x or above.

I tried to test this patch on my ARMv7 system but the 2.6x does not
build with my environment.  I will try another approach tomorrow.

On Tue, Oct 13, 2015 at 12:41 AM, Doug Kwan (éæå) <dougkwan@google.com> wrote:
> It seems that Android prebuilt kernel toolchain is not configured with
> gold.  Let me talk to the Android Team and see if building the kernel
> with gold is still supported.  I have not worked on Android for more
> than a couple of years.  I am not sure if we ever use gold to build
> production Android kernel.
>
> On Wed, Oct 7, 2015 at 10:15 PM, Doug Kwan (éæå) <dougkwan@google.com> wrote:
>> I can test Johan's patch and see if it build the ARM kernel.
>>
>> On Wed, Oct 7, 2015 at 5:49 AM, Johan Karlsson <Johan.Karlsson@enea.com> wrote:
>>> 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.
>>>> >>>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]