[lkml]   [2011]   [Jun]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[34-longterm 207/247] x86, binutils, xen: Fix another wrong size directive
    From: Alexander van Heukelum <>

    This is a commit scheduled for the next v2.6.34 longterm release.
    If you see a problem with using this for longterm, please comment.

    commit 371c394af27ab7d1e58a66bc19d9f1f3ac1f67b4 upstream.

    The latest binutils ( breaks the build
    yet another time, under CONFIG_XEN=y due to a .size directive that
    refers to a slightly differently named (hence, to the now very
    strict and unforgiving assembler, non-existent) symbol.

    [ mingo:

    This unnecessary build breakage caused by new binutils
    version 2.21 gets escallated back several kernel releases spanning
    several years of Linux history, affecting over 130,000 upstream
    kernel commits (!), on CONFIG_XEN=y 64-bit kernels (i.e. essentially
    affecting all major Linux distro kernel configs).

    Git annotate tells us that this slight debug symbol code mismatch
    bug has been introduced in 2008 in commit 3d75e1b8:

    3d75e1b8 (Jeremy Fitzhardinge 2008-07-08 15:06:49 -0700 1231) ENTRY(xen_do_hypervisor_callback) # do_hypervisor_callback(struct *pt_regs)

    The 'bug' is just a slight assymetry in ENTRY()/END()
    debug-symbols sequences, with lots of assembly code between the
    ENTRY() and the END():

    ENTRY(xen_do_hypervisor_callback) # do_hypervisor_callback(struct *pt_regs)

    Human reviewers almost never catch such small mismatches, and binutils
    never even warned about it either.

    This new binutils version thus breaks the Xen build on all upstream kernels
    since v2.6.27, out of the blue.

    This makes a straightforward Git bisection of all 64-bit Xen-enabled kernels
    impossible on such binutils, for a bisection window of over hundred
    thousand historic commits. (!)

    This is a major fail on the side of binutils and binutils needs to turn
    this show-stopper build failure into a warning ASAP. ]

    Signed-off-by: Alexander van Heukelum <>
    Cc: Jeremy Fitzhardinge <>
    Cc: Jan Beulich <>
    Cc: H.J. Lu <>
    Cc: Linus Torvalds <>
    Cc: Andrew Morton <>
    Cc: "H. Peter Anvin" <>
    Cc: Kees Cook <>
    LKML-Reference: <>
    Signed-off-by: Ingo Molnar <>
    Signed-off-by: Paul Gortmaker <>
    arch/x86/kernel/entry_64.S | 2 +-
    1 files changed, 1 insertions(+), 1 deletions(-)

    diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
    index 0697ff1..a50b6cd 100644
    --- a/arch/x86/kernel/entry_64.S
    +++ b/arch/x86/kernel/entry_64.S
    @@ -1268,7 +1268,7 @@ ENTRY(xen_do_hypervisor_callback) # do_hypervisor_callback(struct *pt_regs)
    decl PER_CPU_VAR(irq_count)
    jmp error_exit

    * Hypervisor uses this for application faults while it executes.

     \ /
      Last update: 2011-06-23 19:53    [W:0.024 / U:5.904 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site