lkml.org 
[lkml]   [2009]   [Oct]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:x86/urgent] x86: Document linker script ASSERT() quirk
    Commit-ID:  a5912f6b3e20c137172460e6d4dd180866c00963
    Gitweb: http://git.kernel.org/tip/a5912f6b3e20c137172460e6d4dd180866c00963
    Author: Ingo Molnar <mingo@elte.hu>
    AuthorDate: Fri, 16 Oct 2009 07:18:46 +0200
    Committer: Ingo Molnar <mingo@elte.hu>
    CommitDate: Fri, 16 Oct 2009 07:18:46 +0200

    x86: Document linker script ASSERT() quirk

    Older binutils breaks if ASSERT() is used without a sink
    for the output.

    For example 2.14.90.0.6 is known to be broken, the link
    fails with:

    LD .tmp_vmlinux1
    ld:arch/x86/kernel/vmlinux.lds:678: parse error

    Document this quirk in all three files that use it.

    See: http://marc.info/?l=linux-kbuild&m=124930110427870&w=2
    See[2]: d2ba8b2 ("x86: Fix assert syntax in vmlinux.lds.S")

    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Roland McGrath <roland@redhat.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Sam Ravnborg <sam@ravnborg.org>
    LKML-Reference: <4AD6523D.5030909@zytor.com>
    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    ---
    arch/x86/boot/setup.ld | 3 +++
    arch/x86/kernel/acpi/realmode/wakeup.lds.S | 3 +++
    arch/x86/kernel/vmlinux.lds.S | 3 +++
    3 files changed, 9 insertions(+), 0 deletions(-)

    diff --git a/arch/x86/boot/setup.ld b/arch/x86/boot/setup.ld
    index 0f6ec45..03c0683 100644
    --- a/arch/x86/boot/setup.ld
    +++ b/arch/x86/boot/setup.ld
    @@ -53,6 +53,9 @@ SECTIONS

    /DISCARD/ : { *(.note*) }

    + /*
    + * The ASSERT() sink to . is intentional, for binutils 2.14 compatibility:
    + */
    . = ASSERT(_end <= 0x8000, "Setup too big!");
    . = ASSERT(hdr == 0x1f1, "The setup header has the wrong offset!");
    /* Necessary for the very-old-loader check to work... */
    diff --git a/arch/x86/kernel/acpi/realmode/wakeup.lds.S b/arch/x86/kernel/acpi/realmode/wakeup.lds.S
    index 7da00b7..060fff8 100644
    --- a/arch/x86/kernel/acpi/realmode/wakeup.lds.S
    +++ b/arch/x86/kernel/acpi/realmode/wakeup.lds.S
    @@ -57,5 +57,8 @@ SECTIONS
    *(.note*)
    }

    + /*
    + * The ASSERT() sink to . is intentional, for binutils 2.14 compatibility:
    + */
    . = ASSERT(_end <= WAKEUP_SIZE, "Wakeup too big!");
    }
    diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
    index 92929fb..3c68fe2 100644
    --- a/arch/x86/kernel/vmlinux.lds.S
    +++ b/arch/x86/kernel/vmlinux.lds.S
    @@ -305,6 +305,9 @@ SECTIONS


    #ifdef CONFIG_X86_32
    +/*
    + * The ASSERT() sink to . is intentional, for binutils 2.14 compatibility:
    + */
    . = ASSERT((_end - LOAD_OFFSET <= KERNEL_IMAGE_SIZE),
    "kernel image bigger than KERNEL_IMAGE_SIZE");
    #else

    \
     
     \ /
      Last update: 2009-10-16 07:35    [W:0.024 / U:1.536 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site