From e7f488a6d267001214636507c79210af57c2c6a7 Mon Sep 17 00:00:00 2001 From: Eugene Syromyatnikov Date: Thu, 31 Oct 2024 13:28:00 +0100 Subject: [PATCH 189/190] tests: move k_setsockopt definition into a separate file ...and add k_getsockopt definition as well (for completeness's sake and because it will be utilised in the next patch). * tests/k_sockopt.c: New file. * tests/k_sockopt.h: Likewise. * tests/Makefile.am (libtests_a_SOURCES): Add k_sockopt.c and k_sockopt.h. * tests/sockopt-timestamp.c: Include "k_sockopt.h". --- tests/Makefile.am | 2 ++ tests/k_sockopt.c | 61 +++++++++++++++++++++++++++++++++++++++ tests/k_sockopt.h | 24 +++++++++++++++ tests/sockopt-timestamp.c | 25 +--------------- 4 files changed, 88 insertions(+), 24 deletions(-) create mode 100644 tests/k_sockopt.c create mode 100644 tests/k_sockopt.h Index: strace-6.7/tests/Makefile.am =================================================================== --- strace-6.7.orig/tests/Makefile.am 2024-10-31 14:07:30.389665979 +0100 +++ strace-6.7/tests/Makefile.am 2024-10-31 14:07:30.445665345 +0100 @@ -61,6 +61,8 @@ hexquote_strndup.c \ ifindex.c \ inode_of_sockfd.c \ + k_sockopt.c \ + k_sockopt.h \ libmmsg.c \ libsocketcall.c \ lock_file.c \ Index: strace-6.7/tests/k_sockopt.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ strace-6.7/tests/k_sockopt.c 2024-10-31 14:07:30.445665345 +0100 @@ -0,0 +1,61 @@ +/* + * [gs]etsockopt() wrappers that avoid glibc and perform syscalls directly. + * + * Copyright (c) 2019 Dmitry V. Levin + * Copyright (c) 2019-2024 The strace developers. + * All rights reserved. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "tests.h" +#include "scno.h" + +#include +#include + +#include "k_sockopt.h" + +static const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; + +#if defined __NR_getsockopt || defined __NR_setsockopt +static const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; +#endif + +#define SC_getsockopt 15 +long +k_getsockopt(const unsigned int fd, const unsigned int level, + const unsigned int optname, const void *const optval, + const unsigned int *len) +{ + return syscall( +#ifdef __NR_getsockopt + __NR_getsockopt, +#else /* socketcall */ + __NR_socketcall, SC_getsockopt, +#endif + fill | fd , fill | level, fill | optname, optval, len +#ifdef __NR_getsockopt + , bad +#endif + ); +} + +# define SC_setsockopt 14 +long +k_setsockopt(const unsigned int fd, const unsigned int level, + const unsigned int optname, const void *const optval, + const unsigned int len) +{ + return syscall( +#ifdef __NR_setsockopt + __NR_setsockopt, +#else /* socketcall */ + __NR_socketcall, SC_setsockopt, +#endif + fill | fd , fill | level, fill | optname, optval, fill | len +#ifdef __NR_setsockopt + , bad +#endif + ); +} Index: strace-6.7/tests/k_sockopt.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ strace-6.7/tests/k_sockopt.h 2024-10-31 14:07:30.445665345 +0100 @@ -0,0 +1,24 @@ +/* + * [gs]etsockopt() wrappers that avoid glibc and perform syscalls directly. + * + * Copyright (c) 2019 Dmitry V. Levin + * Copyright (c) 2019-2024 The strace developers. + * All rights reserved. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef STRACE_K_SOCKOPT_H +#define STRACE_K_SOCKOPT_H + +extern long +k_getsockopt(const unsigned int fd, const unsigned int level, + const unsigned int optname, const void *const optval, + const unsigned int *len); + +extern long +k_setsockopt(const unsigned int fd, const unsigned int level, + const unsigned int optname, const void *const optval, + const unsigned int len); + +#endif /* STRACE_K_SOCKOPT_H */ Index: strace-6.7/tests/sockopt-timestamp.c =================================================================== --- strace-6.7.orig/tests/sockopt-timestamp.c 2024-10-31 14:07:27.014704200 +0100 +++ strace-6.7/tests/sockopt-timestamp.c 2024-10-31 14:07:30.446665333 +0100 @@ -22,6 +22,7 @@ # include "kernel_time_types.h" # include "kernel_timeval.h" # include "kernel_old_timespec.h" +# include "k_sockopt.h" # define XLAT_MACROS_ONLY # include "xlat/sock_options.h" @@ -44,30 +45,6 @@ return rc; } -# define SC_setsockopt 14 -static long -k_setsockopt(const unsigned int fd, const unsigned int level, - const unsigned int optname, const void *const optval, - const unsigned int len) -{ - const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; -# ifdef __NR_setsockopt - const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; -# endif - - return syscall( -# ifdef __NR_setsockopt - __NR_setsockopt, -# else /* socketcall */ - __NR_socketcall, SC_setsockopt, -# endif - fill | fd , fill | level, fill | optname, optval, fill | len -# ifdef __NR_setsockopt - , bad -# endif - ); -} - static void print_timestamp_old(const struct cmsghdr *c) { Index: strace-6.7/tests/Makefile.in =================================================================== --- strace-6.7.orig/tests/Makefile.in 2024-10-31 14:07:30.402665832 +0100 +++ strace-6.7/tests/Makefile.in 2024-10-31 14:09:57.964994687 +0100 @@ -850,6 +850,7 @@ libtests_a-hexquote_strndup.$(OBJEXT) \ libtests_a-ifindex.$(OBJEXT) \ libtests_a-inode_of_sockfd.$(OBJEXT) \ + libtests_a-k_sockopt.$(OBJEXT) \ libtests_a-libmmsg.$(OBJEXT) \ libtests_a-libsocketcall.$(OBJEXT) \ libtests_a-lock_file.$(OBJEXT) \ @@ -6803,6 +6804,7 @@ ./$(DEPDIR)/libtests_a-hexquote_strndup.Po \ ./$(DEPDIR)/libtests_a-ifindex.Po \ ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po \ + ./$(DEPDIR)/libtests_a-k_sockopt.Po \ ./$(DEPDIR)/libtests_a-libmmsg.Po \ ./$(DEPDIR)/libtests_a-libsocketcall.Po \ ./$(DEPDIR)/libtests_a-lock_file.Po \ @@ -8709,6 +8711,8 @@ hexquote_strndup.c \ ifindex.c \ inode_of_sockfd.c \ + k_sockopt.c \ + k_sockopt.h \ libmmsg.c \ libsocketcall.c \ lock_file.c \ @@ -16432,6 +16436,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-hexquote_strndup.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-ifindex.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-inode_of_sockfd.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-k_sockopt.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libmmsg.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libsocketcall.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-lock_file.Po@am__quote@ # am--include-marker @@ -17367,6 +17372,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-inode_of_sockfd.obj `if test -f 'inode_of_sockfd.c'; then $(CYGPATH_W) 'inode_of_sockfd.c'; else $(CYGPATH_W) '$(srcdir)/inode_of_sockfd.c'; fi` +libtests_a-k_sockopt.o: k_sockopt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-k_sockopt.o -MD -MP -MF $(DEPDIR)/libtests_a-k_sockopt.Tpo -c -o libtests_a-k_sockopt.o `test -f 'k_sockopt.c' || echo '$(srcdir)/'`k_sockopt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-k_sockopt.Tpo $(DEPDIR)/libtests_a-k_sockopt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='k_sockopt.c' object='libtests_a-k_sockopt.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-k_sockopt.o `test -f 'k_sockopt.c' || echo '$(srcdir)/'`k_sockopt.c + +libtests_a-k_sockopt.obj: k_sockopt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-k_sockopt.obj -MD -MP -MF $(DEPDIR)/libtests_a-k_sockopt.Tpo -c -o libtests_a-k_sockopt.obj `if test -f 'k_sockopt.c'; then $(CYGPATH_W) 'k_sockopt.c'; else $(CYGPATH_W) '$(srcdir)/k_sockopt.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-k_sockopt.Tpo $(DEPDIR)/libtests_a-k_sockopt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='k_sockopt.c' object='libtests_a-k_sockopt.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-k_sockopt.obj `if test -f 'k_sockopt.c'; then $(CYGPATH_W) 'k_sockopt.c'; else $(CYGPATH_W) '$(srcdir)/k_sockopt.c'; fi` + libtests_a-libmmsg.o: libmmsg.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-libmmsg.o -MD -MP -MF $(DEPDIR)/libtests_a-libmmsg.Tpo -c -o libtests_a-libmmsg.o `test -f 'libmmsg.c' || echo '$(srcdir)/'`libmmsg.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-libmmsg.Tpo $(DEPDIR)/libtests_a-libmmsg.Po @@ -19014,6 +19033,7 @@ -rm -f ./$(DEPDIR)/libtests_a-hexquote_strndup.Po -rm -f ./$(DEPDIR)/libtests_a-ifindex.Po -rm -f ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po + -rm -f ./$(DEPDIR)/libtests_a-k_sockopt.Po -rm -f ./$(DEPDIR)/libtests_a-libmmsg.Po -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po @@ -20341,6 +20361,7 @@ -rm -f ./$(DEPDIR)/libtests_a-hexquote_strndup.Po -rm -f ./$(DEPDIR)/libtests_a-ifindex.Po -rm -f ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po + -rm -f ./$(DEPDIR)/libtests_a-k_sockopt.Po -rm -f ./$(DEPDIR)/libtests_a-libmmsg.Po -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po Index: strace-6.7/tests-m32/Makefile.am =================================================================== --- strace-6.7.orig/tests-m32/Makefile.am 2024-10-31 14:07:27.014704200 +0100 +++ strace-6.7/tests-m32/Makefile.am 2024-10-31 14:07:30.449665299 +0100 @@ -61,6 +61,8 @@ hexquote_strndup.c \ ifindex.c \ inode_of_sockfd.c \ + k_sockopt.c \ + k_sockopt.h \ libmmsg.c \ libsocketcall.c \ lock_file.c \ Index: strace-6.7/tests-m32/k_sockopt.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ strace-6.7/tests-m32/k_sockopt.c 2024-10-31 14:07:30.449665299 +0100 @@ -0,0 +1,61 @@ +/* + * [gs]etsockopt() wrappers that avoid glibc and perform syscalls directly. + * + * Copyright (c) 2019 Dmitry V. Levin + * Copyright (c) 2019-2024 The strace developers. + * All rights reserved. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "tests.h" +#include "scno.h" + +#include +#include + +#include "k_sockopt.h" + +static const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; + +#if defined __NR_getsockopt || defined __NR_setsockopt +static const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; +#endif + +#define SC_getsockopt 15 +long +k_getsockopt(const unsigned int fd, const unsigned int level, + const unsigned int optname, const void *const optval, + const unsigned int *len) +{ + return syscall( +#ifdef __NR_getsockopt + __NR_getsockopt, +#else /* socketcall */ + __NR_socketcall, SC_getsockopt, +#endif + fill | fd , fill | level, fill | optname, optval, len +#ifdef __NR_getsockopt + , bad +#endif + ); +} + +# define SC_setsockopt 14 +long +k_setsockopt(const unsigned int fd, const unsigned int level, + const unsigned int optname, const void *const optval, + const unsigned int len) +{ + return syscall( +#ifdef __NR_setsockopt + __NR_setsockopt, +#else /* socketcall */ + __NR_socketcall, SC_setsockopt, +#endif + fill | fd , fill | level, fill | optname, optval, fill | len +#ifdef __NR_setsockopt + , bad +#endif + ); +} Index: strace-6.7/tests-m32/k_sockopt.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ strace-6.7/tests-m32/k_sockopt.h 2024-10-31 14:07:30.449665299 +0100 @@ -0,0 +1,24 @@ +/* + * [gs]etsockopt() wrappers that avoid glibc and perform syscalls directly. + * + * Copyright (c) 2019 Dmitry V. Levin + * Copyright (c) 2019-2024 The strace developers. + * All rights reserved. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef STRACE_K_SOCKOPT_H +#define STRACE_K_SOCKOPT_H + +extern long +k_getsockopt(const unsigned int fd, const unsigned int level, + const unsigned int optname, const void *const optval, + const unsigned int *len); + +extern long +k_setsockopt(const unsigned int fd, const unsigned int level, + const unsigned int optname, const void *const optval, + const unsigned int len); + +#endif /* STRACE_K_SOCKOPT_H */ Index: strace-6.7/tests-m32/sockopt-timestamp.c =================================================================== --- strace-6.7.orig/tests-m32/sockopt-timestamp.c 2024-10-31 14:07:27.014704200 +0100 +++ strace-6.7/tests-m32/sockopt-timestamp.c 2024-10-31 14:07:30.450665288 +0100 @@ -22,6 +22,7 @@ # include "kernel_time_types.h" # include "kernel_timeval.h" # include "kernel_old_timespec.h" +# include "k_sockopt.h" # define XLAT_MACROS_ONLY # include "xlat/sock_options.h" @@ -44,30 +45,6 @@ return rc; } -# define SC_setsockopt 14 -static long -k_setsockopt(const unsigned int fd, const unsigned int level, - const unsigned int optname, const void *const optval, - const unsigned int len) -{ - const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; -# ifdef __NR_setsockopt - const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; -# endif - - return syscall( -# ifdef __NR_setsockopt - __NR_setsockopt, -# else /* socketcall */ - __NR_socketcall, SC_setsockopt, -# endif - fill | fd , fill | level, fill | optname, optval, fill | len -# ifdef __NR_setsockopt - , bad -# endif - ); -} - static void print_timestamp_old(const struct cmsghdr *c) { Index: strace-6.7/tests-m32/Makefile.in =================================================================== --- strace-6.7.orig/tests-m32/Makefile.in 2024-10-31 14:07:30.394665922 +0100 +++ strace-6.7/tests-m32/Makefile.in 2024-10-31 14:07:30.453665254 +0100 @@ -850,6 +850,7 @@ libtests_a-hexquote_strndup.$(OBJEXT) \ libtests_a-ifindex.$(OBJEXT) \ libtests_a-inode_of_sockfd.$(OBJEXT) \ + libtests_a-k_sockopt.$(OBJEXT) \ libtests_a-libmmsg.$(OBJEXT) \ libtests_a-libsocketcall.$(OBJEXT) \ libtests_a-lock_file.$(OBJEXT) \ @@ -6803,6 +6804,7 @@ ./$(DEPDIR)/libtests_a-hexquote_strndup.Po \ ./$(DEPDIR)/libtests_a-ifindex.Po \ ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po \ + ./$(DEPDIR)/libtests_a-k_sockopt.Po \ ./$(DEPDIR)/libtests_a-libmmsg.Po \ ./$(DEPDIR)/libtests_a-libsocketcall.Po \ ./$(DEPDIR)/libtests_a-lock_file.Po \ @@ -8709,6 +8711,8 @@ hexquote_strndup.c \ ifindex.c \ inode_of_sockfd.c \ + k_sockopt.c \ + k_sockopt.h \ libmmsg.c \ libsocketcall.c \ lock_file.c \ @@ -16432,6 +16436,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-hexquote_strndup.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-ifindex.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-inode_of_sockfd.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-k_sockopt.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libmmsg.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libsocketcall.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-lock_file.Po@am__quote@ # am--include-marker @@ -17367,6 +17372,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-inode_of_sockfd.obj `if test -f 'inode_of_sockfd.c'; then $(CYGPATH_W) 'inode_of_sockfd.c'; else $(CYGPATH_W) '$(srcdir)/inode_of_sockfd.c'; fi` +libtests_a-k_sockopt.o: k_sockopt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-k_sockopt.o -MD -MP -MF $(DEPDIR)/libtests_a-k_sockopt.Tpo -c -o libtests_a-k_sockopt.o `test -f 'k_sockopt.c' || echo '$(srcdir)/'`k_sockopt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-k_sockopt.Tpo $(DEPDIR)/libtests_a-k_sockopt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='k_sockopt.c' object='libtests_a-k_sockopt.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-k_sockopt.o `test -f 'k_sockopt.c' || echo '$(srcdir)/'`k_sockopt.c + +libtests_a-k_sockopt.obj: k_sockopt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-k_sockopt.obj -MD -MP -MF $(DEPDIR)/libtests_a-k_sockopt.Tpo -c -o libtests_a-k_sockopt.obj `if test -f 'k_sockopt.c'; then $(CYGPATH_W) 'k_sockopt.c'; else $(CYGPATH_W) '$(srcdir)/k_sockopt.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-k_sockopt.Tpo $(DEPDIR)/libtests_a-k_sockopt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='k_sockopt.c' object='libtests_a-k_sockopt.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-k_sockopt.obj `if test -f 'k_sockopt.c'; then $(CYGPATH_W) 'k_sockopt.c'; else $(CYGPATH_W) '$(srcdir)/k_sockopt.c'; fi` + libtests_a-libmmsg.o: libmmsg.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-libmmsg.o -MD -MP -MF $(DEPDIR)/libtests_a-libmmsg.Tpo -c -o libtests_a-libmmsg.o `test -f 'libmmsg.c' || echo '$(srcdir)/'`libmmsg.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-libmmsg.Tpo $(DEPDIR)/libtests_a-libmmsg.Po @@ -19014,6 +19033,7 @@ -rm -f ./$(DEPDIR)/libtests_a-hexquote_strndup.Po -rm -f ./$(DEPDIR)/libtests_a-ifindex.Po -rm -f ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po + -rm -f ./$(DEPDIR)/libtests_a-k_sockopt.Po -rm -f ./$(DEPDIR)/libtests_a-libmmsg.Po -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po @@ -20341,6 +20361,7 @@ -rm -f ./$(DEPDIR)/libtests_a-hexquote_strndup.Po -rm -f ./$(DEPDIR)/libtests_a-ifindex.Po -rm -f ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po + -rm -f ./$(DEPDIR)/libtests_a-k_sockopt.Po -rm -f ./$(DEPDIR)/libtests_a-libmmsg.Po -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po Index: strace-6.7/tests-mx32/Makefile.am =================================================================== --- strace-6.7.orig/tests-mx32/Makefile.am 2024-10-31 14:07:27.014704200 +0100 +++ strace-6.7/tests-mx32/Makefile.am 2024-10-31 14:07:30.453665254 +0100 @@ -61,6 +61,8 @@ hexquote_strndup.c \ ifindex.c \ inode_of_sockfd.c \ + k_sockopt.c \ + k_sockopt.h \ libmmsg.c \ libsocketcall.c \ lock_file.c \ Index: strace-6.7/tests-mx32/k_sockopt.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ strace-6.7/tests-mx32/k_sockopt.c 2024-10-31 14:07:30.453665254 +0100 @@ -0,0 +1,61 @@ +/* + * [gs]etsockopt() wrappers that avoid glibc and perform syscalls directly. + * + * Copyright (c) 2019 Dmitry V. Levin + * Copyright (c) 2019-2024 The strace developers. + * All rights reserved. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "tests.h" +#include "scno.h" + +#include +#include + +#include "k_sockopt.h" + +static const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; + +#if defined __NR_getsockopt || defined __NR_setsockopt +static const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; +#endif + +#define SC_getsockopt 15 +long +k_getsockopt(const unsigned int fd, const unsigned int level, + const unsigned int optname, const void *const optval, + const unsigned int *len) +{ + return syscall( +#ifdef __NR_getsockopt + __NR_getsockopt, +#else /* socketcall */ + __NR_socketcall, SC_getsockopt, +#endif + fill | fd , fill | level, fill | optname, optval, len +#ifdef __NR_getsockopt + , bad +#endif + ); +} + +# define SC_setsockopt 14 +long +k_setsockopt(const unsigned int fd, const unsigned int level, + const unsigned int optname, const void *const optval, + const unsigned int len) +{ + return syscall( +#ifdef __NR_setsockopt + __NR_setsockopt, +#else /* socketcall */ + __NR_socketcall, SC_setsockopt, +#endif + fill | fd , fill | level, fill | optname, optval, fill | len +#ifdef __NR_setsockopt + , bad +#endif + ); +} Index: strace-6.7/tests-mx32/k_sockopt.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ strace-6.7/tests-mx32/k_sockopt.h 2024-10-31 14:07:30.453665254 +0100 @@ -0,0 +1,24 @@ +/* + * [gs]etsockopt() wrappers that avoid glibc and perform syscalls directly. + * + * Copyright (c) 2019 Dmitry V. Levin + * Copyright (c) 2019-2024 The strace developers. + * All rights reserved. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef STRACE_K_SOCKOPT_H +#define STRACE_K_SOCKOPT_H + +extern long +k_getsockopt(const unsigned int fd, const unsigned int level, + const unsigned int optname, const void *const optval, + const unsigned int *len); + +extern long +k_setsockopt(const unsigned int fd, const unsigned int level, + const unsigned int optname, const void *const optval, + const unsigned int len); + +#endif /* STRACE_K_SOCKOPT_H */ Index: strace-6.7/tests-mx32/sockopt-timestamp.c =================================================================== --- strace-6.7.orig/tests-mx32/sockopt-timestamp.c 2024-10-31 14:07:27.014704200 +0100 +++ strace-6.7/tests-mx32/sockopt-timestamp.c 2024-10-31 14:07:30.453665254 +0100 @@ -22,6 +22,7 @@ # include "kernel_time_types.h" # include "kernel_timeval.h" # include "kernel_old_timespec.h" +# include "k_sockopt.h" # define XLAT_MACROS_ONLY # include "xlat/sock_options.h" @@ -44,30 +45,6 @@ return rc; } -# define SC_setsockopt 14 -static long -k_setsockopt(const unsigned int fd, const unsigned int level, - const unsigned int optname, const void *const optval, - const unsigned int len) -{ - const kernel_ulong_t fill = (kernel_ulong_t) 0xdefaced00000000ULL; -# ifdef __NR_setsockopt - const kernel_ulong_t bad = (kernel_ulong_t) 0xbadc0dedbadc0dedULL; -# endif - - return syscall( -# ifdef __NR_setsockopt - __NR_setsockopt, -# else /* socketcall */ - __NR_socketcall, SC_setsockopt, -# endif - fill | fd , fill | level, fill | optname, optval, fill | len -# ifdef __NR_setsockopt - , bad -# endif - ); -} - static void print_timestamp_old(const struct cmsghdr *c) { Index: strace-6.7/tests-mx32/Makefile.in =================================================================== --- strace-6.7.orig/tests-mx32/Makefile.in 2024-10-31 14:07:30.398665877 +0100 +++ strace-6.7/tests-mx32/Makefile.in 2024-10-31 14:07:30.456665220 +0100 @@ -850,6 +850,7 @@ libtests_a-hexquote_strndup.$(OBJEXT) \ libtests_a-ifindex.$(OBJEXT) \ libtests_a-inode_of_sockfd.$(OBJEXT) \ + libtests_a-k_sockopt.$(OBJEXT) \ libtests_a-libmmsg.$(OBJEXT) \ libtests_a-libsocketcall.$(OBJEXT) \ libtests_a-lock_file.$(OBJEXT) \ @@ -6803,6 +6804,7 @@ ./$(DEPDIR)/libtests_a-hexquote_strndup.Po \ ./$(DEPDIR)/libtests_a-ifindex.Po \ ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po \ + ./$(DEPDIR)/libtests_a-k_sockopt.Po \ ./$(DEPDIR)/libtests_a-libmmsg.Po \ ./$(DEPDIR)/libtests_a-libsocketcall.Po \ ./$(DEPDIR)/libtests_a-lock_file.Po \ @@ -8709,6 +8711,8 @@ hexquote_strndup.c \ ifindex.c \ inode_of_sockfd.c \ + k_sockopt.c \ + k_sockopt.h \ libmmsg.c \ libsocketcall.c \ lock_file.c \ @@ -16432,6 +16436,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-hexquote_strndup.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-ifindex.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-inode_of_sockfd.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-k_sockopt.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libmmsg.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-libsocketcall.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-lock_file.Po@am__quote@ # am--include-marker @@ -17367,6 +17372,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-inode_of_sockfd.obj `if test -f 'inode_of_sockfd.c'; then $(CYGPATH_W) 'inode_of_sockfd.c'; else $(CYGPATH_W) '$(srcdir)/inode_of_sockfd.c'; fi` +libtests_a-k_sockopt.o: k_sockopt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-k_sockopt.o -MD -MP -MF $(DEPDIR)/libtests_a-k_sockopt.Tpo -c -o libtests_a-k_sockopt.o `test -f 'k_sockopt.c' || echo '$(srcdir)/'`k_sockopt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-k_sockopt.Tpo $(DEPDIR)/libtests_a-k_sockopt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='k_sockopt.c' object='libtests_a-k_sockopt.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-k_sockopt.o `test -f 'k_sockopt.c' || echo '$(srcdir)/'`k_sockopt.c + +libtests_a-k_sockopt.obj: k_sockopt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-k_sockopt.obj -MD -MP -MF $(DEPDIR)/libtests_a-k_sockopt.Tpo -c -o libtests_a-k_sockopt.obj `if test -f 'k_sockopt.c'; then $(CYGPATH_W) 'k_sockopt.c'; else $(CYGPATH_W) '$(srcdir)/k_sockopt.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-k_sockopt.Tpo $(DEPDIR)/libtests_a-k_sockopt.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='k_sockopt.c' object='libtests_a-k_sockopt.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-k_sockopt.obj `if test -f 'k_sockopt.c'; then $(CYGPATH_W) 'k_sockopt.c'; else $(CYGPATH_W) '$(srcdir)/k_sockopt.c'; fi` + libtests_a-libmmsg.o: libmmsg.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-libmmsg.o -MD -MP -MF $(DEPDIR)/libtests_a-libmmsg.Tpo -c -o libtests_a-libmmsg.o `test -f 'libmmsg.c' || echo '$(srcdir)/'`libmmsg.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-libmmsg.Tpo $(DEPDIR)/libtests_a-libmmsg.Po @@ -19014,6 +19033,7 @@ -rm -f ./$(DEPDIR)/libtests_a-hexquote_strndup.Po -rm -f ./$(DEPDIR)/libtests_a-ifindex.Po -rm -f ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po + -rm -f ./$(DEPDIR)/libtests_a-k_sockopt.Po -rm -f ./$(DEPDIR)/libtests_a-libmmsg.Po -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po @@ -20341,6 +20361,7 @@ -rm -f ./$(DEPDIR)/libtests_a-hexquote_strndup.Po -rm -f ./$(DEPDIR)/libtests_a-ifindex.Po -rm -f ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po + -rm -f ./$(DEPDIR)/libtests_a-k_sockopt.Po -rm -f ./$(DEPDIR)/libtests_a-libmmsg.Po -rm -f ./$(DEPDIR)/libtests_a-libsocketcall.Po -rm -f ./$(DEPDIR)/libtests_a-lock_file.Po