This patch makes all the "die" functions in trace-cmd noreturn in order we to be able to use them in negative code paths inside non-void functions, without getting compiler warnings and, clearly, without work-arounds like non-sense return statements after a die().
Signed-off-by: Vladislav Valtchev (VMware) <vladislav.valtc...@gmail.com> --- trace-cmd.h | 2 ++ trace-local.h | 6 +++--- trace-util.c | 8 +++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/trace-cmd.h b/trace-cmd.h index 3fb6aab..6fd34d7 100644 --- a/trace-cmd.h +++ b/trace-cmd.h @@ -23,6 +23,8 @@ #include "event-parse.h" #define ARRAY_SIZE(_a) (sizeof(_a) / sizeof((_a)[0])) +#define __weak __attribute__((weak)) +#define __noreturn __attribute__((noreturn)) #define TRACECMD_ERR_MSK ((unsigned long)(-1) & ~((1UL << 14) - 1)) #define TRACECMD_ISERR(ptr) ((unsigned long)(ptr) > TRACECMD_ERR_MSK) diff --git a/trace-local.h b/trace-local.h index cb47e78..a06dc9b 100644 --- a/trace-local.h +++ b/trace-local.h @@ -212,9 +212,9 @@ void show_instance_file(struct buffer_instance *instance, const char *name); int count_cpus(void); /* No longer in event-utils.h */ -void die(const char *fmt, ...); /* Can be overriden */ +void __noreturn die(const char *fmt, ...); /* Can be overriden */ void *malloc_or_die(unsigned int size); /* Can be overridden */ -void __die(const char *fmt, ...); -void __vdie(const char *fmt, va_list ap); +void __noreturn __die(const char *fmt, ...); +void __noreturn _vdie(const char *fmt, va_list ap); #endif /* __TRACE_LOCAL_H */ diff --git a/trace-util.c b/trace-util.c index 45fa95a..0f53e16 100644 --- a/trace-util.c +++ b/trace-util.c @@ -1613,7 +1613,7 @@ void tracecmd_put_tracing_file(char *name) free(name); } -void __vdie(const char *fmt, va_list ap) +void __noreturn __vdie(const char *fmt, va_list ap) { int ret = errno; @@ -1629,7 +1629,7 @@ void __vdie(const char *fmt, va_list ap) exit(ret); } -void __die(const char *fmt, ...) +void __noreturn __die(const char *fmt, ...) { va_list ap; @@ -1638,9 +1638,7 @@ void __die(const char *fmt, ...) va_end(ap); } -#define __weak __attribute__((weak)) - -void __weak die(const char *fmt, ...) +void __weak __noreturn die(const char *fmt, ...) { va_list ap; -- 2.14.1