forked from bminor/glibc
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Linux: Use in-tree copy of SO_ constants for !__USE_MISC [BZ #24532]
The kernel changes for a 64-bit time_t on 32-bit architectures resulted in <asm/socket.h> indirectly including <linux/posix_types.h>. The latter is not namespace-clean for the POSIX version of <sys/socket.h>. This issue has persisted across several Linux releases, so this commit creates our own copy of the SO_* definitions for !__USE_MISC mode. The new test socket/tst-socket-consts ensures that the copy is consistent with the kernel definitions (which vary across architectures). The test is tricky to get right because CPPFLAGS includes include/libc-symbols.h, which in turn defines _GNU_SOURCE unconditionally. Tested with build-many-glibcs.py. I verified that a discrepancy in the definitions actually results in a failure of the socket/tst-socket-consts test.
- Loading branch information
1 parent
35e038c
commit 7854ebf
Showing
10 changed files
with
333 additions
and
94 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,25 @@ | ||
2019-07-24 Florian Weimer <[email protected]> | ||
|
||
[BZ #24532] | ||
Linux: Use in-tree copy of SO_ constants for !__USE_MISC. | ||
* sysdeps/unix/sysv/linux/Makefile [$(subdir) == socket] | ||
(sysdep_headers): Add bits/socket-constants.h. | ||
(tests-special): Add tst-socket-consts.out. | ||
(tst-socket-consts.out): New target. | ||
* sysdeps/unix/sysv/linux/bits/socket.h: Remove macro tracking | ||
around <asm/unistd.h>. | ||
[__USE_MISC]: Include <bits/types/time_t.h> before <asm/socket.h>. | ||
[!__USE_MISC]: Include <sys/socket-constants.h> instead of | ||
<asm/socket.h>. | ||
* sysdeps/unix/sysv/linux/bits/tst-socket-consts.py: New file. | ||
* sysdeps/unix/sysv/linux/bits/socket-constants.h: Likewise. | ||
* sysdeps/unix/sysv/linux/alpha/bits/socket-constants.h: Likewise. | ||
* sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h: Likewise. | ||
* sysdeps/unix/sysv/linux/mips/bits/socket-constants.h: Likewise. | ||
* sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h: | ||
Likewise. | ||
* sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h: Likewise. | ||
|
||
2019-07-23 Tulio Magno Quites Machado Filho <[email protected]> | ||
|
||
[BZ #24794] | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
/* Socket constants which vary among Linux architectures. Version for alpha. | ||
Copyright (C) 2019 Free Software Foundation, Inc. | ||
This file is part of the GNU C Library. | ||
The GNU C Library is free software; you can redistribute it and/or | ||
modify it under the terms of the GNU Lesser General Public | ||
License as published by the Free Software Foundation; either | ||
version 2.1 of the License, or (at your option) any later version. | ||
The GNU C Library is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
Lesser General Public License for more details. | ||
You should have received a copy of the GNU Lesser General Public | ||
License along with the GNU C Library; if not, see | ||
<http://www.gnu.org/licenses/>. */ | ||
|
||
#ifndef _SYS_SOCKET_H | ||
# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead." | ||
#endif | ||
|
||
#define SOL_SOCKET 65535 | ||
#define SO_ACCEPTCONN 4116 | ||
#define SO_BROADCAST 32 | ||
#define SO_DONTROUTE 16 | ||
#define SO_ERROR 4103 | ||
#define SO_KEEPALIVE 8 | ||
#define SO_LINGER 128 | ||
#define SO_OOBINLINE 256 | ||
#define SO_RCVBUF 4098 | ||
#define SO_RCVLOWAT 4112 | ||
#define SO_RCVTIMEO 4114 | ||
#define SO_REUSEADDR 4 | ||
#define SO_SNDBUF 4097 | ||
#define SO_SNDLOWAT 4113 | ||
#define SO_SNDTIMEO 4115 | ||
#define SO_TYPE 4104 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
/* Socket constants which vary among Linux architectures. | ||
Copyright (C) 2019 Free Software Foundation, Inc. | ||
This file is part of the GNU C Library. | ||
The GNU C Library is free software; you can redistribute it and/or | ||
modify it under the terms of the GNU Lesser General Public | ||
License as published by the Free Software Foundation; either | ||
version 2.1 of the License, or (at your option) any later version. | ||
The GNU C Library is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
Lesser General Public License for more details. | ||
You should have received a copy of the GNU Lesser General Public | ||
License along with the GNU C Library; if not, see | ||
<http://www.gnu.org/licenses/>. */ | ||
|
||
#ifndef _SYS_SOCKET_H | ||
# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead." | ||
#endif | ||
|
||
#define SOL_SOCKET 1 | ||
#define SO_ACCEPTCONN 30 | ||
#define SO_BROADCAST 6 | ||
#define SO_DONTROUTE 5 | ||
#define SO_ERROR 4 | ||
#define SO_KEEPALIVE 9 | ||
#define SO_LINGER 13 | ||
#define SO_OOBINLINE 10 | ||
#define SO_RCVBUF 8 | ||
#define SO_RCVLOWAT 18 | ||
#define SO_RCVTIMEO 20 | ||
#define SO_REUSEADDR 2 | ||
#define SO_SNDBUF 7 | ||
#define SO_SNDLOWAT 19 | ||
#define SO_SNDTIMEO 21 | ||
#define SO_TYPE 3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
/* Socket constants which vary among Linux architectures. Version for hppa. | ||
Copyright (C) 2019 Free Software Foundation, Inc. | ||
This file is part of the GNU C Library. | ||
The GNU C Library is free software; you can redistribute it and/or | ||
modify it under the terms of the GNU Lesser General Public | ||
License as published by the Free Software Foundation; either | ||
version 2.1 of the License, or (at your option) any later version. | ||
The GNU C Library is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
Lesser General Public License for more details. | ||
You should have received a copy of the GNU Lesser General Public | ||
License along with the GNU C Library; if not, see | ||
<http://www.gnu.org/licenses/>. */ | ||
|
||
#ifndef _SYS_SOCKET_H | ||
# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead." | ||
#endif | ||
|
||
#define SOL_SOCKET 65535 | ||
#define SO_ACCEPTCONN 16412 | ||
#define SO_BROADCAST 32 | ||
#define SO_DONTROUTE 16 | ||
#define SO_ERROR 4103 | ||
#define SO_KEEPALIVE 8 | ||
#define SO_LINGER 128 | ||
#define SO_OOBINLINE 256 | ||
#define SO_RCVBUF 4098 | ||
#define SO_RCVLOWAT 4100 | ||
#define SO_RCVTIMEO 4102 | ||
#define SO_REUSEADDR 4 | ||
#define SO_SNDBUF 4097 | ||
#define SO_SNDLOWAT 4099 | ||
#define SO_SNDTIMEO 4101 | ||
#define SO_TYPE 4104 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
/* Socket constants which vary among Linux architectures. Version for MIPS. | ||
Copyright (C) 2019 Free Software Foundation, Inc. | ||
This file is part of the GNU C Library. | ||
The GNU C Library is free software; you can redistribute it and/or | ||
modify it under the terms of the GNU Lesser General Public | ||
License as published by the Free Software Foundation; either | ||
version 2.1 of the License, or (at your option) any later version. | ||
The GNU C Library is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
Lesser General Public License for more details. | ||
You should have received a copy of the GNU Lesser General Public | ||
License along with the GNU C Library; if not, see | ||
<http://www.gnu.org/licenses/>. */ | ||
|
||
#ifndef _SYS_SOCKET_H | ||
# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead." | ||
#endif | ||
|
||
#define SOL_SOCKET 65535 | ||
#define SO_ACCEPTCONN 4105 | ||
#define SO_BROADCAST 32 | ||
#define SO_DONTROUTE 16 | ||
#define SO_ERROR 4103 | ||
#define SO_KEEPALIVE 8 | ||
#define SO_LINGER 128 | ||
#define SO_OOBINLINE 256 | ||
#define SO_RCVBUF 4098 | ||
#define SO_RCVLOWAT 4100 | ||
#define SO_RCVTIMEO 4102 | ||
#define SO_REUSEADDR 4 | ||
#define SO_SNDBUF 4097 | ||
#define SO_SNDLOWAT 4099 | ||
#define SO_SNDTIMEO 4101 | ||
#define SO_TYPE 4104 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
/* Socket constants which vary among Linux architectures. Version for POWER. | ||
Copyright (C) 2019 Free Software Foundation, Inc. | ||
This file is part of the GNU C Library. | ||
The GNU C Library is free software; you can redistribute it and/or | ||
modify it under the terms of the GNU Lesser General Public | ||
License as published by the Free Software Foundation; either | ||
version 2.1 of the License, or (at your option) any later version. | ||
The GNU C Library is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
Lesser General Public License for more details. | ||
You should have received a copy of the GNU Lesser General Public | ||
License along with the GNU C Library; if not, see | ||
<http://www.gnu.org/licenses/>. */ | ||
|
||
#ifndef _SYS_SOCKET_H | ||
# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead." | ||
#endif | ||
|
||
#define SOL_SOCKET 1 | ||
#define SO_ACCEPTCONN 30 | ||
#define SO_BROADCAST 6 | ||
#define SO_DONTROUTE 5 | ||
#define SO_ERROR 4 | ||
#define SO_KEEPALIVE 9 | ||
#define SO_LINGER 13 | ||
#define SO_OOBINLINE 10 | ||
#define SO_RCVBUF 8 | ||
#define SO_RCVLOWAT 16 | ||
#define SO_RCVTIMEO 18 | ||
#define SO_REUSEADDR 2 | ||
#define SO_SNDBUF 7 | ||
#define SO_SNDLOWAT 17 | ||
#define SO_SNDTIMEO 19 | ||
#define SO_TYPE 3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
/* Socket constants which vary among Linux architectures. Version for SPARC. | ||
Copyright (C) 2019 Free Software Foundation, Inc. | ||
This file is part of the GNU C Library. | ||
The GNU C Library is free software; you can redistribute it and/or | ||
modify it under the terms of the GNU Lesser General Public | ||
License as published by the Free Software Foundation; either | ||
version 2.1 of the License, or (at your option) any later version. | ||
The GNU C Library is distributed in the hope that it will be useful, | ||
but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
Lesser General Public License for more details. | ||
You should have received a copy of the GNU Lesser General Public | ||
License along with the GNU C Library; if not, see | ||
<http://www.gnu.org/licenses/>. */ | ||
|
||
#ifndef _SYS_SOCKET_H | ||
# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead." | ||
#endif | ||
|
||
#define SOL_SOCKET 65535 | ||
#define SO_ACCEPTCONN 32768 | ||
#define SO_BROADCAST 32 | ||
#define SO_DONTROUTE 16 | ||
#define SO_ERROR 4103 | ||
#define SO_KEEPALIVE 8 | ||
#define SO_LINGER 128 | ||
#define SO_OOBINLINE 256 | ||
#define SO_RCVBUF 4098 | ||
#define SO_RCVLOWAT 2048 | ||
#define SO_RCVTIMEO 8192 | ||
#define SO_REUSEADDR 4 | ||
#define SO_SNDBUF 4097 | ||
#define SO_SNDLOWAT 4096 | ||
#define SO_SNDTIMEO 16384 | ||
#define SO_TYPE 4104 |
Oops, something went wrong.