[Spice-devel] [spice-common v2 8/8] log: Let gcc know about the logging macros which abort
Christophe Fergeau
cfergeau at redhat.com
Fri Mar 29 13:35:54 UTC 2019
On Fri, Mar 29, 2019 at 06:51:54AM -0400, Frediano Ziglio wrote:
> >
> > Without the added abort(), it cannot know g_log(G_LOG_LEVEL_CRITICAL)
> > will never return.
> >
> > Signed-off-by: Christophe Fergeau <cfergeau at redhat.com>
>
> I prefer the "for" way. But by the way, this is not telling the compiler
> that spice_log (NOT g_log) is not returning but to call abort() after
> spice_log.
Since abort() does not return, overall result is that the compiler won't
think code after spice_critical() can be reached.
> I don't think the compiler will warn that with that flag the function
> it not returning, is not clear why you need these changes.
> Optimization? I don't think that calling an additional function
> and jumping back to original flow would change much.
I'm fairly sure I got warnings during some experiments which led me to
these changes, but I haven't been able to get them now.
One testcase which warns without these changes:
#include "log.h"
#include "stdbool.h"
int main(int argc, char **argv)
{
switch(argc) {
case 1:
spice_critical("foo");
default:
return 0;
}
}
$ LC_ALL=C gcc -c $(pkg-config --cflags --libs glib-2.0 spice-protocol) -I common -Wimplicit-fallthrough=5 ./fallthrough.c
In file included from ./fallthrough.c:1:
./fallthrough.c: In function 'main':
common/log.h:73:5: warning: this statement may fall through [-Wimplicit-fallthrough=]
73 | spice_log(G_LOG_LEVEL_CRITICAL, SPICE_STRLOC, __FUNCTION__, "" format, ## __VA_ARGS__); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./fallthrough.c:8:25: note: in expansion of macro 'spice_critical'
8 | spice_critical("foo");
| ^~~~~~~~~~~~~~
./fallthrough.c:9:17: note: here
9 | default:
| ^~~~~~~
(I can add this to the log)
Christophe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20190329/a1c96e22/attachment.sig>
More information about the Spice-devel
mailing list