From nobody Wed Apr 8 22:42:40 2026 X-Original-To: dev-commits-ports-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4frdPF0S1Wz6Yv02 for ; Wed, 08 Apr 2026 22:42:41 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4frdPD5YtTz3p8c for ; Wed, 08 Apr 2026 22:42:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775688160; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=M8PYS/cKSgu/AXK2EYLfRiZF5NrhkmES4Jj2fI3+GRE=; b=DBfRAJq78t3UfUZwmoSQuo5TRZmxJU3iXqYWmW9c2hSgAUtRGouEHtBdxEC046NH354QV3 iSxBO/GQ4FFrF4cVxzD1QDMh1Xj6USsNT7ua4AWrxkaVcdPrFSxdRVGUJikWxl+AvNLpEl qMABP3hCPTnyTavTmwVnfkcx6t35urcpztji/zgh7PfuqArsYifbr6yc7LPOeetdy3bG5l yCjH440rQagI/PK0Kf7OQgXrTxA3sqwtjWpJ/pRbHydsLGCQQ7ZExVd884Il5YQB9NXoYC KIDhSCTch5536oCkSCraBLuY0XyTVgqGJXB9MvW2Vnzocj+K/WbzXZY9mknJXg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775688160; a=rsa-sha256; cv=none; b=Rd/cieJlKqIVn+/HzBvCh0v845hh1lopOGzPW7pRZslWI0SnyBnqMk4m9RN5HSOt3tKJ/k 9D1jIwi6T+u3jXZhljxIS+n/GFBBZTejeFt09fO/rNApFzYAYJDCclVg8r2ex46xX8OdDB 14PmRUxzXOoO+GqMIpZUPYJLERGnEfV0It3/ZoqUy/5quCt5/e7q4OXWrA+HjVgftZcriF NL359eNF7LXFj1FtmzIFQCzyKn8yWbCWJiJdoXs0DXwN/6/ho93KEZ8a321NGCLkdfE6gX EMWRWKpIrbLMgxjd4m5NYvGyRSp9lL/cmyhkHkFD4EaGzj1/JbHfZV+VtjYTaw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775688160; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=M8PYS/cKSgu/AXK2EYLfRiZF5NrhkmES4Jj2fI3+GRE=; b=rl18WKM+eGKR/VvW+PsAz93/CLsAKukyKXSjHbliFAWHeM0xtSSOn0aE//XEV6RDcgEc6P ajeE5cVzCGn++iHF/2fkGNIJvM3uTN8l6QdkYcxmABvWfOV5zYYSjlPOGzFnbu+uWCYRIN rLAcFsZHebunU/ZOEj4quR07g1DULXYDzFZj71Xnwjz/ajhwj/1P1zQcUpqzT/tPgmgI1/ S2Hp/bZc0+myw2xwtQvgakDr7B29rqYLEyKIDT6hOPJfn3LxfZ+AlhsXd1VoZaJtv8jCwD 56xfjWpm+NCnfPpIMVbod6hGsi2ir+4+gBSgbQWIehH8/j5XQUORirfYeMTaig== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4frdPD4xYNzn28 for ; Wed, 08 Apr 2026 22:42:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 22bd5 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 08 Apr 2026 22:42:40 +0000 To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org Cc: Generic Rikka From: Vladimir Druzenko Subject: git: 94fc6d9ffebb - main - net/ucx: Fix FreeBSD UCM relocation handling List-Id: Commits to the main branch of the FreeBSD ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-ports-main@freebsd.org Sender: owner-dev-commits-ports-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: vvd X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 94fc6d9ffebbad5014a7f48ba925b9a39df8478f Auto-Submitted: auto-generated Date: Wed, 08 Apr 2026 22:42:40 +0000 Message-Id: <69d6d9e0.22bd5.3a1f0820@gitrepo.freebsd.org> The branch main has been updated by vvd: URL: https://cgit.FreeBSD.org/ports/commit/?id=94fc6d9ffebbad5014a7f48ba925b9a39df8478f commit 94fc6d9ffebbad5014a7f48ba925b9a39df8478f Author: Generic Rikka AuthorDate: 2026-04-08 22:25:29 +0000 Commit: Vladimir Druzenko CommitDate: 2026-04-08 22:42:19 +0000 net/ucx: Fix FreeBSD UCM relocation handling On FreeBSD, dynamic-section pointers observed through dl_iterate_phdr() for shared objects need to be rebased by dlpi_addr before dereference. Also fix the PT_LOAD end range calculation to include the object base address when tracking the library address span. This fixes runtime failures in UCM relocation patching on FreeBSD. PR: 293867 Sponsored by: UNIS Labs MFH: 2026Q2 --- net/ucx/files/patch-src_ucm_util_reloc.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/net/ucx/files/patch-src_ucm_util_reloc.c b/net/ucx/files/patch-src_ucm_util_reloc.c index 436cc4bd600e..30991731f7b4 100644 --- a/net/ucx/files/patch-src_ucm_util_reloc.c +++ b/net/ucx/files/patch-src_ucm_util_reloc.c @@ -1,6 +1,34 @@ --- src/ucm/util/reloc.c.orig 2026-02-04 09:52:46 UTC +++ src/ucm/util/reloc.c -@@ -673,10 +673,13 @@ static int ucm_dlclose(void *handle) +@@ -97,8 +97,15 @@ ucm_reloc_get_pointer(ElfW(Addr) base, const ElfW(Phdr + { + uintptr_t entry = ucm_reloc_get_entry(base, dphdr, tag); + +-#if defined(__riscv) +- /* On RISC-V these are not pointers but offsets */ ++#if defined(__FreeBSD__) || defined(__riscv) ++ /* ++ * On FreeBSD, the dynamic-section pointer entries we consume here ++ * (DT_SYMTAB, DT_STRTAB, DT_JMPREL, DT_RELA, ...) are observed through ++ * dl_iterate_phdr() as object-relative virtual addresses for shared ++ * objects, so they must be rebased by dlpi_addr before dereference. ++ * ++ * RISC-V already required the same treatment. ++ */ + return UCS_PTR_BYTE_OFFSET(base, entry); + #else + return (void *)entry; +@@ -353,7 +360,8 @@ static ucs_status_t ucm_reloc_dl_info_get(const struct + if (phdr->p_type == PT_LOAD) { + /* Found loadable section - update address range */ + dl_info->start = ucs_min(dl_info->start, dlpi_addr + phdr->p_vaddr); +- dl_info->end = ucs_max(dl_info->end, phdr->p_vaddr + phdr->p_memsz); ++ dl_info->end = ucs_max(dl_info->end, dlpi_addr + phdr->p_vaddr + ++ phdr->p_memsz); + found_pt_load = 1; + } else if (phdr->p_type == PT_DYNAMIC) { + /* Found dynamic section */ +@@ -673,10 +681,13 @@ static int ucm_dlclose(void *handle) * cached information anyway, and it may be re-added on the next call to * ucm_reloc_apply_patch(). */