From c4bcc86ed075f3169a0df0f91bbb31f5bc2788ef Mon Sep 17 00:00:00 2001 From: "Sven M. Hallberg" Date: Wed, 20 Nov 2019 17:45:36 +0100 Subject: [PATCH 1/3] don't disable -Wclobber on clang --- src/backends/regex.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backends/regex.c b/src/backends/regex.c index 9646ddd..c10c258 100644 --- a/src/backends/regex.c +++ b/src/backends/regex.c @@ -223,7 +223,7 @@ bool svm_stack_ensure_cap(HAllocator *mm__, HSVMContext *ctx, size_t addl) { * the second return; here, the only variables that could matter for * are arena and ctx (because they're referenced in "goto fail"). */ -#ifdef __GNUC__ +#if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunknown-pragmas" #pragma GCC diagnostic ignored "-Wclobbered" @@ -311,7 +311,7 @@ HParseResult *run_trace(HAllocator *mm__, HRVMProg *orig_prog, HRVMTrace *trace, return NULL; } // Reenable -Wclobber -#ifdef __GNUC__ +#if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic pop #endif From 7ee0e78525e4d6e1c46d1a6b5afc346a8a3a2b69 Mon Sep 17 00:00:00 2001 From: "Sven M. Hallberg" Date: Wed, 20 Nov 2019 17:45:57 +0100 Subject: [PATCH 2/3] (for GCC) also disable -Wclobber in lr.c --- src/backends/lr.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/backends/lr.c b/src/backends/lr.c index f2ac495..6919bf6 100644 --- a/src/backends/lr.c +++ b/src/backends/lr.c @@ -420,6 +420,12 @@ void h_lr_parse_start(HSuspendedParser *s) s->backend_state = engine; } +// cf. comment before run_trace in regex.c +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunknown-pragmas" +#pragma GCC diagnostic ignored "-Wclobbered" +#endif bool h_lr_parse_chunk(HSuspendedParser* s, HInputStream *stream) { HLREngine *engine = s->backend_state; @@ -457,6 +463,10 @@ bool h_lr_parse_chunk(HSuspendedParser* s, HInputStream *stream) *stream = engine->input; return !run; // done if engine no longer running } +// Reenable -Wclobber +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic pop +#endif HParseResult *h_lr_parse_finish(HSuspendedParser *s) { From 9cac052b458e849d839b506c45ca1e89c032b2d8 Mon Sep 17 00:00:00 2001 From: "Sven M. Hallberg" Date: Wed, 20 Nov 2019 17:47:26 +0100 Subject: [PATCH 3/3] OpenBSD needs _BSD_SOURCE, not _GNU_SOURCE, for vasprintf --- src/platform_bsdlike.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/platform_bsdlike.c b/src/platform_bsdlike.c index 2ccf874..ffe1e64 100644 --- a/src/platform_bsdlike.c +++ b/src/platform_bsdlike.c @@ -1,4 +1,8 @@ +#ifdef __OpenBSD__ +#define _BSD_SOURCE // to obtain asprintf/vasprintf +#else #define _GNU_SOURCE // to obtain asprintf/vasprintf +#endif #include "platform.h" #include