|
Message-ID: <20160303160054.GV9349@brightrain.aerifal.cx> Date: Thu, 3 Mar 2016 11:00:54 -0500 From: Rich Felker <dalias@...c.org> To: musl@...ts.openwall.com Subject: Re: iproute2 & other software On Thu, Mar 03, 2016 at 11:10:06AM +0100, Szabolcs Nagy wrote: > * Rich Felker <dalias@...c.org> [2016-03-02 18:30:50 -0500]: > > On Wed, Mar 02, 2016 at 09:49:41PM +0100, Szabolcs Nagy wrote: > > > * Loganaden Velvindron <loganaden@...il.com> [2016-03-02 19:19:13 +0000]: > > > > " > > > > Sorry, I have to reject this. > > > > All include files in include/linux come from headers automatically > > > > generated from upstream > > > > Linux source. This is the only way to ensure long term ABI/API consistency > > > > with kernel. > > > > > > > > Either fix musl or submit patches to upstream kernel and get them merged. > > > > " > > > > > > > > Can we look into providing somekind of compatibility layer for header files > > > > so that it's easier to get upstream projects like iproute2 to support musl ? > > > > > > > > > > in theory the correct solution is to fix the kernel headers > > > so they don't collide with posix types in libc headers. > > > > > > in practice old kernel headers should work too and it's unlikely > > > that a complete uapi fix would be accepted into linux any time > > > soon so applications should avoid including both libc and kernel > > > headers into the same tu. > > > > > > unfortunately glibc added workarounds into libc and uapi headers > > > that make it seem as if mixing linux and libc headers work, so > > > now application programmers don't have the incentive to fix this. > > > > > > musl cannot use the same workarounds because they use ifdef __GLIBC__ > > > (which is a major bug for linux uapi headers to depend on): > > > https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/libc-compat.h > > > > Would it help for us to define the __UAPI_DEF_* macros? If so I'd be > > no, because they are defined unconditionally in libc-compat.h, > however we could define _UAPI_LIBC_COMPAT_H to make the conflicting > type definitions disappear. > > but that is still fragile: any libc header would disable all > typedefs, while in glibc the checks are more fine grained. That sounds viable (we never want _any_ kernel definitions that conflict with standard ones) but I don't like the mechanism (poking at their multiple-inclusion-guard macro). Likewise I don't like how they're peeking at libc's private multiple-inclusion-guard macros. > we could also submit a linux patch to make the non-__GLIBC__ > case more reasonable (e.g. check for existing definition of > the macros). I think that sounds more reasonable. What would be ideal would be a macro we could define from features.h or even stdc-predef.h that says "libc defines all the standard types; we don't want kernel headers trying to define them", which the kernel headers would honor via: #ifdef _LIBC_DEFINES_STD_TYPES #include <netinet/in.h> #else /* their own definitions */ #endif but I suspect that would be controversial on the kernel side. Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.