diff mbox series

[RFC] buildsys: Disable 'unguarded-availability-new' warnings

Message ID 20250422171955.11791-1-philmd@linaro.org
State New
Headers show
Series [RFC] buildsys: Disable 'unguarded-availability-new' warnings | expand

Commit Message

Philippe Mathieu-Daudé April 22, 2025, 5:19 p.m. UTC
When using Visual Studio Code (v1.99.3) and Apple clangd v17.0.0
I get:

  In file included from ../../qapi/string-output-visitor.c:14:
  qemu/include/qemu/cutils.h:144:12: error: 'strchrnul' is only available on macOS 15.4 or newer [-Werror,-Wunguarded-availability-new]
    144 |     return strchrnul(s, c);
        |            ^~~~~~~~~
  /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_string.h:198:9: note: 'strchrnul' has been marked as being introduced in macOS 15.4 here, but the deployment target is macOS 15.0.0
    198 |         strchrnul(const char *__s, int __c);
        |         ^
  qemu/include/qemu/cutils.h:144:12: note: enclose 'strchrnul' in a __builtin_available check to silence this warning
    144 |     return strchrnul(s, c);
        |            ^~~~~~~~~
  1 error generated.

Disable this -Wunguarded-availability-new warning as a
short term band-aid fix.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 meson.build | 2 ++
 1 file changed, 2 insertions(+)

Comments

