From: Andi Kleen <ak@xxxxxxxxxxxxxxx> Due to a bug in gcc 4.6+ it can crash when doing profile feedback with a noreturn function pointer (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49299) Remove the NORETURNs from the die functions for now to work around this. Doesn't seem to make any difference. Signed-off-by: Andi Kleen <ak@xxxxxxxxxxxxxxx> --- usage.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/usage.c b/usage.c index b5e67e3..4045574 100644 --- a/usage.c +++ b/usage.c @@ -12,13 +12,13 @@ void vreportf(const char *prefix, const char *err, va_list params) fprintf(stderr, "%s%s\n", prefix, msg); } -static NORETURN void usage_builtin(const char *err, va_list params) +static void usage_builtin(const char *err, va_list params) { vreportf("usage: ", err, params); exit(129); } -static NORETURN void die_builtin(const char *err, va_list params) +static void die_builtin(const char *err, va_list params) { vreportf("fatal: ", err, params); exit(128); @@ -36,8 +36,8 @@ static void warn_builtin(const char *warn, va_list params) /* If we are in a dlopen()ed .so write to a global variable would segfault * (ugh), so keep things static. */ -static NORETURN_PTR void (*usage_routine)(const char *err, va_list params) = usage_builtin; -static NORETURN_PTR void (*die_routine)(const char *err, va_list params) = die_builtin; +static void (*usage_routine)(const char *err, va_list params) = usage_builtin; +static void (*die_routine)(const char *err, va_list params) = die_builtin; static void (*error_routine)(const char *err, va_list params) = error_builtin; static void (*warn_routine)(const char *err, va_list params) = warn_builtin; -- 1.7.4.4 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html