From b801444251f6c342c3daad2152f9a4f7215ea8ee Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Sun, 21 Jun 2020 12:31:48 +0200 Subject: Fix some warnings and move include statement to common.h MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- arg.h | 4 ++-- common.h | 16 ++++++++++++++++ sctrace.c | 7 ++++--- util.c | 5 +++++ 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/arg.h b/arg.h index 971fc79..4f35620 100644 --- a/arg.h +++ b/arg.h @@ -9,7 +9,7 @@ extern char *argv0; /* use main(int argc, char *argv[]) */ -#define ARGBEGIN for (argv0 = *argv, argv++, argc--;\ +#define ARGBEGIN do { for (argv0 = *argv, argv++, argc--;\ argv[0] && argv[0][0] && argv[0][1];\ argc--, argv++) {\ char argc_;\ @@ -55,7 +55,7 @@ extern char *argv0; } else {\ break;\ }\ - } + } } while (0) #define ARGC() argc_ diff --git a/common.h b/common.h index 672aa37..43edb74 100644 --- a/common.h +++ b/common.h @@ -1,4 +1,5 @@ /* See LICENSE file for copyright and license details. */ +#include #include #include #include @@ -12,6 +13,21 @@ #include #include +#if defined(__clang__) +# define FALL_THROUGH __attribute__((fallthrough)); +#else +# define FALL_THROUGH +#endif + +#if defined(__clang__) +# pragma clang diagnostic ignored "-Wdisabled-macro-expansion" +# pragma clang diagnostic ignored "-Wpadded" +#elif defined(__GNUC__) +# pragma GCC diagnostic ignored "-Wpadded" +# pragma GCC diagnostic ignored "-Wsuggest-attribute=pure" +# pragma GCC diagnostic ignored "-Wsuggest-attribute=format" +#endif + #if defined(__linux__) # include "linux/os.h" #else diff --git a/sctrace.c b/sctrace.c index d7e1766..c13c5bb 100644 --- a/sctrace.c +++ b/sctrace.c @@ -1,14 +1,12 @@ /* See LICENSE file for copyright and license details. */ #include "common.h" -#include - char *argv0; static unsigned long int trace_options = PTRACE_O_EXITKILL | PTRACE_O_TRACESYSGOOD | PTRACE_O_TRACEEXEC; -static void +_Noreturn static void usage(void) { fprintf(stderr, "usage: %s [-o trace-output-file] [-ft] (command | -0 command argv0) [argument] ...\n", argv0); @@ -75,6 +73,7 @@ handle_syscall(struct process *proc) case Exec: proc->silent_until_execed -= (proc->silent_until_execed == 2); + FALL_THROUGH /* fall through */ case VforkParent: if (ptrace(PTRACE_SYSCALL, proc->pid, NULL, 0)) @@ -105,6 +104,7 @@ handle_event(struct process *proc, int status) case PTRACE_EVENT_VFORK: tprintf(proc, "\nProcess stopped by vfork until child exits or exec(2)s\n"); + FALL_THROUGH /* fall through */ case PTRACE_EVENT_FORK: case PTRACE_EVENT_CLONE: @@ -198,6 +198,7 @@ main(int argc, char **argv) case 'f': trace_options |= PTRACE_O_TRACEFORK; trace_options |= PTRACE_O_TRACEVFORK; + FALL_THROUGH /* fall through */ case 't': trace_options |= PTRACE_O_TRACECLONE; diff --git a/util.c b/util.c index b2d8341..7888133 100644 --- a/util.c +++ b/util.c @@ -2,6 +2,11 @@ #include "common.h" +#if defined(__GNUC__) || defined(__clang__) +# pragma GCC diagnostic ignored "-Wformat-nonliteral" +#endif + + static FILE *trace_fp; static char last_char = '\n'; static pid_t last_pid = 0; -- cgit v1.2.3-70-g09d2