2008-01-02 14:38:03

by Mike Frysinger

[permalink] [raw]
Subject: [patch] linux/{socket,stat}.h: change __GLIBC__ cruft to __KLIBC__

The __GLIBC__ hacks were re-added to the headers because the klibc peeps want
to be lazy. But rather than properly address things, they just wrongly left
it as __GLIBC__. This patch changes the __GLIBC__ cruft to __KLIBC__ so real
libcs don't get screwed due to kilbc's laziness.

Signed-off-by: Mike Frysinger <[email protected]>
---
diff --git a/include/linux/socket.h b/include/linux/socket.h
index c22ef1c..90af15b 100644
--- a/include/linux/socket.h
+++ b/include/linux/socket.h
@@ -16,7 +16,7 @@ struct __kernel_sockaddr_storage {
/* _SS_MAXSIZE value minus size of ss_family */
} __attribute__ ((aligned(_K_SS_ALIGNSIZE))); /* force desired alignment */

-#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
+#if defined(__KERNEL__) || defined(__KLIBC__)

#include <asm/socket.h> /* arch-dependent defines */
#include <linux/sockios.h> /* the SIOCxxx I/O controls */
diff --git a/include/linux/stat.h b/include/linux/stat.h
index 611c398..e8c1943 100644
--- a/include/linux/stat.h
+++ b/include/linux/stat.h
@@ -7,7 +7,7 @@

#endif

-#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
+#if defined(__KERNEL__) || defined(__KLIBC__)

#define S_IFMT 00170000
#define S_IFSOCK 0140000


2008-01-02 15:14:01

by Adrian Bunk

[permalink] [raw]
Subject: Re: [patch] linux/{socket,stat}.h: change __GLIBC__ cruft to __KLIBC__

On Wed, Jan 02, 2008 at 09:37:50AM -0500, Mike Frysinger wrote:
> The __GLIBC__ hacks were re-added to the headers because the klibc peeps want
> to be lazy. But rather than properly address things, they just wrongly left
> it as __GLIBC__. This patch changes the __GLIBC__ cruft to __KLIBC__ so real
> libcs don't get screwed due to kilbc's laziness.
>
> Signed-off-by: Mike Frysinger <[email protected]>
> ---
> diff --git a/include/linux/socket.h b/include/linux/socket.h
> index c22ef1c..90af15b 100644
> --- a/include/linux/socket.h
> +++ b/include/linux/socket.h
> @@ -16,7 +16,7 @@ struct __kernel_sockaddr_storage {
> /* _SS_MAXSIZE value minus size of ss_family */
> } __attribute__ ((aligned(_K_SS_ALIGNSIZE))); /* force desired alignment */
>
> -#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
> +#if defined(__KERNEL__) || defined(__KLIBC__)
>...

This changes the semantics from "!glibc" to "klibc".

I'm a bit worried that such changes might break some of the other
libc's people use on Linux.

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed

2008-01-02 15:48:15

by Mike Frysinger

[permalink] [raw]
Subject: Re: [patch] linux/{socket,stat}.h: change __GLIBC__ cruft to __KLIBC__

On Wednesday 02 January 2008, Adrian Bunk wrote:
> On Wed, Jan 02, 2008 at 09:37:50AM -0500, Mike Frysinger wrote:
> > The __GLIBC__ hacks were re-added to the headers because the klibc peeps
> > want to be lazy. But rather than properly address things, they just
> > wrongly left it as __GLIBC__. This patch changes the __GLIBC__ cruft to
> > __KLIBC__ so real libcs don't get screwed due to kilbc's laziness.
> >
> > Signed-off-by: Mike Frysinger <[email protected]>
> > ---
> > diff --git a/include/linux/socket.h b/include/linux/socket.h
> > index c22ef1c..90af15b 100644
> > --- a/include/linux/socket.h
> > +++ b/include/linux/socket.h
> > @@ -16,7 +16,7 @@ struct __kernel_sockaddr_storage {
> > /* _SS_MAXSIZE value minus size of ss_family */
> > } __attribute__ ((aligned(_K_SS_ALIGNSIZE))); /* force desired alignment
> > */
> >
> > -#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
> > +#if defined(__KERNEL__) || defined(__KLIBC__)
> >...
>
> This changes the semantics from "!glibc" to "klibc".

that's the point

> I'm a bit worried that such changes might break some of the other
> libc's people use on Linux.

such libc's are broken and it isnt the kernel's problem to cater to broken
libc's. the problem is that these headers are breaking things *now* for
valid libc's that are not glibc. removal of __GBLIC__ was already accepted
once but reverted for klibc.
-mike


Attachments:
(No filename) (1.38 kB)
signature.asc (835.00 B)
This is a digitally signed message part.
Download all attachments

2008-01-02 18:17:58

by H. Peter Anvin

[permalink] [raw]
Subject: Re: [patch] linux/{socket,stat}.h: change __GLIBC__ cruft to __KLIBC__

Mike Frysinger wrote:
>>>
>>> -#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
>>> +#if defined(__KERNEL__) || defined(__KLIBC__)
>>> ...
>> This changes the semantics from "!glibc" to "klibc".
>
> that's the point
>
>> I'm a bit worried that such changes might break some of the other
>> libc's people use on Linux.
>
> such libc's are broken and it isnt the kernel's problem to cater to broken
> libc's. the problem is that these headers are breaking things *now* for
> valid libc's that are not glibc. removal of __GBLIC__ was already accepted
> once but reverted for klibc.
> -mike

Either of these really is wrong... it's the userspace which should ask
for what should be imported; the kernel shouldn't hard-code which libcs
want what.

I just posted a patch to the netdev list which splits the top of
<linux/socket.h> out into <linux/sockaddr.h>, userspace can choose to
include one or the other.

-hpa