[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 1/7] meson: Run some compiler checks using -Wno-unused-val
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH v3 1/7] meson: Run some compiler checks using -Wno-unused-value |
Date: |
Thu, 19 Dec 2024 18:39:15 +0100 |
User-agent: |
Mozilla Thunderbird |
On 19/12/24 01:37, Nicholas Piggin wrote:
On Thu Dec 19, 2024 at 4:21 AM AEST, Philippe Mathieu-Daudé wrote:
When running Clang static analyzer on macOS I'm getting:
include/qemu/osdep.h:634:8: error: redefinition of 'iovec'
634 | struct iovec {
| ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_iovec_t.h:31:8:
note: previous definition is here
31 | struct iovec {
| ^
1 error generated.
Looking at meson-logs.txt, the analyzer enables -Wunused-value
making meson generated code to fail:
Code:
#include <sys/uio.h>
void bar(void) {
sizeof(struct iovec);
}
-----------
stderr:
meson-private/tmpe8_1b_00/testfile.c:3:13: error: expression result unused
[-Werror,-Wunused-value]
3 | sizeof(struct iovec);
| ^~~~~~~~~~~~~~~~~~~~
1 error generated.
-----------
Checking for type "struct iovec" : NO
Code:
#include <utmpx.h>
void bar(void) {
sizeof(struct utmpx);
}
-----------
stderr:
meson-private/tmp3n0u490p/testfile.c:3:13: error: expression result unused
[-Werror,-Wunused-value]
3 | sizeof(struct utmpx);
| ^~~~~~~~~~~~~~~~~~~~
1 error generated.
-----------
Checking for type "struct utmpx" : NO
Code:
#include <getopt.h>
int main(void) {
/* If it's not defined as a macro, try to use as a symbol */
#ifndef optreset
optreset;
#endif
return 0;
}
-----------
stderr:
meson-private/tmp1rzob_os/testfile.c:6:17: error: expression result unused
[-Werror,-Wunused-value]
6 | optreset;
| ^~~~~~~~
1 error generated.
-----------
Header "getopt.h" has symbol "optreset" : NO
Code:
#include <vmnet/vmnet.h>
int main(void) {
/* If it's not defined as a macro, try to use as a symbol */
#ifndef VMNET_BRIDGED_MODE
VMNET_BRIDGED_MODE;
#endif
return 0;
}
-----------
stderr:
meson-private/tmpl9jgsxpt/testfile.c:6:17: error: expression result unused
[-Werror,-Wunused-value]
6 | VMNET_BRIDGED_MODE;
| ^~~~~~~~~~~~~~~~~~
1 error generated.
-----------
Header "vmnet/vmnet.h" has symbol "VMNET_BRIDGED_MODE" with dependency
appleframeworks: NO
../meson.build:1174: WARNING: vmnet.framework API is outdated, disabling
Fix by explicitly disabling -Wunused-value from these meson checks.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
RFC: Probably meson should do that in has_header_symbol() / has_type()?
I don't know about the build system to answer this, but should we
instead disable -Werror on these tests to be a bit more future-proof?
Compilers often add new warnings or catch more cases of existing
warnings.
Sorry, I didn't mean to include this patch in this series. I happen
to have my series on top of it and forgot to change the base commit.
Alternative would be to keep -Werror but fail the build if a test
throws a warning, but that seems like a lot more work for little
benefit...
I'm trying to fix it on the meson side with this:
-- >8 --
diff --git a/mesonbuild/compilers/mixins/clike.py
b/mesonbuild/compilers/mixins/clike.py
index d56547b47..9d6957973 100644
--- a/mesonbuild/compilers/mixins/clike.py
+++ b/mesonbuild/compilers/mixins/clike.py
@@ -360,7 +360,7 @@ class CLikeCompiler(Compiler):
int main(void) {{
/* If it's not defined as a macro, try to use as a symbol */
#ifndef {symbol}
- {symbol};
+ (void) {symbol};
#endif
return 0;
}}'''
@@ -885,7 +885,8 @@ class CLikeCompiler(Compiler):
dependencies: T.Optional[T.List['Dependency']] =
None) -> T.Tuple[bool, bool]:
t = f'''{prefix}
void bar(void) {{
- (void) sizeof({typename});
+ size_t foo = sizeof({typename});
+ (void) foo;
}}'''
return self.compiles(t, env, extra_args=extra_args,
dependencies=dependencies)
---
- [PATCH v3 0/7] hw/ppc: Remove tswap() calls, Philippe Mathieu-Daudé, 2024/12/18
- [PATCH v3 1/7] meson: Run some compiler checks using -Wno-unused-value, Philippe Mathieu-Daudé, 2024/12/18
- [PATCH v3 2/7] hw/ppc/spapr: Convert HPTE() macro as hpte_get() method, Philippe Mathieu-Daudé, 2024/12/18
- [PATCH v3 3/7] hw/ppc/spapr: Convert HPTE_VALID() macro as hpte_is_valid() method, Philippe Mathieu-Daudé, 2024/12/18
- [PATCH v3 4/7] hw/ppc/spapr: Convert HPTE_DIRTY() macro as hpte_is_dirty() method, Philippe Mathieu-Daudé, 2024/12/18
- [PATCH v3 5/7] hw/ppc/spapr: Convert CLEAN_HPTE() macro as hpte_set_clean() method, Philippe Mathieu-Daudé, 2024/12/18