Re: git 9c501935a3cd broke the strace build.

From: Ben Hutchings
Date: Thu Jan 14 2010 - 09:06:56 EST

On Thu, 2010-01-14 at 04:57 -0600, Rob Landley wrote:
> > net: Support inclusion of <linux/socket.h> before <sys/socket.h>
> >
> > The following user-space program fails to compile:
> >
> > #include <linux/socket.h>
> > #include <sys/socket.h>
> Did it ever? Isn't #including both sys/thingy and a linux/thingy in the same
> program considered bad form?

I don't see why.

Even if a source file doesn't include both of them directly, they may
both be included indirectly.

> Now under 2.6.32 it dies with:
> linux/netlink.h:35: error: expected specifier-qualifier-list before
> 'sa_family_t'

I did actually ask for this to be reverted when I saw that it causes
breakage elsewhere, but David Miller insisted that my change was

> And later on the strace build breaks because it doesn't #include
> linux/netlink.h when it needs to. (Why yes, autoconf _is_ brittle and near-
> useless, thanks for noticing.)
> *shrug* I can patch the strace ./configure to include bits/socket.h instead of
> linux/socket.h,

Including libc headers under 'bits' is a bad idea.

> but what I can't understand is why _you_ couldn't. (What use
> case did this patch actually fix? Would reversing the order of those two
> headers have helped?)

I think that reversing the order of the two headers should work for
kernel headers before and after this change.


Ben Hutchings
The generation of random numbers is too important to be left to chance.
- Robert Coveyou

Attachment: signature.asc
Description: This is a digitally signed message part