commit: eb2564c0f8a8f3d32104e65939d8a72cb6b3695b Author: Z. Liu <zhixu.liu <AT> gmail <DOT> com> AuthorDate: Mon Mar 3 14:52:20 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Mon Mar 10 02:08:44 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=eb2564c0
sys-cluster/rdma-core: fix build issue with clang 19 patch submitted to https://github.com/linux-rdma/rdma-core/pull/1572 Signed-off-by: Z. Liu <zhixu.liu <AT> gmail.com> Closes: https://github.com/gentoo/gentoo/pull/40867 Signed-off-by: Sam James <sam <AT> gentoo.org> ...3.1-preload-fix-build-issue-with-clang-19.patch | 162 +++++++++++++++++++++ sys-cluster/rdma-core/rdma-core-53.1.ebuild | 3 +- 2 files changed, 164 insertions(+), 1 deletion(-) diff --git a/sys-cluster/rdma-core/files/rdma-core-53.1-preload-fix-build-issue-with-clang-19.patch b/sys-cluster/rdma-core/files/rdma-core-53.1-preload-fix-build-issue-with-clang-19.patch new file mode 100644 index 000000000000..8f4e7dc93523 --- /dev/null +++ b/sys-cluster/rdma-core/files/rdma-core-53.1-preload-fix-build-issue-with-clang-19.patch @@ -0,0 +1,162 @@ +From 660479ab1ac25a016e07634c1313427489bb6747 Mon Sep 17 00:00:00 2001 +From: "Z. Liu" <[email protected]> +Date: Mon, 3 Mar 2025 22:40:15 +0800 +Subject: [PATCH 1/4] preload: fix build issue with clang 19 + +librdmacm/preload.c:796:9: error: at most one overload for a given name may lack the 'overloadable' attribute +librdmacm/preload.c:796:9: warning: no previous prototype for function 'recvfrom' [-Wmissing-prototypes] + +Signed-off-by: Z. Liu <[email protected]> +--- + CMakeLists.txt | 7 +++++++ + buildlib/config.h.in | 2 ++ + librdmacm/preload.c | 9 +++++++++ + 3 files changed, 18 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 7f5b4139b..26d658830 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -394,6 +394,13 @@ if (NOT HAVE_LONG_LONG_U64) + add_definitions("-D__SANE_USERSPACE_TYPES__") + endif() + ++# Check __SOCKADDR_ARG exist and is union ++RDMA_Check_C_Compiles(HAVE_SOCKADDR_ARG_AS_UNION " ++#define _GNU_SOURCE ++#include <sys/socket.h> ++ int main(int argc,const char *argv[]) {struct sockaddr addr;__SOCKADDR_ARG sa; sa.__sockaddr__ = (struct sockaddr *)&addr; (void)addr; (void)sa; return 0;}" ++) ++ + # glibc and kernel uapi headers can co-exist + CHECK_C_SOURCE_COMPILES(" + #include <sys/socket.h> +diff --git a/buildlib/config.h.in b/buildlib/config.h.in +index c5b0bf557..663248041 100644 +--- a/buildlib/config.h.in ++++ b/buildlib/config.h.in +@@ -50,6 +50,8 @@ + + #cmakedefine HAVE_WORKING_IF_H 1 + ++#cmakedefine HAVE_SOCKADDR_ARG_AS_UNION 1 ++ + // Operating mode for symbol versions + #cmakedefine HAVE_FULL_SYMBOL_VERSIONS 1 + #cmakedefine HAVE_LIMITED_SYMBOL_VERSIONS 1 +diff --git a/librdmacm/preload.c b/librdmacm/preload.c +index d46beb1bb..b3175dd5d 100644 +--- a/librdmacm/preload.c ++++ b/librdmacm/preload.c +@@ -794,12 +794,21 @@ ssize_t recv(int socket, void *buf, size_t len, int flags) + } + + ssize_t recvfrom(int socket, void *buf, size_t len, int flags, ++#if HAVE_SOCKADDR_ARG_AS_UNION ++ __SOCKADDR_ARG src_addr, socklen_t *addrlen) ++#else + struct sockaddr *src_addr, socklen_t *addrlen) ++#endif + { + int fd; + return (fd_fork_get(socket, &fd) == fd_rsocket) ? ++#if HAVE_SOCKADDR_ARG_AS_UNION ++ rrecvfrom(fd, buf, len, flags, src_addr.__sockaddr__, addrlen) : ++ real.recvfrom(fd, buf, len, flags, src_addr.__sockaddr__, addrlen); ++#else + rrecvfrom(fd, buf, len, flags, src_addr, addrlen) : + real.recvfrom(fd, buf, len, flags, src_addr, addrlen); ++#endif + } + + ssize_t recvmsg(int socket, struct msghdr *msg, int flags) +-- +2.45.2 + + +From c13a26a463750f3bb3db5697069ee9e9bf5a5556 Mon Sep 17 00:00:00 2001 +From: "Z. Liu" <[email protected]> +Date: Wed, 5 Mar 2025 01:19:37 +0800 +Subject: [PATCH 2/4] libibverbs.map: ibv_cmd_query_device had been removed + +Signed-off-by: Z. Liu <[email protected]> +--- + libibverbs/libibverbs.map.in | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/libibverbs/libibverbs.map.in b/libibverbs/libibverbs.map.in +index 11268cefd..a473549ca 100644 +--- a/libibverbs/libibverbs.map.in ++++ b/libibverbs/libibverbs.map.in +@@ -222,7 +222,6 @@ IBVERBS_PRIVATE_@IBVERBS_PABI_VERSION@ { + ibv_cmd_post_send; + ibv_cmd_post_srq_recv; + ibv_cmd_query_context; +- ibv_cmd_query_device; + ibv_cmd_query_device_any; + ibv_cmd_query_mr; + ibv_cmd_query_port; +-- +2.45.2 + + +From f564d1938bc03eb3b5f1fe5d6fadf7be81d922a6 Mon Sep 17 00:00:00 2001 +From: "Z. Liu" <[email protected]> +Date: Wed, 5 Mar 2025 09:08:48 +0800 +Subject: [PATCH 3/4] libefa.map: efadv_wc_read_sgid is static inline + +Signed-off-by: Z. Liu <[email protected]> +--- + providers/efa/libefa.map | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/providers/efa/libefa.map b/providers/efa/libefa.map +index eff647d18..d27b58c16 100644 +--- a/providers/efa/libefa.map ++++ b/providers/efa/libefa.map +@@ -17,7 +17,6 @@ EFA_1.2 { + global: + efadv_cq_from_ibv_cq_ex; + efadv_create_cq; +- efadv_wc_read_sgid; + } EFA_1.1; + + EFA_1.3 { +-- +2.45.2 + + +From 25cf8775b956ef81034aa314c1470634ea9ab5d3 Mon Sep 17 00:00:00 2001 +From: "Z. Liu" <[email protected]> +Date: Fri, 7 Mar 2025 10:31:13 +0800 +Subject: [PATCH 4/4] cmake: add ${BUILD_INCLUDE} for __SOCKADDR_ARG test + +because the sparse check has sys/socket.h patched + +Signed-off-by: Z. Liu <[email protected]> +--- + CMakeLists.txt | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 26d658830..dce05c78b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -395,11 +395,14 @@ if (NOT HAVE_LONG_LONG_U64) + endif() + + # Check __SOCKADDR_ARG exist and is union ++set(SAFE_CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES}") ++set(CMAKE_REQUIRED_INCLUDES "${BUILD_INCLUDE}") + RDMA_Check_C_Compiles(HAVE_SOCKADDR_ARG_AS_UNION " + #define _GNU_SOURCE + #include <sys/socket.h> + int main(int argc,const char *argv[]) {struct sockaddr addr;__SOCKADDR_ARG sa; sa.__sockaddr__ = (struct sockaddr *)&addr; (void)addr; (void)sa; return 0;}" + ) ++set(CMAKE_REQUIRED_INCLUDES "${SAFE_CMAKE_REQUIRED_INCLUDES}") + + # glibc and kernel uapi headers can co-exist + CHECK_C_SOURCE_COMPILES(" +-- +2.45.2 + diff --git a/sys-cluster/rdma-core/rdma-core-53.1.ebuild b/sys-cluster/rdma-core/rdma-core-53.1.ebuild index 2763cb3b564b..ea5c73640f5d 100644 --- a/sys-cluster/rdma-core/rdma-core-53.1.ebuild +++ b/sys-cluster/rdma-core/rdma-core-53.1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2024 Gentoo Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -65,6 +65,7 @@ BDEPEND=" PATCHES=( "${FILESDIR}"/${PN}-39.0-RDMA_BuildType.patch + "${FILESDIR}"/${PN}-53.1-preload-fix-build-issue-with-clang-19.patch ) src_prepare() {
