diff options
author | Florian Weimer <fweimer@redhat.com> | 2019-07-18 20:19:39 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2019-07-21 22:31:33 +0200 |
commit | 87a66e30606ab0e2e45e17eaa862e83dc6013ed6 (patch) | |
tree | f7006cc5801fbbae6a353bf93746f4b649613727 /sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h | |
parent | 719d81f129206d51bf168076ed1578e7414c2506 (diff) | |
download | glibc-87a66e30606ab0e2e45e17eaa862e83dc6013ed6.tar.gz glibc-87a66e30606ab0e2e45e17eaa862e83dc6013ed6.tar.xz glibc-87a66e30606ab0e2e45e17eaa862e83dc6013ed6.zip |
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.
Diffstat (limited to 'sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h')
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h b/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h new file mode 100644 index 0000000000..a663e11210 --- /dev/null +++ b/sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h @@ -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 |