Fwd: [stable] [heukelum at fastmail.fm: [tip:x86/asm] x86, binutils, xen: Fix another wrong size directive]

Stefan Bader stefan.bader at canonical.com
Mon Mar 21 08:40:16 UTC 2011


While this fix is only related to Xen, the story may be interesting/good to know
generally.

-Stefan

-------- Original Message --------
Subject: [stable] [heukelum at fastmail.fm: [tip:x86/asm] x86, binutils, xen: Fix
another wrong size directive]
Date: Sat, 19 Mar 2011 18:57:37 +0100
From: Ingo Molnar <mingo at elte.hu>
To: stable kernel team <stable at kernel.org>


hi,

Please apply the commit below to -stable: new binutils broke the kernel build
back to and including v2.6.27.

Thanks!

	Ingo

----- Forwarded message from tip-bot for Alexander van Heukelum
<heukelum at fastmail.fm> -----

Date: Sat, 12 Mar 2011 08:04:00 GMT
From: tip-bot for Alexander van Heukelum <heukelum at fastmail.fm>
To: linux-tip-commits at vger.kernel.org
Cc: linux-kernel at vger.kernel.org, hpa at zytor.com, mingo at redhat.com,
	torvalds at linux-foundation.org, heukelum at fastmail.fm,
	jeremy at goop.org, akpm at linux-foundation.org, jbeulich at novell.com,
	kees.cook at canonical.com, tglx at linutronix.de, mingo at elte.hu,
	hjl.tools at gmail.com
Subject: [tip:x86/asm] x86, binutils, xen: Fix another wrong size directive

Commit-ID:  371c394af27ab7d1e58a66bc19d9f1f3ac1f67b4
Gitweb:     http://git.kernel.org/tip/371c394af27ab7d1e58a66bc19d9f1f3ac1f67b4
Author:     Alexander van Heukelum <heukelum at fastmail.fm>
AuthorDate: Fri, 11 Mar 2011 21:59:38 +0100
Committer:  Ingo Molnar <mingo at elte.hu>
CommitDate: Sat, 12 Mar 2011 09:02:29 +0100

x86, binutils, xen: Fix another wrong size directive

The latest binutils (2.21.0.20110302/Ubuntu) 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)
       ...
     END(do_hypervisor_callback)

   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 <heukelum at fastmail.fm>
Cc: Jeremy Fitzhardinge <jeremy at goop.org>
Cc: Jan Beulich <jbeulich at novell.com>
Cc: H.J. Lu <hjl.tools at gmail.com>
Cc: Linus Torvalds <torvalds at linux-foundation.org>
Cc: Andrew Morton <akpm at linux-foundation.org>
Cc: "H. Peter Anvin" <hpa at zytor.com>
Cc: Kees Cook <kees.cook at canonical.com>
LKML-Reference: <1299877178-26063-1-git-send-email-heukelum at fastmail.fm>
Signed-off-by: Ingo Molnar <mingo at elte.hu>
---
 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 aed1ffb..bbd5c80 100644
--- a/arch/x86/kernel/entry_64.S
+++ b/arch/x86/kernel/entry_64.S
@@ -1248,7 +1248,7 @@ ENTRY(xen_do_hypervisor_callback)   #
do_hypervisor_callback(struct *pt_regs)
 	decl PER_CPU_VAR(irq_count)
 	jmp  error_exit
 	CFI_ENDPROC
-END(do_hypervisor_callback)
+END(xen_do_hypervisor_callback)

 /*
  * Hypervisor uses this for application faults while it executes.

----- End forwarded message -----

-- 
Thanks,

	Ingo

_______________________________________________
stable mailing list
stable at linux.kernel.org
http://linux.kernel.org/mailman/listinfo/stable




More information about the kernel-team mailing list