From adeca3acc1e4c1b727e8524542c201b436ba8a5b Mon Sep 17 00:00:00 2001 From: Matthew Maurer Date: Thu, 13 Jun 2019 12:33:38 -0700 Subject: [PATCH] Use __attribute__((noreturn)) for function pointer _Noreturn is a C11 construct, and may only be used at the site of a function definition. __attribute__((noreturn)) is a GNU C extension which may be used on function pointers. GCC with any standard permits _Noreturn in the position it's used (likely because it implements it in terms of attribute noreturn), but Clang will reject it for any standard past C11, and warn pre-C11. Musl is written in C99 with GNU C extensions, so __attribute__((noreturn)) is both more correct in that sense and allows us to compile with Clang set to higher language standards. --- src/internal/dynlink.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/internal/dynlink.h b/src/internal/dynlink.h index cbe0a6fe..d2bf6b41 100644 --- a/src/internal/dynlink.h +++ b/src/internal/dynlink.h @@ -95,7 +95,7 @@ struct fdpic_dummy_loadmap { #define DYN_CNT 32 typedef void (*stage2_func)(unsigned char *, size_t *); -typedef _Noreturn void (*stage3_func)(size_t *); +typedef __attribute__((noreturn)) void (*stage3_func)(size_t *); hidden void *__dlsym(void *restrict, const char *restrict, void *restrict); -- 2.22.0.410.gd8fdbe21b5-goog