[Qemu-devel] [RFC PATCH v2 21/21] ui/vnc: silent unuseful OSX clang warning

Philippe Mathieu-Daudé posted 21 patches 8 years, 4 months ago
There is a newer version of this series
[Qemu-devel] [RFC PATCH v2 21/21] ui/vnc: silent unuseful OSX clang warning
Posted by Philippe Mathieu-Daudé 8 years, 4 months ago
    ui/vnc.c:3945:20: warning: 'sasl_server_init' is deprecated: first deprecated in OS X 10.11 [-Wdeprecated-declarations]
        if ((saslErr = sasl_server_init(NULL, "qemu")) != SASL_OK) {
                       ^
    /usr/include/sasl/sasl.h:1016:17: note: 'sasl_server_init' has been explicitly marked deprecated here
    LIBSASL_API int sasl_server_init(const sasl_callback_t *callbacks,
                    ^

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 ui/Makefile.objs | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/ui/Makefile.objs b/ui/Makefile.objs
index 3369451285..08fb573a48 100644
--- a/ui/Makefile.objs
+++ b/ui/Makefile.objs
@@ -6,6 +6,14 @@ vnc-obj-y += vnc-auth-vencrypt.o
 vnc-obj-$(CONFIG_VNC_SASL) += vnc-auth-sasl.o
 vnc-obj-y += vnc-ws.o
 vnc-obj-y += vnc-jobs.o
+ifeq ($(CONFIG_VNC_SASL),y)
+# silent OSX SASL warnings (from https://stackoverflow.com/a/7406994):
+# because OpenSSL doesn’t offer API compatibility between versions, [...] Apple
+# can't provide security updates without breaking existing apps, so is migrating
+# from OpenSSL to Common Crypto.
+vnc.o-cflags := -Wno-deprecated-declarations
+vnc-auth-sasl.o-cflags := -Wno-deprecated-declarations
+endif
 
 common-obj-y += keymaps.o console.o cursor.o qemu-pixman.o
 common-obj-y += input.o input-keymap.o input-legacy.o
-- 
2.11.0


Re: [Qemu-devel] [RFC PATCH v2 21/21] ui/vnc: silent unuseful OSX clang warning
Posted by Peter Maydell 8 years, 4 months ago
On 22 June 2017 at 04:32, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
>     ui/vnc.c:3945:20: warning: 'sasl_server_init' is deprecated: first deprecated in OS X 10.11 [-Wdeprecated-declarations]
>         if ((saslErr = sasl_server_init(NULL, "qemu")) != SASL_OK) {
>                        ^
>     /usr/include/sasl/sasl.h:1016:17: note: 'sasl_server_init' has been explicitly marked deprecated here
>     LIBSASL_API int sasl_server_init(const sasl_callback_t *callbacks,
>                     ^

Mmm, I've been vaguely wondering what to do about those warnings
for a while. The difficulty is that applying -Wno-deprecated-declarations
silences all deprecation warnings, not just the SASL ones, so we
lose a bit of warning coverage. Maybe that's just a hit we have
to take, though.

thanks
-- PMM

Re: [Qemu-devel] [RFC PATCH v2 21/21] ui/vnc: silent unuseful OSX clang warning
Posted by Gerd Hoffmann 8 years, 4 months ago
diff --git a/ui/Makefile.objs b/ui/Makefile.objs
> index 3369451285..08fb573a48 100644
> --- a/ui/Makefile.objs
> +++ b/ui/Makefile.objs
> @@ -6,6 +6,14 @@ vnc-obj-y += vnc-auth-vencrypt.o
>  vnc-obj-$(CONFIG_VNC_SASL) += vnc-auth-sasl.o
>  vnc-obj-y += vnc-ws.o
>  vnc-obj-y += vnc-jobs.o
> +ifeq ($(CONFIG_VNC_SASL),y)
> +# silent OSX SASL warnings (from https://stackoverflow.com/a/7406994
> ):
> +# because OpenSSL doesn’t offer API compatibility between versions,
> [...] Apple
> +# can't provide security updates without breaking existing apps, so
> is migrating
> +# from OpenSSL to Common Crypto.
> +vnc.o-cflags := -Wno-deprecated-declarations
> +vnc-auth-sasl.o-cflags := -Wno-deprecated-declarations
> +endif

Hmm, does clang understand "#pragma GCC diagnostic" ?

If so, then this can be done in in the code not the makefiles, and also
selectively for osx only.

See include/ui/gtk.h for an example.

cheers,
  Gerd


Re: [Qemu-devel] [RFC PATCH v2 21/21] ui/vnc: silent unuseful OSX clang warning
Posted by Peter Maydell 8 years, 4 months ago
On 22 June 2017 at 08:33, Gerd Hoffmann <kraxel@redhat.com> wrote:
> diff --git a/ui/Makefile.objs b/ui/Makefile.objs
>> index 3369451285..08fb573a48 100644
>> --- a/ui/Makefile.objs
>> +++ b/ui/Makefile.objs
>> @@ -6,6 +6,14 @@ vnc-obj-y += vnc-auth-vencrypt.o
>>  vnc-obj-$(CONFIG_VNC_SASL) += vnc-auth-sasl.o
>>  vnc-obj-y += vnc-ws.o
>>  vnc-obj-y += vnc-jobs.o
>> +ifeq ($(CONFIG_VNC_SASL),y)
>> +# silent OSX SASL warnings (from https://stackoverflow.com/a/7406994
>> ):
>> +# because OpenSSL doesn’t offer API compatibility between versions,
>> [...] Apple
>> +# can't provide security updates without breaking existing apps, so
>> is migrating
>> +# from OpenSSL to Common Crypto.
>> +vnc.o-cflags := -Wno-deprecated-declarations
>> +vnc-auth-sasl.o-cflags := -Wno-deprecated-declarations
>> +endif
>
> Hmm, does clang understand "#pragma GCC diagnostic" ?
>
> If so, then this can be done in in the code not the makefiles, and also
> selectively for osx only.

It does have some diagnostic pragma support. The awkward part is
that it has to  be in force at the point where the deprecated
function is used, not where it's declared. So you can't just wrap
the #include of the ssl header in pragmas, you'd have to either
do it at every callsite or else over the whole .c file.

thanks
-- PMM

Re: [Qemu-devel] [RFC PATCH v2 21/21] ui/vnc: silent unuseful OSX clang warning
Posted by Gerd Hoffmann 8 years, 4 months ago
On Thu, 2017-06-22 at 08:35 +0100, Peter Maydell wrote:
> On 22 June 2017 at 08:33, Gerd Hoffmann <kraxel@redhat.com> wrote:
> > diff --git a/ui/Makefile.objs b/ui/Makefile.objs
> > > index 3369451285..08fb573a48 100644
> > > --- a/ui/Makefile.objs
> > > +++ b/ui/Makefile.objs
> > > @@ -6,6 +6,14 @@ vnc-obj-y += vnc-auth-vencrypt.o
> > >  vnc-obj-$(CONFIG_VNC_SASL) += vnc-auth-sasl.o
> > >  vnc-obj-y += vnc-ws.o
> > >  vnc-obj-y += vnc-jobs.o
> > > +ifeq ($(CONFIG_VNC_SASL),y)
> > > +# silent OSX SASL warnings (from https://stackoverflow.com/a/740
> > > 6994
> > > ):
> > > +# because OpenSSL doesn’t offer API compatibility between
> > > versions,
> > > [...] Apple
> > > +# can't provide security updates without breaking existing apps,
> > > so
> > > is migrating
> > > +# from OpenSSL to Common Crypto.
> > > +vnc.o-cflags := -Wno-deprecated-declarations
> > > +vnc-auth-sasl.o-cflags := -Wno-deprecated-declarations
> > > +endif
> > 
> > Hmm, does clang understand "#pragma GCC diagnostic" ?
> > 
> > If so, then this can be done in in the code not the makefiles, and
> > also
> > selectively for osx only.
> 
> It does have some diagnostic pragma support. The awkward part is
> that it has to  be in force at the point where the deprecated
> function is used, not where it's declared. So you can't just wrap
> the #include of the ssl header in pragmas, you'd have to either
> do it at every callsite or else over the whole .c file.

Do it on the whole file on osx only is still better because we continue
to get the warnings on non-osx then, which should be enough to avoid
the code bitroting unnoticed.

cheers,
  Gerd