All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Sam Ravnborg <sam@ravnborg.org>
Cc: Yinghai Lu <yinghai@kernel.org>,
	David Howells <dhowells@redhat.com>,
	Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Stephen Rothwell <sfr@canb.auug.org.au>,
	linux-next@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>,
	mel@csn.ul.ie
Subject: [PATCH] kbuild, sparseirq: work around GCC bug with __weak aliases
Date: Fri, 26 Dec 2008 14:42:18 +0100	[thread overview]
Message-ID: <20081226134218.GA1054@elte.hu> (raw)
In-Reply-To: <20081226133354.GC29265@elte.hu>


* Ingo Molnar <mingo@elte.hu> wrote:

> > I recall David Howells had a similar issue with the bootparamter patch 
> > set. The workaround he used was to add a barrier(); call in the weak 
> > function to avoid the inline.
> 
> could we add some extra attribute to __weak that would have a similar 
> effect? Something like __attribute__((noinline)), or something silly 
> like __attribute__((deprecated)) - just to keep gcc from screwing up 
> __weak functions? Perhaps adding a section attribute would have a 
> similar effect? (putting weak definitions into an extra section is 
> probably helpful anyway)

I've applied the patch below to tip/irq/sparseirq - could someone with an 
affected GCC version please check whether this solves the crash?

	Ingo

------------------->
>From 0d41e654c877a0de441448ca2f63a72ed11c5d84 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Fri, 26 Dec 2008 14:39:51 +0100
Subject: [PATCH] kbuild, sparseirq: work around GCC bug with __weak aliases

Impact: fix panic on null pointer with sparseirq

Certain versions of GCC inline the weak global functions.
Work it around by marking __weak functions as noinline.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 include/linux/compiler-gcc.h |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
index 5c8351b..1ad72e6 100644
--- a/include/linux/compiler-gcc.h
+++ b/include/linux/compiler-gcc.h
@@ -41,11 +41,17 @@
 
 #define __deprecated			__attribute__((deprecated))
 #define __packed			__attribute__((packed))
-#define __weak				__attribute__((weak))
 #define __naked				__attribute__((naked))
 #define __noreturn			__attribute__((noreturn))
 
 /*
+ * Mark weak aliases also noinline, because some GCC versions
+ * incorrectly inline weak aliases (even when a non-weak variant
+ * is there) and thus cause crashes:
+ */
+#define __weak				__attribute__((weak)) noinline
+
+/*
  * From the GCC manual:
  *
  * Many functions have no effects except the return value and their

  reply	other threads:[~2008-12-26 13:44 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-16 11:37 linux-next: Tree for December 16 Stephen Rothwell
2008-12-16 23:26 ` Andrew Morton
2008-12-17  6:59   ` linux-next: mtd tree build failures (Was: Re: linux-next: Tree for December 16) Stephen Rothwell
2008-12-17  9:32     ` Artem Bityutskiy
2008-12-17  9:57       ` Stephen Rothwell
2008-12-17  7:07   ` linux-next: Tree for December 16 Artem Bityutskiy
2008-12-17  7:08 ` next-20081216 - powerpc link error 'dynreloc miscount' Kamalesh Babulal
2008-12-17  7:08   ` Kamalesh Babulal
2008-12-17  7:28   ` Sam Ravnborg
2008-12-17  7:28     ` Sam Ravnborg
2008-12-17  7:30   ` Stephen Rothwell
2008-12-19 10:54 ` [BUG] next-20081216 - WARNING: at kernel/smp.c:333 smp_call_function_mask Kamalesh Babulal
2008-12-19 11:51   ` Yinghai Lu
2008-12-19 13:46     ` Kamalesh Babulal
2008-12-19 21:02       ` Yinghai Lu
2008-12-23 13:21         ` Kamalesh Babulal
2008-12-23 21:09           ` Yinghai Lu
2008-12-24 16:34             ` Kamalesh Babulal
2008-12-24 20:34               ` Yinghai Lu
2008-12-26  9:12                 ` Kamalesh Babulal
2008-12-26 10:05                   ` Yinghai Lu
2008-12-26 10:27                     ` Sam Ravnborg
2008-12-26 13:33                       ` Ingo Molnar
2008-12-26 13:42                         ` Ingo Molnar [this message]
2008-12-27  4:09                           ` [PATCH] kbuild, sparseirq: work around GCC bug with __weak aliases Paul Mackerras
2008-12-27 10:59                             ` Ingo Molnar
2008-12-28 23:27                               ` Paul Mackerras
2008-12-26 15:28                       ` [BUG] next-20081216 - WARNING: at kernel/smp.c:333 smp_call_function_mask Kamalesh Babulal
2008-12-26 15:33                         ` Ingo Molnar
2008-12-26 17:04                           ` Kamalesh Babulal
2008-12-26 18:17                             ` Ingo Molnar
2008-12-27  7:11                               ` Kamalesh Babulal
2008-12-27  7:14                                 ` Yinghai Lu
2008-12-27  7:39                                 ` Yinghai Lu
2008-12-27  8:37                                   ` Ingo Molnar
2008-12-27  8:39                                     ` Ingo Molnar
2008-12-27 11:21                                       ` Kamalesh Babulal
2008-12-27 11:24                                         ` Ingo Molnar
2008-12-27 11:57                                           ` Kamalesh Babulal
2008-12-27 12:26                                             ` Ingo Molnar
2008-12-27 15:29                                               ` Kamalesh Babulal
2008-12-27 21:10                                                 ` Yinghai Lu
2008-12-27 21:10                                                   ` Yinghai Lu
2008-12-28 12:55                                                 ` Ingo Molnar
2008-12-28 16:11                                                   ` Kamalesh Babulal
2008-12-28 23:09                                                     ` Yinghai Lu
2008-12-27  5:05                       ` [PATCH] perf_counter: more barrier in blank weak function Yinghai Lu
2008-12-27  5:06                         ` [PATCH] kgdb: " Yinghai Lu
2008-12-27  8:17                           ` Ingo Molnar
2008-12-27  8:34                             ` Andrew Morton
2008-12-27  6:07                         ` [PATCH] perf_counter: " KOSAKI Motohiro
2008-12-27  9:46                     ` [BUG] next-20081216 - WARNING: at kernel/smp.c:333 smp_call_function_mask David Howells
2008-12-27  9:50                       ` Ingo Molnar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20081226134218.GA1054@elte.hu \
    --to=mingo@elte.hu \
    --cc=akpm@linux-foundation.org \
    --cc=dhowells@redhat.com \
    --cc=kamalesh@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-next@vger.kernel.org \
    --cc=mel@csn.ul.ie \
    --cc=sam@ravnborg.org \
    --cc=sfr@canb.auug.org.au \
    --cc=yinghai@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.