[Buildroot] [PATCH 1/1] conntrack-tools: work around build issue with musl

Peter Korsgaard peter at korsgaard.com
Mon Nov 30 16:21:48 UTC 2015


>>>>> "Rodrigo" == Rodrigo Rebello <rprebello at gmail.com> writes:

 > Building conntrack-tools with kernel headers >= 4.2 + musl fails due to
 > a well-known symbol clash that occurs when userspace and kernel headers
 > are included simultaneously (see [1], question 7, for details).

 > In the case of conntrack-tools, the inclusion of both 'netinet/in.h' and
 > 'linux/in.h' occurs inside the C helper files (src/helpers/*.c)
 > indirectly via e.g. 'libnetfilter_conntrack/libnetfilter_conntrack.h',
 > which itself includes 'netinet/in.h', and 'linux/netfilter.h', which
 > includes 'linux/in.h' in kernel headers >= 4.2.

 > The approach to solving this type of conflict with musl usually involves
 > removing the inclusion of kernel headers or refactoring the code so as
 > to avoid the mentioned simultaneous inclusion. This is unfortunately
 > non-trivial in the case of conntrack-tools since the clashing headers
 > get included indirectly by headers that are strictly necessary (because
 > of definitions used in some helper callbacks).

 > Work around the issue by defining __GLIBC__ when musl is used. This
 > eliminates the conflicts as the kernel headers avoid redefining certain
 > symbols when they see __GLIBC__ defined (linux/libc-compat.h). Note that
 > other glibc-compatible libraries, like uClibc, already do that
 > internally.

 > Fixes:
 >   http://autobuild.buildroot.net/results/66e/66ec247fa0fc385bef8d2084c65bf5cad3a8e8ca/
 >   http://autobuild.buildroot.net/results/624/624a0d48decd819eb58cbb3c58ee904b87ebfb21/

 > [1] http://wiki.musl-libc.org/wiki/FAQ

 > Signed-off-by: Rodrigo Rebello <rprebello at gmail.com>

Committed, thanks.

-- 
Bye, Peter Korsgaard



More information about the buildroot mailing list