Fix bits/socket.h SIOCGSTAMP* namespace issues
Commit Message
Macro SIOCGSTAMP_OLD and SIOCGSTAMPNS_OLD are added to asm/socket.h in
Linux 5.1 for 64-bit timestamps implementation.
sysdeps/unix/sysv/linux/bits/socket.h includes asm/socket.h. That
includes asm/sockios.h resulting in namespace violations from
SIOCGSTAMP_OLD and SIOCGSTAMPNS_OLD macros. Add these two macros to
workaound list in sysdeps/unix/sysv/linux/bits/socket.h like other
macros in asm/sockios.h.
Tested (compilation only) with build-many-glibcs.py.
* sysdeps/unix/sysv/linux/bits/socket.h (SIOCGSTAMP_OLD): Undefine
if defined by <asm/socket.h> and not previously defined.
(SIOCGSTAMPNS_OLD): Likewise.
---
ChangeLog | 6 ++++++
sysdeps/unix/sysv/linux/bits/socket.h | 14 ++++++++++++++
2 files changed, 20 insertions(+)
Comments
* Vincent Chen:
> Macro SIOCGSTAMP_OLD and SIOCGSTAMPNS_OLD are added to asm/socket.h in
> Linux 5.1 for 64-bit timestamps implementation.
>
> sysdeps/unix/sysv/linux/bits/socket.h includes asm/socket.h. That
> includes asm/sockios.h resulting in namespace violations from
> SIOCGSTAMP_OLD and SIOCGSTAMPNS_OLD macros. Add these two macros to
> workaound list in sysdeps/unix/sysv/linux/bits/socket.h like other
> macros in asm/sockios.h.
I wonder if it is time to copy the definitions we need for !_GNU_SOURCE
into the glibc source tree. It would also address the recent namespace
cleanliness issue. Only some architectures (alpha, mips, hppa, powerpc,
sparc) have custom definitions in the UAPI headers, it seems. For
_GNU_SOURCE, we would still include <asm/socket.h>.
Or am I totally off about this and it doesn't make sense?
Would you want to work on this? It requires a reasonably fast machine
for running build-many-glibcs.py.
Thanks,
Florian
On Thu, Jun 13, 2019 at 04:41:13PM +0800, Florian Weimer wrote:
> * Vincent Chen:
>
> > Macro SIOCGSTAMP_OLD and SIOCGSTAMPNS_OLD are added to asm/socket.h in
> > Linux 5.1 for 64-bit timestamps implementation.
> >
> > sysdeps/unix/sysv/linux/bits/socket.h includes asm/socket.h. That
> > includes asm/sockios.h resulting in namespace violations from
> > SIOCGSTAMP_OLD and SIOCGSTAMPNS_OLD macros. Add these two macros to
> > workaound list in sysdeps/unix/sysv/linux/bits/socket.h like other
> > macros in asm/sockios.h.
>
> I wonder if it is time to copy the definitions we need for !_GNU_SOURCE
> into the glibc source tree. It would also address the recent namespace
> cleanliness issue. Only some architectures (alpha, mips, hppa, powerpc,
> sparc) have custom definitions in the UAPI headers, it seems. For
> _GNU_SOURCE, we would still include <asm/socket.h>.
>
> Or am I totally off about this and it doesn't make sense?
I think your concerns are reasonable.
> Would you want to work on this? It requires a reasonably fast machine
> for running build-many-glibcs.py.
>
Currently, I do not have enough resource to do this.
Hence, If anyone wants to work on this, I will be very grateful.
Thanks,
Vincent Chen
@@ -1,3 +1,9 @@
+2019-06-13 Vincent Chen <vincentc@andestech.com>
+
+ * sysdeps/unix/sysv/linux/bits/socket.h (SIOCGSTAMP_OLD): Undefine
+ if defined by <asm/socket.h> and not previously defined.
+ (SIOCGSTAMPNS_OLD): Likewise.
+
2019-06-12 Adhemerval Zanella <adhemerval.zanella@linaro.org>
* sysdeps/powerpc/powerpc32/power4/fpu/multiarch/Makefile
@@ -372,6 +372,12 @@ struct ucred
# ifndef SIOCSPGRP
# define __SYS_SOCKET_H_undef_SIOCSPGRP
# endif
+# ifndef SIOCGSTAMP_OLD
+# define __SYS_SOCKET_H_undef_SIOCGSTAMP_OLD
+# endif
+# ifndef SIOCGSTAMPNS_OLD
+# define __SYS_SOCKET_H_undef_SIOCGSTAMPNS_OLD
+# endif
#endif
#ifndef IOCSIZE_MASK
# define __SYS_SOCKET_H_undef_IOCSIZE_MASK
@@ -421,6 +427,14 @@ struct ucred
# undef __SYS_SOCKET_H_undef_SIOCSPGRP
# undef SIOCSPGRP
# endif
+# ifdef __SYS_SOCKET_H_undef_SIOCGSTAMP_OLD
+# undef __SYS_SOCKET_H_undef_SIOCGSTAMP_OLD
+# undef SIOCGSTAMP_OLD
+# endif
+# ifdef __SYS_SOCKET_H_undef_SIOCGSTAMPNS_OLD
+# undef __SYS_SOCKET_H_undef_SIOCGSTAMPNS_OLD
+# undef SIOCGSTAMPNS_OLD
+# endif
#endif
#ifdef __SYS_SOCKET_H_undef_IOCSIZE_MASK
# undef __SYS_SOCKET_H_undef_IOCSIZE_MASK