Pierrick Bouvier April 22, 2025, 6:36 p.m. UTC | #1
On 4/22/25 10:19, Philippe Mathieu-Daudé wrote:
> When using Visual Studio Code (v1.99.3) and Apple clangd v17.0.0
> I get:
> 
>    In file included from ../../qapi/string-output-visitor.c:14:
>    qemu/include/qemu/cutils.h:144:12: error: 'strchrnul' is only available on macOS 15.4 or newer [-Werror,-Wunguarded-availability-new]
>      144 |     return strchrnul(s, c);
>          |            ^~~~~~~~~
>    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_string.h:198:9: note: 'strchrnul' has been marked as being introduced in macOS 15.4 here, but the deployment target is macOS 15.0.0
>      198 |         strchrnul(const char *__s, int __c);
>          |         ^
>    qemu/include/qemu/cutils.h:144:12: note: enclose 'strchrnul' in a __builtin_available check to silence this warning
>      144 |     return strchrnul(s, c);
>          |            ^~~~~~~~~
>    1 error generated.
> 
> Disable this -Wunguarded-availability-new warning as a
> short term band-aid fix.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>   meson.build | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/meson.build b/meson.build
> index 41f68d38069..539368f82b1 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -735,6 +735,7 @@ warn_flags = [
>     '-Wstrict-prototypes',
>     '-Wtype-limits',
>     '-Wundef',
> +  '-Wunguarded-availability',
>     '-Wvla',
>     '-Wwrite-strings',
>   
> @@ -747,6 +748,7 @@ warn_flags = [
>     '-Wno-string-plus-int',
>     '-Wno-tautological-type-limit-compare',
>     '-Wno-typedef-redefinition',
> +  '-Wno-unguarded-availability-new',
>   ]
>   
>   if host_os != 'darwin'

I solved it the same way locally, but didn't send a patch because I'm 
not sure what happens if the code runs on MacOS < 15.4, and I don't have 
such a machine available.

Is the symbol already there?
Does it crash?
I guess the warning is here for a good reason.

You can find a lot of issues open in various open source projects with 
this warning (with various fixes) since this update was released.
Philippe Mathieu-Daudé April 22, 2025, 7:45 p.m. UTC | #2
On 22/4/25 20:36, Pierrick Bouvier wrote:
> On 4/22/25 10:19, Philippe Mathieu-Daudé wrote:
>> When using Visual Studio Code (v1.99.3) and Apple clangd v17.0.0
>> I get:
>>
>>    In file included from ../../qapi/string-output-visitor.c:14:
>>    qemu/include/qemu/cutils.h:144:12: error: 'strchrnul' is only 
>> available on macOS 15.4 or newer [-Werror,-Wunguarded-availability-new]
>>      144 |     return strchrnul(s, c);
>>          |            ^~~~~~~~~
>>    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/ 
>> _string.h:198:9: note: 'strchrnul' has been marked as being introduced 
>> in macOS 15.4 here, but the deployment target is macOS 15.0.0
>>      198 |         strchrnul(const char *__s, int __c);
>>          |         ^
>>    qemu/include/qemu/cutils.h:144:12: note: enclose 'strchrnul' in a 
>> __builtin_available check to silence this warning
>>      144 |     return strchrnul(s, c);
>>          |            ^~~~~~~~~
>>    1 error generated.
>>
>> Disable this -Wunguarded-availability-new warning as a
>> short term band-aid fix.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> ---
>>   meson.build | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/meson.build b/meson.build
>> index 41f68d38069..539368f82b1 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -735,6 +735,7 @@ warn_flags = [
>>     '-Wstrict-prototypes',
>>     '-Wtype-limits',
>>     '-Wundef',
>> +  '-Wunguarded-availability',
>>     '-Wvla',
>>     '-Wwrite-strings',
>> @@ -747,6 +748,7 @@ warn_flags = [
>>     '-Wno-string-plus-int',
>>     '-Wno-tautological-type-limit-compare',
>>     '-Wno-typedef-redefinition',
>> +  '-Wno-unguarded-availability-new',
>>   ]
>>   if host_os != 'darwin'
> 
> I solved it the same way locally, but didn't send a patch because I'm 
> not sure what happens if the code runs on MacOS < 15.4,

I'd expect meson to Do The Right Thing and not define HAVE_STRCHRNUL.

> and I don't have 
> such a machine available.
> 
> Is the symbol already there?
> Does it crash?
> I guess the warning is here for a good reason.
> 
> You can find a lot of issues open in various open source projects with 
> this warning (with various fixes) since this update was released.
Pierrick Bouvier April 22, 2025, 8:31 p.m. UTC | #3
On 4/22/25 12:45, Philippe Mathieu-Daudé wrote:
> On 22/4/25 20:36, Pierrick Bouvier wrote:
>> On 4/22/25 10:19, Philippe Mathieu-Daudé wrote:
>>> When using Visual Studio Code (v1.99.3) and Apple clangd v17.0.0
>>> I get:
>>>
>>>     In file included from ../../qapi/string-output-visitor.c:14:
>>>     qemu/include/qemu/cutils.h:144:12: error: 'strchrnul' is only
>>> available on macOS 15.4 or newer [-Werror,-Wunguarded-availability-new]
>>>       144 |     return strchrnul(s, c);
>>>           |            ^~~~~~~~~
>>>     /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/
>>> _string.h:198:9: note: 'strchrnul' has been marked as being introduced
>>> in macOS 15.4 here, but the deployment target is macOS 15.0.0
>>>       198 |         strchrnul(const char *__s, int __c);
>>>           |         ^
>>>     qemu/include/qemu/cutils.h:144:12: note: enclose 'strchrnul' in a
>>> __builtin_available check to silence this warning
>>>       144 |     return strchrnul(s, c);
>>>           |            ^~~~~~~~~
>>>     1 error generated.
>>>
>>> Disable this -Wunguarded-availability-new warning as a
>>> short term band-aid fix.
>>>
>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>>> ---
>>>    meson.build | 2 ++
>>>    1 file changed, 2 insertions(+)
>>>
>>> diff --git a/meson.build b/meson.build
>>> index 41f68d38069..539368f82b1 100644
>>> --- a/meson.build
>>> +++ b/meson.build
>>> @@ -735,6 +735,7 @@ warn_flags = [
>>>      '-Wstrict-prototypes',
>>>      '-Wtype-limits',
>>>      '-Wundef',
>>> +  '-Wunguarded-availability',
>>>      '-Wvla',
>>>      '-Wwrite-strings',
>>> @@ -747,6 +748,7 @@ warn_flags = [
>>>      '-Wno-string-plus-int',
>>>      '-Wno-tautological-type-limit-compare',
>>>      '-Wno-typedef-redefinition',
>>> +  '-Wno-unguarded-availability-new',
>>>    ]
>>>    if host_os != 'darwin'
>>
>> I solved it the same way locally, but didn't send a patch because I'm
>> not sure what happens if the code runs on MacOS < 15.4,
> 
> I'd expect meson to Do The Right Thing and not define HAVE_STRCHRNUL.
> 

The trick is that it compiles with a warning, but meson tests are not 
done with -Werror enabled.
This might be the proper fix at the moment, if we identify that a crash 
happen on MacOS < 15.4. Else, the warning can safely be silenced as you did.

>> and I don't have
>> such a machine available.
>>
>> Is the symbol already there?
>> Does it crash?
>> I guess the warning is here for a good reason.
>>
>> You can find a lot of issues open in various open source projects with
>> this warning (with various fixes) since this update was released.
>
diff mbox series

Patch

diff --git a/meson.build b/meson.build
index 41f68d38069..539368f82b1 100644
--- a/meson.build
+++ b/meson.build
@@ -735,6 +735,7 @@  warn_flags = [
   '-Wstrict-prototypes',
   '-Wtype-limits',
   '-Wundef',
+  '-Wunguarded-availability',
   '-Wvla',
   '-Wwrite-strings',
 
@@ -747,6 +748,7 @@  warn_flags = [
   '-Wno-string-plus-int',
   '-Wno-tautological-type-limit-compare',
   '-Wno-typedef-redefinition',
+  '-Wno-unguarded-availability-new',
 ]
 
 if host_os != 'darwin'