okuの日記: -fno-builtin-sprintf
日記 by
oku
某友人からのメールに曰く、
遊んでいたら GCC 4.1.1 (または GNU libc 2.5) のバグを見つけたよ
#include <stdio.h>
void foobar(char *name)
{
char buf[256];
sprintf(buf, "%s");
}
ちなみにこれ↑、GCC-4.x では internal compiler error になります。 GCC-3.x だと大丈夫です。
というわけで、ちょっと調査してみてお返事しました。
これ、compiler builtin のバグぽいですね。
-fno-builtin とか
-fno-builtin-sprintf したら通りました。
再現への最短手はこんな感じかな。
extern int
sprintf(char *__restrict__,
const char *__restrict__,
...) __attribute__ ((__nothrow__));
int main(void)
{
char name[] = "";
sprintf(name, "%s");
return 0;
}
一応、試したのは Gentoo Linux の GCC-4.1.1 だったので、まずは、と言う感じで Gentoo Bugzilla の #163623 へ報告してみました。 で、まあ、色々あった挙げ句、既に 2007-01-17 に本家に #30473 として報告されてることが分かりました。
というわけで、今はそちらのパッチが Gentoo に取り込まれるのを待っています。
-fno-builtin-sprintf More ログイン