[Dnsmasq-discuss] iface_enumerate does not compile with gcc 15
Nicolas Cavallari
Nicolas.Cavallari at green-communications.fr
Thu Jan 23 12:19:04 UTC 2025
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.
More information about the Dnsmasq-discuss
mailing list