[systemd-devel] [PATCH] Fix compilation under clang/LLVM
greg at kroah.com
Tue Aug 5 20:04:09 PDT 2014
On Tue, Aug 05, 2014 at 09:47:09PM -0500, Dan McGee wrote:
> On Tue, Aug 5, 2014 at 9:11 PM, Greg KH <greg at kroah.com> wrote:
> On Tue, Aug 05, 2014 at 07:58:47PM -0500, Dan McGee wrote:
> > Compilation is failing because we are doing something not allowed by the
> > language spec, but OK by GCC extensions in our MAX() macro.
> > src/resolve/resolved-manager.c:759:43: error: non-const static data
> member must be initialized out of line
> > uint8_t buffer[CMSG_SPACE(MAX(sizeof(struct in_pktinfo),
> sizeof(struct in6_pktinfo)))
> > ^
> > Add a new constant that does this in a way both compilers are OK with,
> > since we know all factors in the size computation are static.
> Why not just fix MAX()?
> Mainly because 1) I'm not a preprocessor expert, and 2) this code is the only
> broken usage of MAX() and it was recently introduced.
But how will I, a non-clang-developer, know to use your special version
instead of the "normal" MAX() macro?
> I'm all for someone fixing this the "right" way if this is deemed incorrect,
> but right now one can't even compile on what most would consider a
> non-experimental C toolchain, and this was the quickest and easiest fix I could
> come up with.
I'd recommend fixing it "properly", or push back and fix clang's
Oh and the systemd MAX() macro isn't typesafe, I'll work on fixing that
when I get a chance, it's messy as people haven't been all that careful
in some places...
More information about the systemd-devel