Message ID | 20241211231655.98148-1-philmd@linaro.org |
---|---|
State | New |
Headers | show |
Series | [RFC] meson: Run some compiler checks using -Wno-unused-value | expand |
On Thu, Dec 12, 2024 at 12:16:55AM +0100, Philippe Mathieu-Daudé wrote: > When running Clang static analyzer on macOS I'm getting: snip > 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()? How are you enabling the use of static analyzers ? There are several different ways to change compiler options and I vaguely recall some approaches can trip up meson. > --- > meson.build | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/meson.build b/meson.build > index 147097c652e..a431aa982ac 100644 > --- a/meson.build > +++ b/meson.build > @@ -1166,7 +1166,8 @@ cocoa = dependency('appleframeworks', > vmnet = dependency('appleframeworks', modules: 'vmnet', required: get_option('vmnet')) > if vmnet.found() and not cc.has_header_symbol('vmnet/vmnet.h', > 'VMNET_BRIDGED_MODE', > - dependencies: vmnet) > + dependencies: vmnet, > + args: '-Wno-unused-value') > vmnet = not_found > if get_option('vmnet').enabled() > error('vmnet.framework API is outdated') > @@ -2690,7 +2691,7 @@ config_host_data.set('CONFIG_RTNETLINK', > config_host_data.set('CONFIG_SYSMACROS', > cc.has_header_symbol('sys/sysmacros.h', 'makedev')) > config_host_data.set('HAVE_OPTRESET', > - cc.has_header_symbol('getopt.h', 'optreset')) > + cc.has_header_symbol('getopt.h', 'optreset', args: '-Wno-unused-value')) > config_host_data.set('HAVE_IPPROTO_MPTCP', > cc.has_header_symbol('netinet/in.h', 'IPPROTO_MPTCP')) > > @@ -2708,10 +2709,12 @@ config_host_data.set('HAVE_BLK_ZONE_REP_CAPACITY', > # has_type > config_host_data.set('CONFIG_IOVEC', > cc.has_type('struct iovec', > - prefix: '#include <sys/uio.h>')) > + prefix: '#include <sys/uio.h>', > + args: '-Wno-unused-value')) > config_host_data.set('HAVE_UTMPX', > cc.has_type('struct utmpx', > - prefix: '#include <utmpx.h>')) > + prefix: '#include <utmpx.h>', > + args: '-Wno-unused-value')) > > config_host_data.set('CONFIG_EVENTFD', cc.links(''' > #include <sys/eventfd.h> > -- > 2.45.2 > With regards, Daniel
On 12/12/24 10:15, Daniel P. Berrangé wrote: > On Thu, Dec 12, 2024 at 12:16:55AM +0100, Philippe Mathieu-Daudé wrote: >> When running Clang static analyzer on macOS I'm getting: > > > snip > >> 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()? > > How are you enabling the use of static analyzers ? There are several > different ways to change compiler options and I vaguely recall some > approaches can trip up meson. I prefix my build with 'scan-build': $ scan-build make scan-build: Using '/usr/bin/clang' for static analysis config-host.mak is out-of-date, running configure C compiler for the host machine: clang (clang 16.0.0 "Apple clang version 16.0.0 (clang-1600.0.26.4)") You can reproduce without using scan-build by passing --extra-cflags=-Wunused-value to ./configure. We have a "disable some undesirable warnings" section in warn_flags[] in meson.build. If we want to ignore unused we should add it there, but I'd rather not ignore them ;) > >> --- >> meson.build | 11 +++++++---- >> 1 file changed, 7 insertions(+), 4 deletions(-) >> >> diff --git a/meson.build b/meson.build >> index 147097c652e..a431aa982ac 100644 >> --- a/meson.build >> +++ b/meson.build >> @@ -1166,7 +1166,8 @@ cocoa = dependency('appleframeworks', >> vmnet = dependency('appleframeworks', modules: 'vmnet', required: get_option('vmnet')) >> if vmnet.found() and not cc.has_header_symbol('vmnet/vmnet.h', >> 'VMNET_BRIDGED_MODE', >> - dependencies: vmnet) >> + dependencies: vmnet, >> + args: '-Wno-unused-value') >> vmnet = not_found >> if get_option('vmnet').enabled() >> error('vmnet.framework API is outdated') >> @@ -2690,7 +2691,7 @@ config_host_data.set('CONFIG_RTNETLINK', >> config_host_data.set('CONFIG_SYSMACROS', >> cc.has_header_symbol('sys/sysmacros.h', 'makedev')) >> config_host_data.set('HAVE_OPTRESET', >> - cc.has_header_symbol('getopt.h', 'optreset')) >> + cc.has_header_symbol('getopt.h', 'optreset', args: '-Wno-unused-value')) >> config_host_data.set('HAVE_IPPROTO_MPTCP', >> cc.has_header_symbol('netinet/in.h', 'IPPROTO_MPTCP')) >> >> @@ -2708,10 +2709,12 @@ config_host_data.set('HAVE_BLK_ZONE_REP_CAPACITY', >> # has_type >> config_host_data.set('CONFIG_IOVEC', >> cc.has_type('struct iovec', >> - prefix: '#include <sys/uio.h>')) >> + prefix: '#include <sys/uio.h>', >> + args: '-Wno-unused-value')) >> config_host_data.set('HAVE_UTMPX', >> cc.has_type('struct utmpx', >> - prefix: '#include <utmpx.h>')) >> + prefix: '#include <utmpx.h>', >> + args: '-Wno-unused-value')) >> >> config_host_data.set('CONFIG_EVENTFD', cc.links(''' >> #include <sys/eventfd.h> >> -- >> 2.45.2 >> > > With regards, > Daniel
diff --git a/meson.build b/meson.build index 147097c652e..a431aa982ac 100644 --- a/meson.build +++ b/meson.build @@ -1166,7 +1166,8 @@ cocoa = dependency('appleframeworks', vmnet = dependency('appleframeworks', modules: 'vmnet', required: get_option('vmnet')) if vmnet.found() and not cc.has_header_symbol('vmnet/vmnet.h', 'VMNET_BRIDGED_MODE', - dependencies: vmnet) + dependencies: vmnet, + args: '-Wno-unused-value') vmnet = not_found if get_option('vmnet').enabled() error('vmnet.framework API is outdated') @@ -2690,7 +2691,7 @@ config_host_data.set('CONFIG_RTNETLINK', config_host_data.set('CONFIG_SYSMACROS', cc.has_header_symbol('sys/sysmacros.h', 'makedev')) config_host_data.set('HAVE_OPTRESET', - cc.has_header_symbol('getopt.h', 'optreset')) + cc.has_header_symbol('getopt.h', 'optreset', args: '-Wno-unused-value')) config_host_data.set('HAVE_IPPROTO_MPTCP', cc.has_header_symbol('netinet/in.h', 'IPPROTO_MPTCP')) @@ -2708,10 +2709,12 @@ config_host_data.set('HAVE_BLK_ZONE_REP_CAPACITY', # has_type config_host_data.set('CONFIG_IOVEC', cc.has_type('struct iovec', - prefix: '#include <sys/uio.h>')) + prefix: '#include <sys/uio.h>', + args: '-Wno-unused-value')) config_host_data.set('HAVE_UTMPX', cc.has_type('struct utmpx', - prefix: '#include <utmpx.h>')) + prefix: '#include <utmpx.h>', + args: '-Wno-unused-value')) config_host_data.set('CONFIG_EVENTFD', cc.links(''' #include <sys/eventfd.h>
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()? --- meson.build | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)