On 23/01/2025 12:29, Petr Menšík wrote:
Hello everyone!
Fedora just changed to gcc 15 in upcoming Fedora 42. And it seems dnsmasq is not
able to compile [1][2] with the new compiler, like it could before. Example
error is:
dhcp.c: In function ‘dhcp_packet’:
dhcp.c:320:49: error: passing argument 3 of ‘iface_enumerate’ from incompatible
pointer type [-Wincompatible-pointer-types]
320 | !iface_enumerate(AF_INET, &match, check_listen_addrs) ||
| ^~~~~~~~~~~~~~~~~~
| |
| int (*)(struct
in_addr, int, char *, struct in_addr, struct in_addr, void *)
That is because the default compiler used -std version has changed to gnu23.
There is a nice page with porting instructions for that version [3], which
mentions full handler specification should be used before calling.
Our problem is iface_enumerate uses callbacks with different prototypes,
depending on family passed to the function. It seems to me ideal change would be
to make separate functions with just reused common parts. Because they have
something in common, but are significantly different at the same time. It does
not seem possible to have single prototype function callback for the current code.
I am not sending a patch yet, because I am not sure how exactly it should be
changed. Of course temporary alternative would be explicitly using older -
std=gnu17 in CFLAGS. But I think some other change should be made, but not yet
sure what is should be.
Any opinions? Has anyone else hit already gcc 15 new issues?
This was supposed to be fixed by
https://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/2024q4/017855.html
Simon says it was applied but I do not see this patch in git.
_______________________________________________
Dnsmasq-discuss mailing list
Dnsmasq-discuss@lists.thekelleys.org.uk
https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss