From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2178) id 9E81A398842D; Thu, 22 Jul 2021 17:53:13 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9E81A398842D Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Florian Weimer To: glibc-cvs@sourceware.org Subject: [glibc] socket: Add time64 alias for getsockopt X-Act-Checkin: glibc X-Git-Author: Florian Weimer X-Git-Refname: refs/heads/master X-Git-Oldrev: 6856975ed4ce79355752d08938f066f2ed9fcfb5 X-Git-Newrev: 02c17c8c1456e4c07f11ba7d080e1dd292bed162 Message-Id: <20210722175313.9E81A398842D@sourceware.org> Date: Thu, 22 Jul 2021 17:53:13 +0000 (GMT) X-BeenThere: glibc-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Glibc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jul 2021 17:53:13 -0000 https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=02c17c8c1456e4c07f11ba7d080e1dd292bed162 commit 02c17c8c1456e4c07f11ba7d080e1dd292bed162 Author: Florian Weimer Date: Thu Jul 22 19:12:12 2021 +0200 socket: Add time64 alias for getsockopt Reviewed-by: Lukasz Majewski Reviewed-by: Adhemerval Zanella Diff: --- socket/Makefile | 9 +++- socket/sys/socket.h | 15 +++++++ socket/tst-sockopt-time64.c | 1 + socket/tst-sockopt.c | 52 ++++++++++++++++++++++ sysdeps/unix/sysv/linux/Versions | 1 + sysdeps/unix/sysv/linux/arm/be/libc.abilist | 1 + sysdeps/unix/sysv/linux/arm/le/libc.abilist | 1 + sysdeps/unix/sysv/linux/csky/libc.abilist | 1 + sysdeps/unix/sysv/linux/getsockopt.c | 3 ++ sysdeps/unix/sysv/linux/hppa/libc.abilist | 1 + sysdeps/unix/sysv/linux/i386/libc.abilist | 1 + sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist | 1 + sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist | 1 + sysdeps/unix/sysv/linux/microblaze/be/libc.abilist | 1 + sysdeps/unix/sysv/linux/microblaze/le/libc.abilist | 1 + .../unix/sysv/linux/mips/mips32/fpu/libc.abilist | 1 + .../unix/sysv/linux/mips/mips32/nofpu/libc.abilist | 1 + .../unix/sysv/linux/mips/mips64/n32/libc.abilist | 1 + sysdeps/unix/sysv/linux/nios2/libc.abilist | 1 + .../sysv/linux/powerpc/powerpc32/fpu/libc.abilist | 1 + .../linux/powerpc/powerpc32/nofpu/libc.abilist | 1 + sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist | 1 + sysdeps/unix/sysv/linux/sh/be/libc.abilist | 1 + sysdeps/unix/sysv/linux/sh/le/libc.abilist | 1 + sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist | 1 + 25 files changed, 99 insertions(+), 1 deletion(-) diff --git a/socket/Makefile b/socket/Makefile index 27ffe44c05..3759576010 100644 --- a/socket/Makefile +++ b/socket/Makefile @@ -31,7 +31,14 @@ routines := accept bind connect getpeername getsockname getsockopt \ setsockopt shutdown socket socketpair isfdtype opensock \ sockatmark accept4 recvmmsg sendmmsg -tests := tst-accept4 +tests := \ + tst-accept4 \ + tst-sockopt \ + # tests + +tests-time64 := \ + tst-sockopt-time64 \ + # tests aux := sa_len diff --git a/socket/sys/socket.h b/socket/sys/socket.h index e779dc837f..b37c87e7df 100644 --- a/socket/sys/socket.h +++ b/socket/sys/socket.h @@ -251,9 +251,24 @@ extern int __REDIRECT (recvmmsg, (int __fd, struct mmsghdr *__vmessages, /* Put the current value for socket FD's option OPTNAME at protocol level LEVEL into OPTVAL (which is *OPTLEN bytes long), and set *OPTLEN to the value's actual length. Returns 0 on success, -1 for errors. */ +#ifndef __USE_TIME_BITS64 extern int getsockopt (int __fd, int __level, int __optname, void *__restrict __optval, socklen_t *__restrict __optlen) __THROW; +#else +# ifdef __REDIRECT +extern int __REDIRECT_NTH (getsockopt, + (int __fd, int __level, int __optname, + void *__restrict __optval, + socklen_t *__restrict __optlen), + __getsockopt64); +# else +extern int __getsockopt64 (int __fd, int __level, int __optname, + void *__restrict __optval, + socklen_t *__restrict __optlen) __THROW; +# define getsockopt __getsockopt64 +# endif +#endif /* Set socket FD's option OPTNAME at protocol level LEVEL to *OPTVAL (which is OPTLEN bytes long). diff --git a/socket/tst-sockopt-time64.c b/socket/tst-sockopt-time64.c new file mode 100644 index 0000000000..f1df48de73 --- /dev/null +++ b/socket/tst-sockopt-time64.c @@ -0,0 +1 @@ +#include "tst-sockopt.c" diff --git a/socket/tst-sockopt.c b/socket/tst-sockopt.c new file mode 100644 index 0000000000..f3ce0bc3a4 --- /dev/null +++ b/socket/tst-sockopt.c @@ -0,0 +1,52 @@ +/* Smoke test for socket options. + Copyright (C) 2021 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 + . */ + +#include +#include +#include +#include + +static int +do_test (void) +{ + int fd = xsocket (AF_INET, SOCK_STREAM, IPPROTO_TCP); + + struct linger value = { -1, -1 }; + socklen_t optlen = sizeof (value); + TEST_COMPARE (getsockopt (fd, SOL_SOCKET, SO_LINGER, &value, &optlen), 0); + TEST_COMPARE (optlen, sizeof (value)); + TEST_COMPARE (value.l_onoff, 0); + TEST_COMPARE (value.l_linger, 0); + + value.l_onoff = 1; + value.l_linger = 30; + TEST_COMPARE (setsockopt (fd, SOL_SOCKET, SO_LINGER, &value, sizeof (value)), + 0); + + value.l_onoff = -1; + value.l_linger = -1; + TEST_COMPARE (getsockopt (fd, SOL_SOCKET, SO_LINGER, &value, &optlen), 0); + TEST_COMPARE (optlen, sizeof (value)); + TEST_COMPARE (value.l_onoff, 1); + TEST_COMPARE (value.l_linger, 30); + + xclose (fd); + return 0; +} + +#include diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions index e03ebf9aff..5ff450f476 100644 --- a/sysdeps/unix/sysv/linux/Versions +++ b/sysdeps/unix/sysv/linux/Versions @@ -225,6 +225,7 @@ libc { __gai_suspend_time64; __getitimer64; __getrusage64; + __getsockopt64; __gettimeofday64; __glob64_time64; __globfree64_time64; diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist index a542ad23ce..e03e92bb74 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist @@ -218,6 +218,7 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __gai_suspend_time64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F +GLIBC_2.34 __getsockopt64 F GLIBC_2.34 __gettimeofday64 F GLIBC_2.34 __glob64_time64 F GLIBC_2.34 __globfree64_time64 F diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist index ea2291995b..9ec8cc841b 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist @@ -215,6 +215,7 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __gai_suspend_time64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F +GLIBC_2.34 __getsockopt64 F GLIBC_2.34 __gettimeofday64 F GLIBC_2.34 __glob64_time64 F GLIBC_2.34 __globfree64_time64 F diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist index da3f538b40..e90ad23a66 100644 --- a/sysdeps/unix/sysv/linux/csky/libc.abilist +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist @@ -2374,6 +2374,7 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __gai_suspend_time64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F +GLIBC_2.34 __getsockopt64 F GLIBC_2.34 __gettimeofday64 F GLIBC_2.34 __glob64_time64 F GLIBC_2.34 __globfree64_time64 F diff --git a/sysdeps/unix/sysv/linux/getsockopt.c b/sysdeps/unix/sysv/linux/getsockopt.c index f86b06dec6..57343d432c 100644 --- a/sysdeps/unix/sysv/linux/getsockopt.c +++ b/sysdeps/unix/sysv/linux/getsockopt.c @@ -101,3 +101,6 @@ __getsockopt (int fd, int level, int optname, void *optval, socklen_t *len) return r; } weak_alias (__getsockopt, getsockopt) +#if __TIMESIZE != 64 +weak_alias (__getsockopt, __getsockopt64) +#endif diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist index 91922bdc65..0d6e59094e 100644 --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist @@ -2323,6 +2323,7 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __gai_suspend_time64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F +GLIBC_2.34 __getsockopt64 F GLIBC_2.34 __gettimeofday64 F GLIBC_2.34 __glob64_time64 F GLIBC_2.34 __globfree64_time64 F diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist index 9e4937c29b..368d23caa7 100644 --- a/sysdeps/unix/sysv/linux/i386/libc.abilist +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist @@ -2506,6 +2506,7 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __gai_suspend_time64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F +GLIBC_2.34 __getsockopt64 F GLIBC_2.34 __gettimeofday64 F GLIBC_2.34 __glob64_time64 F GLIBC_2.34 __globfree64_time64 F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist index af2e09ddb8..546f677736 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist @@ -219,6 +219,7 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __gai_suspend_time64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F +GLIBC_2.34 __getsockopt64 F GLIBC_2.34 __gettimeofday64 F GLIBC_2.34 __glob64_time64 F GLIBC_2.34 __globfree64_time64 F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist index 6f416dafd7..0ae3ce49d9 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist @@ -2450,6 +2450,7 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __gai_suspend_time64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F +GLIBC_2.34 __getsockopt64 F GLIBC_2.34 __gettimeofday64 F GLIBC_2.34 __glob64_time64 F GLIBC_2.34 __globfree64_time64 F diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist index 3accefd9ee..8a6be1fd97 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist @@ -2423,6 +2423,7 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __gai_suspend_time64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F +GLIBC_2.34 __getsockopt64 F GLIBC_2.34 __gettimeofday64 F GLIBC_2.34 __glob64_time64 F GLIBC_2.34 __globfree64_time64 F diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist index d21f917700..a53147b655 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist @@ -2420,6 +2420,7 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __gai_suspend_time64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F +GLIBC_2.34 __getsockopt64 F GLIBC_2.34 __gettimeofday64 F GLIBC_2.34 __glob64_time64 F GLIBC_2.34 __globfree64_time64 F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist index 2ff15825ec..c5c6f29862 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist @@ -2415,6 +2415,7 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __gai_suspend_time64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F +GLIBC_2.34 __getsockopt64 F GLIBC_2.34 __gettimeofday64 F GLIBC_2.34 __glob64_time64 F GLIBC_2.34 __globfree64_time64 F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist index b58f60783a..0268a4ee79 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist @@ -2413,6 +2413,7 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __gai_suspend_time64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F +GLIBC_2.34 __getsockopt64 F GLIBC_2.34 __gettimeofday64 F GLIBC_2.34 __glob64_time64 F GLIBC_2.34 __globfree64_time64 F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist index ae933424bf..19fa4ba58f 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist @@ -2421,6 +2421,7 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __gai_suspend_time64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F +GLIBC_2.34 __getsockopt64 F GLIBC_2.34 __gettimeofday64 F GLIBC_2.34 __glob64_time64 F GLIBC_2.34 __globfree64_time64 F diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist index 91c103fcf0..f40f94f27f 100644 --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist @@ -2462,6 +2462,7 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __gai_suspend_time64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F +GLIBC_2.34 __getsockopt64 F GLIBC_2.34 __gettimeofday64 F GLIBC_2.34 __glob64_time64 F GLIBC_2.34 __globfree64_time64 F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist index 7961a99f4a..374685c8bb 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist @@ -2477,6 +2477,7 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __gai_suspend_time64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F +GLIBC_2.34 __getsockopt64 F GLIBC_2.34 __gettimeofday64 F GLIBC_2.34 __glob64_time64 F GLIBC_2.34 __globfree64_time64 F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist index 146e27aac6..3a1c2709e9 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist @@ -2510,6 +2510,7 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __gai_suspend_time64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F +GLIBC_2.34 __getsockopt64 F GLIBC_2.34 __gettimeofday64 F GLIBC_2.34 __glob64_time64 F GLIBC_2.34 __globfree64_time64 F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist index 35c59b502b..cd0dc210fa 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist @@ -2475,6 +2475,7 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __gai_suspend_time64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F +GLIBC_2.34 __getsockopt64 F GLIBC_2.34 __gettimeofday64 F GLIBC_2.34 __glob64_time64 F GLIBC_2.34 __globfree64_time64 F diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist index 9e2c2fbf21..69dde2566f 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist @@ -2330,6 +2330,7 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __gai_suspend_time64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F +GLIBC_2.34 __getsockopt64 F GLIBC_2.34 __gettimeofday64 F GLIBC_2.34 __glob64_time64 F GLIBC_2.34 __globfree64_time64 F diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist index f2dd40bc5a..0b315be4be 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist @@ -2327,6 +2327,7 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __gai_suspend_time64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F +GLIBC_2.34 __getsockopt64 F GLIBC_2.34 __gettimeofday64 F GLIBC_2.34 __glob64_time64 F GLIBC_2.34 __globfree64_time64 F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist index 567a7d8500..c74bc8b581 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist @@ -2470,6 +2470,7 @@ GLIBC_2.34 __futimesat64 F GLIBC_2.34 __gai_suspend_time64 F GLIBC_2.34 __getitimer64 F GLIBC_2.34 __getrusage64 F +GLIBC_2.34 __getsockopt64 F GLIBC_2.34 __gettimeofday64 F GLIBC_2.34 __glob64_time64 F GLIBC_2.34 __globfree64_time64 F