| From 45de41ad93590843fabdcdd88576045d1a15c771 Mon Sep 17 00:00:00 2001 |
| From: Alexander van Heukelum <heukelum@fastmail.fm> |
| Date: Fri, 11 Mar 2011 21:59:38 +0100 |
| Subject: [PATCH] x86, binutils, xen: Fix another wrong size directive |
| |
| commit 371c394af27ab7d1e58a66bc19d9f1f3ac1f67b4 upstream. |
| |
| 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@fastmail.fm> |
| Cc: Jeremy Fitzhardinge <jeremy@goop.org> |
| Cc: Jan Beulich <jbeulich@novell.com> |
| Cc: H.J. Lu <hjl.tools@gmail.com> |
| Cc: Linus Torvalds <torvalds@linux-foundation.org> |
| Cc: Andrew Morton <akpm@linux-foundation.org> |
| Cc: "H. Peter Anvin" <hpa@zytor.com> |
| Cc: Kees Cook <kees.cook@canonical.com> |
| LKML-Reference: <1299877178-26063-1-git-send-email-heukelum@fastmail.fm> |
| Signed-off-by: Ingo Molnar <mingo@elte.hu> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| 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 |
| CFI_ENDPROC |
| -END(do_hypervisor_callback) |
| +END(xen_do_hypervisor_callback) |
| |
| /* |
| * Hypervisor uses this for application faults while it executes. |
| -- |
| 1.7.4.4 |
| |