From: Steve Langasek <steve.langasek@canonical.com>
Date: Tue, 23 Apr 2024 14:31:25 +0200
Subject: wrap the write symbols when _FILE_OFFSET_BITS=64 is set

Forwarded: no
Last-Update: 2025-08-13

The setsockopt function in glibc is only used on 32-bit archs when LFS is
not enabled.  Support wrapping __setsockopt64 as well.
---
 boreas/CMakeLists.txt | 2 +-
 boreas/util_tests.c   | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/boreas/CMakeLists.txt b/boreas/CMakeLists.txt
index 1b6cd05..854ce0e 100644
--- a/boreas/CMakeLists.txt
+++ b/boreas/CMakeLists.txt
@@ -215,7 +215,7 @@ if(BUILD_TESTS)
     ${CMAKE_THREAD_LIBS_INIT}
   )
 
-  set(UTIL_TEST_LINKER_WRAP_OPTIONS "-Wl,-wrap,socket,-wrap,setsockopt")
+  set(UTIL_TEST_LINKER_WRAP_OPTIONS "-Wl,-wrap,socket,-wrap,setsockopt,-wrap,__setsockopt64")
   add_unit_test(
     util-test
     util_tests.c
diff --git a/boreas/util_tests.c b/boreas/util_tests.c
index 6750e2b..779abcc 100644
--- a/boreas/util_tests.c
+++ b/boreas/util_tests.c
@@ -17,6 +17,11 @@ AfterEach (util)
 {
 }
 
+#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64
+#define __real_setsockopt __real___setsockopt64
+#define __wrap_setsockopt __wrap___setsockopt64
+#endif
+
 __attribute__ ((weak)) int
 __real_socket (__attribute__ ((unused)) int domain,
                __attribute__ ((unused)) int type,
