mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 19:00:07 +00:00
Remove __ASSUME_SOCK_CLOEXEC / SOCK_CLOEXEC conditionals in Linux-specific code.
This patch removes conditionals on __ASSUME_SOCK_CLOEXEC, and on SOCK_CLOEXEC being defined, in Linux-specific code, now that all supported Linux kernel versions can be assumed to have this functionality. (The macro is also used in OS-independent code and is not defined for Hurd.) Tested x86_64 that the disassembly of installed shared libraries is unchanged by this patch. * nptl/sysdeps/unix/sysv/linux/mq_notify.c: Do not include <kernel-features.h>. (init_mq_netlink): Remove conditional have_sock_cloexec definitions. Remove code conditional on have_sock_cloexec < 0. (init_mq_netlink) [!SOCK_CLOEXEC]: Remove conditional code. (init_mq_netlink) [!__ASSUME_SOCK_CLOEXEC]: Likewise. * sysdeps/unix/sysv/linux/opensock.c: Do not include <kernel-features.h>. (__opensock) [SOCK_CLOEXEC]: Make code unconditional. (__opensock) [!__ASSUME_SOCK_CLOEXEC]: Remove conditional code.
This commit is contained in:
parent
d92d8f8a42
commit
d710902750
13
ChangeLog
13
ChangeLog
@ -1,3 +1,16 @@
|
|||||||
|
2014-06-20 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
* nptl/sysdeps/unix/sysv/linux/mq_notify.c: Do not include
|
||||||
|
<kernel-features.h>.
|
||||||
|
(init_mq_netlink): Remove conditional have_sock_cloexec
|
||||||
|
definitions. Remove code conditional on have_sock_cloexec < 0.
|
||||||
|
(init_mq_netlink) [!SOCK_CLOEXEC]: Remove conditional code.
|
||||||
|
(init_mq_netlink) [!__ASSUME_SOCK_CLOEXEC]: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/opensock.c: Do not include
|
||||||
|
<kernel-features.h>.
|
||||||
|
(__opensock) [SOCK_CLOEXEC]: Make code unconditional.
|
||||||
|
(__opensock) [!__ASSUME_SOCK_CLOEXEC]: Remove conditional code.
|
||||||
|
|
||||||
2014-06-20 H.J. Lu <hongjiu.lu@intel.com>
|
2014-06-20 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* sysdeps/x86_64/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list):
|
* sysdeps/x86_64/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list):
|
||||||
|
@ -28,7 +28,6 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <not-cancel.h>
|
#include <not-cancel.h>
|
||||||
#include <kernel-features.h>
|
|
||||||
#include <nptl/pthreadP.h>
|
#include <nptl/pthreadP.h>
|
||||||
|
|
||||||
|
|
||||||
@ -153,41 +152,15 @@ reset_once (void)
|
|||||||
static void
|
static void
|
||||||
init_mq_netlink (void)
|
init_mq_netlink (void)
|
||||||
{
|
{
|
||||||
#ifdef SOCK_CLOEXEC
|
|
||||||
# ifndef __ASSUME_SOCK_CLOEXEC
|
|
||||||
static int have_sock_cloexec;
|
|
||||||
# else
|
|
||||||
# define have_sock_cloexec 1
|
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
# define have_sock_cloexec -1
|
|
||||||
# define SOCK_CLOEXEC 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* This code might be called a second time after fork(). The file
|
/* This code might be called a second time after fork(). The file
|
||||||
descriptor is inherited from the parent. */
|
descriptor is inherited from the parent. */
|
||||||
if (netlink_socket == -1)
|
if (netlink_socket == -1)
|
||||||
{
|
{
|
||||||
/* Just a normal netlink socket, not bound. */
|
/* Just a normal netlink socket, not bound. */
|
||||||
if (have_sock_cloexec >= 0)
|
netlink_socket = socket (AF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, 0);
|
||||||
{
|
|
||||||
netlink_socket = socket (AF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, 0);
|
|
||||||
#if defined SOCK_CLOEXEC && !defined __ASSUME_SOCK_CLOEXEC
|
|
||||||
if (have_sock_cloexec == 0)
|
|
||||||
have_sock_cloexec = (netlink_socket != -1 || errno != EINVAL
|
|
||||||
? 1 : -1);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
if (have_sock_cloexec < 0)
|
|
||||||
netlink_socket = socket (AF_NETLINK, SOCK_RAW, 0);
|
|
||||||
/* No need to do more if we have no socket. */
|
/* No need to do more if we have no socket. */
|
||||||
if (netlink_socket == -1)
|
if (netlink_socket == -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Make sure the descriptor is closed on exec. */
|
|
||||||
if (have_sock_cloexec < 0
|
|
||||||
&& fcntl (netlink_socket, F_SETFD, FD_CLOEXEC) != 0)
|
|
||||||
goto errout;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int err = 1;
|
int err = 1;
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <kernel-features.h>
|
|
||||||
|
|
||||||
/* Return a socket of any type. The socket can be used in subsequent
|
/* Return a socket of any type. The socket can be used in subsequent
|
||||||
ioctl calls to talk to the kernel. */
|
ioctl calls to talk to the kernel. */
|
||||||
@ -63,24 +62,7 @@ __opensock (void)
|
|||||||
{
|
{
|
||||||
assert (last_type != 0);
|
assert (last_type != 0);
|
||||||
|
|
||||||
#ifdef SOCK_CLOEXEC
|
result = __socket (last_family, last_type | SOCK_CLOEXEC, 0);
|
||||||
# ifndef __ASSUME_SOCK_CLOEXEC
|
|
||||||
if (__have_sock_cloexec >= 0)
|
|
||||||
# endif
|
|
||||||
{
|
|
||||||
result = __socket (last_family, last_type | SOCK_CLOEXEC, 0);
|
|
||||||
# ifndef __ASSUME_SOCK_CLOEXEC
|
|
||||||
if (__have_sock_cloexec == 0)
|
|
||||||
__have_sock_cloexec = result != -1 || errno != EINVAL ? 1 : -1;
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifndef __ASSUME_SOCK_CLOEXEC
|
|
||||||
# ifdef SOCK_CLOEXEC
|
|
||||||
if (__have_sock_cloexec < 0)
|
|
||||||
# endif
|
|
||||||
result = __socket (last_family, last_type, 0);
|
|
||||||
#endif
|
|
||||||
if (result != -1 || errno != EAFNOSUPPORT)
|
if (result != -1 || errno != EAFNOSUPPORT)
|
||||||
/* Maybe the socket type isn't supported anymore (module is
|
/* Maybe the socket type isn't supported anymore (module is
|
||||||
unloaded). In this case again try to find the type. */
|
unloaded). In this case again try to find the type. */
|
||||||
@ -115,24 +97,7 @@ __opensock (void)
|
|||||||
if (afs[cnt].family == AF_NETROM || afs[cnt].family == AF_X25)
|
if (afs[cnt].family == AF_NETROM || afs[cnt].family == AF_X25)
|
||||||
type = SOCK_SEQPACKET;
|
type = SOCK_SEQPACKET;
|
||||||
|
|
||||||
#ifdef SOCK_CLOEXEC
|
result = __socket (afs[cnt].family, type | SOCK_CLOEXEC, 0);
|
||||||
# ifndef __ASSUME_SOCK_CLOEXEC
|
|
||||||
if (__have_sock_cloexec >= 0)
|
|
||||||
# endif
|
|
||||||
{
|
|
||||||
result = __socket (afs[cnt].family, type | SOCK_CLOEXEC, 0);
|
|
||||||
# ifndef __ASSUME_SOCK_CLOEXEC
|
|
||||||
if (__have_sock_cloexec == 0)
|
|
||||||
__have_sock_cloexec = result != -1 || errno != EINVAL ? 1 : -1;
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifndef __ASSUME_SOCK_CLOEXEC
|
|
||||||
# ifdef SOCK_CLOEXEC
|
|
||||||
if (__have_sock_cloexec < 0)
|
|
||||||
# endif
|
|
||||||
result = __socket (afs[cnt].family, type, 0);
|
|
||||||
#endif
|
|
||||||
if (result != -1)
|
if (result != -1)
|
||||||
{
|
{
|
||||||
/* Found an available family. */
|
/* Found an available family. */
|
||||||
|
Loading…
Reference in New Issue
Block a user