lkml.org 
[lkml]   [2011]   [Dec]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/2] FRV: Remove the .gnu.build-id note when producing the loadable image
    Date
    Remove the .gnu.build-id note when producing the loadable image as this is
    marked Allocatable in the ELF section table and is marked as being loaded at
    address 0 if the linker is recent enough to generate it:

    [ 1] .note.gnu.build-i NOTE 00000000 004000 000024 00 A 0 0 4

    This is a problem for objcopying the vmlinux file to the loadable image file as
    the objcopy -O binary starts writing the file from the base address of the
    lowest entry in the ELF program headers table:

    LOAD 0x004000 0x00000000 0x00000000 0x00024 0x00024 R 0x4000
    LOAD 0x008000 0xc0000000 0xc0000000 0x2a6138 0x2c9e8c RWE 0x4000
    NOTE 0x004000 0x00000000 0x00000000 0x00024 0x00024 R 0x4

    The kernel actually resides at 0xc0000000 and so objcopy pads the output file
    between the note (at 0) and the kernel, resulting in a 3.3GB file - which
    confuses things like TFTP and RedBoot (when loading raw binary data).

    The old linker - which doesn't produce this note - shows this:

    LOAD 0x001000 0xc0000000 0xc0000000 0x2aa260 0x2aaa54 RWE 0x1000
    LOAD 0x2ab000 0xc02ac000 0xc02ac000 0x00000 0x21d8c RW 0x1000

    Signed-off-by: David Howells <dhowells@redhat.com>
    ---

    arch/frv/boot/Makefile | 10 ++++++----
    1 files changed, 6 insertions(+), 4 deletions(-)


    diff --git a/arch/frv/boot/Makefile b/arch/frv/boot/Makefile
    index 6ae3254..6359c49 100644
    --- a/arch/frv/boot/Makefile
    +++ b/arch/frv/boot/Makefile
    @@ -31,19 +31,21 @@ Image: $(obj)/Image

    targets: $(obj)/Image

    +REMOVE_SECTIONS := -R .note -R .comment -R .note.gnu.build-id
    +
    $(obj)/Image: vmlinux FORCE
    - $(OBJCOPY) -O binary -R .note -R .comment -S vmlinux $@
    + $(OBJCOPY) -O binary $(REMOVE_SECTIONS) -S vmlinux $@

    #$(obj)/Image: $(CONFIGURE) $(SYSTEM)
    -# $(OBJCOPY) -O binary -R .note -R .comment -g -S $(SYSTEM) $@
    +# $(OBJCOPY) -O binary $(REMOVE_SECTIONS) -g -S $(SYSTEM) $@

    bzImage: zImage

    zImage: $(CONFIGURE) compressed/$(LINUX)
    - $(OBJCOPY) -O binary -R .note -R .comment -S compressed/$(LINUX) $@
    + $(OBJCOPY) -O binary $(REMOVE_SECTIONS) -S compressed/$(LINUX) $@

    bootpImage: bootp/bootp
    - $(OBJCOPY) -O binary -R .note -R .comment -S bootp/bootp $@
    + $(OBJCOPY) -O binary $(REMOVE_SECTIONS) -S bootp/bootp $@

    compressed/$(LINUX): $(LINUX) dep
    @$(MAKE) -C compressed $(LINUX)


    \
     
     \ /
      Last update: 2011-12-15 12:15    [W:0.021 / U:61.092 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site