プロフィール

kosaki

Author:kosaki
連絡先はコチラ

ブログ検索
最近の記事
最近のコメント
最近のトラックバック
リンク
カテゴリー
月別アーカイブ
RSSフィード
FC2ブログランキング

スポンサーサイト このエントリーをはてなブックマークに追加

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


スポンサー広告 | 【--------(--) --:--:--】 | Trackback(-) | Comments(-)

gccがweak関数のコンパイルをしくる話は このエントリーをはてなブックマークに追加

結局 Adrian Bunk が以下のパッチを -mmに入れました。
今後、RHEL5.1のgccでカーネルをコンパイルしようとすると、ビルドエラーが起きます。



------------------------------------------------------
Subject: #error for gcc 4.1.{0,1}
From: Adrian Bunk

gcc 4.1.0 and 4.1.1 are known to miscompile the kernel:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27781

Usage of weak functions has become a common pattern in the kernel, and
usages get added in each kernel version increasing the probability of
bugs with each kernel release.

This miscompilation of weak functions can result in subtle runtime
errors.

#error for gcc 4.1.0 and 4.1.1 to prevent users from running into
this bug.

Note:
We already printed a #warning for gcc 4.1.0 due to a different bug.

Signed-off-by: Adrian Bunk
Cc: Roland Dreier
Cc: Ingo Molnar
Cc: Ian Campbell
Cc: Jeremy Fitzhardinge
Cc: Helge Deller
Cc: Rusty Russell
Cc: Kyle McMartin
Cc: Randolph Chung
Cc: Sam Ravnborg
Cc: John David Anglin
Cc: Linus Torvalds
Signed-off-by: Andrew Morton
---

init/main.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff -puN init/main.c~error-for-gcc-4101 init/main.c
--- a/init/main.c~error-for-gcc-4101
+++ a/init/main.c
@@ -81,8 +81,9 @@
* trouble.
*/

-#if __GNUC__ == 4 && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 0
-#warning gcc-4.1.0 is known to miscompile the kernel. A different compiler version is recommended.
+/* due to http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27781 */
+#if __GNUC__ == 4 && __GNUC_MINOR__ == 1 && (__GNUC_PATCHLEVEL__ == 0 || __GNUC_PATCHLEVEL__ == 1)
+#error gcc 4.1.0 and 4.1.1 are known to miscompile the kernel.
#endif

static int kernel_init(void *);
_
関連記事


linux | 【2009-01-01(Thu) 16:52:40】 | Trackback:(0) | Comments:(0)
  1. 無料アクセス解析
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。