On Thu, Dec 26, 2019 at 12:13:37PM +0100, Daniel Kolesa wrote: > On Thu, Dec 26, 2019, at 04:49, David Miller wrote: > > From: Rich Felker <dalias@xxxxxxxx> > > Date: Wed, 25 Dec 2019 20:05:15 -0500 > > > > > On Wed, Dec 25, 2019 at 04:34:11PM -0800, David Miller wrote: > > >> I find it really strange that this, therefore, only happens for musl > > >> and we haven't had thousands of reports of this conflict with glibc > > >> over the years. > > > > > > It's possible that there's software that's including just one of the > > > headers conditional on __GLIBC__, and including both otherwise, or > > > something like that. Arguably this should be considered unsupported > > > usage; there are plenty of headers where that doesn't work and > > > shouldn't be expected to. > > > > I don't buy that, this is waaaaaay too common a header to use. > > In case of net-tools, only <linux/ip.h> is included, and never > <netinet/ip.h> directly. Chances are in musl the indirect include > tree happens to be different and conflicting, while in glibc it is > not. musl has no indirect inclusion of netinet/ip.h from standard headers, but does include it from netinet/ip_icmp.h. It seems glibc only does this conditional on __USE_MISC, which doesn't make much sense to me since this is not a standardized header with namespace rules, but normally __USE_MISC is defined anyway on glibc so I kinda doubt this is the difference. Any other ideas? Rich