[Debian-med-packaging] Bug#925629: aghermann: ftbfs with GCC-9

Andreas Tille andreas at an3as.eu
Mon Jan 13 16:35:34 GMT 2020


Thanks a lot for the very helpful comments, Andreas.

On Mon, Jan 13, 2020 at 07:20:24AM -0800, Matthew Fernandez wrote:
> > I need to admit that I understand so less from all the gcc issues you
> > tried to explain - I do not even have any idea what C++ attributes are.
> > I simply cared for that Debian bug since nobody else did. :-(
> > So I feel really incompetent to discuss this with gcc maintainers but
> > I'd welcome if you bring it up there.
> 
> GCC attributes like the __attribute__ example here are a mechanism for annotating C/C++ code with things not covered by the ISO standards, but supported by compiler extensions. Attributes can be applied to many things including variables and functions, and the function attributes are documented at https://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html <https://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html>. These days Clang also understands many of the GCC attributes.
> 
> The particular one in question here is telling the compiler that the lambda function being defined has similar behavior to the libc printf function. The integer parameters say a printf format string appears as the second argument and the first varargs parameter is the third argument. This looks off by one, but I think the captured local (&L) counts as the first parameter. The only thing the compiler uses this attribute for is to detect calls to this lambda with incorrect arguments and emit warnings for them.
> 
> The C++11 standard brought in a more commonly supported way of declaring attributes using square brackets. Unfortunately the standard does not support many common attributes and you still need to use a “gnu::” prefix to access the GCC-specific attributes. Hence, “[[gnu::format(printf, 2, 3)]]” being the C++11 equivalent of this.
> 
> >> If you need to bypass this urgently, I would recommend deleting the attribute as that particular one is only used to aid the compiler in creating warnings.
> > 
> > Hmmm, as I said my patch[1] works and I just have the gut feeling (as I
> > said I have no competence!) that this might be better than to delete the
> > attribute.  If not would you mind sending an alternative patch which is
> > better in your opinion?
> 
> Lambda functions, which are already being used in this code, are a C++11 feature as are this style of attributes. So I imagine it would be acceptable to upstream to take your patch. Having said that, when I did this in my experiment code above the compiler warned that it was ignoring this attribute as it thought it was being applied to the trailing “int”.
> 
> I re-read the GCC issue and realized I’d misread Jonathan Wakely’s comments. The issue is actually still open and Jonathan was just noting that r265787 introduced the bug, not fixed it. So I think what we’re seeing is consistent with the GCC maintainers’ view.
> 
> I would suggest proposing your patch upstream. Although its primary purpose is working around a compiler bug, it’s also an objective improvement in modernizing the code base.
> 
> > Thanks again
> > 
> >       Andreas.
> > 
> > 
> >>  [0]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90333 <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90333>
> > 
> > [1] https://salsa.debian.org/med-team/aghermann/blob/master/debian/patches/workaround_gcc-9_issue.patch <https://salsa.debian.org/med-team/aghermann/blob/master/debian/patches/workaround_gcc-9_issue.patch>
> > 
> > -- 
> > http://fam-tille.de <http://fam-tille.de/>

> _______________________________________________
> Debian-med-packaging mailing list
> Debian-med-packaging at alioth-lists.debian.net
> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/debian-med-packaging


-- 
http://fam-tille.de



More information about the Debian-med-packaging mailing list