From nobody Mon Jun 22 18:22:17 2026 X-Original-To: dev-commits-src-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 4gkc4G6bNtz6hmMR for ; Mon, 22 Jun 2026 18:22:22 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gkc4G5d3mz3m50 for ; Mon, 22 Jun 2026 18:22:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1782152542; 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=b6YJ7bmpFWa5XjPrLpLMlUSmKTBNPK7J47r0RTEWriY=; b=e8iPmUejoY0ODzjqGgylRYOM+yLrlpJj0nUZ5dbUN4UiBQqt/gfKcSg/teKEMwKNoZ5ZO+ VMzGR+nOBv1Yl7gYgFjYrZoDYnfYYWDma/j3ic6rl63uwzJzu81EgRMv100DpsAbG8ZdCx uXQ5lrFXJdkigj7h0xXfHIJTre1VaFNIdJEpiaf7VunrTucifUlluxUuQJPLHcHLgUPYVY bnOwlKyvMK+uch0POVCkwHAotdA5PDzcE98KC2fsQOnatvDWgfaJ4jVskp8rLJvqE2Ijwm uRZTzZyv64puv6shxwTEAQ7cX2OXn2vnF/0lscgriHVF6YeX7vFY5F/YiHWG8g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1782152542; a=rsa-sha256; cv=none; b=YIuYZkUnn+Iy1lYgdFkQKi+lW1JXDgaTnVr2aEB3OxORDAZjZ7PbvTMcrtbXxdGelBv4// ZTuu9May7DqqVDk8NhEWDL3FDwU8KaQlJ84cYjbJkp39SXyPDcPV/6HR5oeaj8SwTLrrdX f6J7lGpM9pZoa5C5xPmTnTtyx3xZV1eOHPf+PUo/kADx+h53yNwUIz/Bkj1++ZgA9jrFZ4 syVG/Rc0vfWmiU6Je7BhT/RAmbx7xPkp1aHtiqitXNfRzQmsCyvNpqe1q/GgNqCgDg/l3v OOhS56/k3F2Z8u2yuGozRt1xzT/MSEllaPUx0nHw8yIDRsAVWpEhWW2IeCPHjg== 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=1782152542; 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=b6YJ7bmpFWa5XjPrLpLMlUSmKTBNPK7J47r0RTEWriY=; b=JUtKjmVy5ggJ4CfYbxUiYYs0IZrBQNxGVrZ05xtxtdAJLDTUX9usfw2zeVMggpmh9s7eRp RZWoMtVPPnwwD497fjuOECnWOs/7N0g8ZN+50zpz7M1Dv5AUN2RLqFJxKi7/k/Kh4rZNgo 4twB1l2/kAmpGfxtBbfS/2tw5cJYJulKBbdiiBTnV+FCTCNnn25ojn6M7wOMspPdQYmyUG h4lOZg9A8SUBMzRNvRmeszgf3hFlePj3h443Q0pbBx978V5B0Ekm8Azvr4ApCzJ/RoYuQO 00TLPQqoDh/QSe6/Bj+3GT54lCKKyfPx7NMhmKf6BbzEFwsnvJ/8LCU+8YMHMA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gkc4G4bJTz107d for ; Mon, 22 Jun 2026 18:22:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 30cef by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 22 Jun 2026 18:22:17 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Daniel Levin From: Pouria Mousavizadeh Tehrani Subject: git: 45a0cb52d3d6 - main - rtld: Check for -1 as an-end-of-section marker List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pouria X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 45a0cb52d3d62f8caae420b93e4b8c76ae3bc766 Auto-Submitted: auto-generated Date: Mon, 22 Jun 2026 18:22:17 +0000 Message-Id: <6a397d59.30cef.5a9f32ae@gitrepo.freebsd.org> The branch main has been updated by pouria: URL: https://cgit.FreeBSD.org/src/commit/?id=45a0cb52d3d62f8caae420b93e4b8c76ae3bc766 commit 45a0cb52d3d62f8caae420b93e4b8c76ae3bc766 Author: Daniel Levin AuthorDate: 2026-06-08 14:42:03 +0000 Commit: Pouria Mousavizadeh Tehrani CommitDate: 2026-06-22 18:22:08 +0000 rtld: Check for -1 as an-end-of-section marker rtld calls functions in the .init_array section one at a time, until it finds a distinguished sentinel value. The C runtime does the same thing (in crtend.c). However, that checks for the sentinel -1 and not 1. If one is using a linker that unifies .ctors and .init_array, then rtld will miss the sentinel value. I believe the author of this code intended to write -1 instead of 1. Indeed, changing the code to also check for -1 prevents rtld from attempting to call a non-existent function. The same is true of .dtors and .fini_array. Signed-off-by: Daniel Levin Reviewed by: kib MFC after: 3 days Pull Request: https://github.com/freebsd/freebsd-src/pull/2270 --- libexec/rtld-elf/rtld.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c index a72726684f0f..2a05afe66902 100644 --- a/libexec/rtld-elf/rtld.c +++ b/libexec/rtld-elf/rtld.c @@ -3159,7 +3159,8 @@ objlist_call_fini(Objlist *list, Obj_Entry *root, RtldLockState *lockstate) for (index = elm->obj->fini_array_num - 1; index >= 0; index--) { if (fini_addr[index] != 0 && - fini_addr[index] != 1) { + fini_addr[index] != 1 && + fini_addr[index] != (Elf_Addr)-1) { dbg("calling fini function for %s at %p", elm->obj->path, (void *)fini_addr[index]); @@ -3265,7 +3266,8 @@ objlist_call_init(Objlist *list, RtldLockState *lockstate) for (index = 0; index < elm->obj->init_array_num; index++) { if (init_addr[index] != 0 && - init_addr[index] != 1) { + init_addr[index] != 1 && + init_addr[index] != (Elf_Addr)-1) { dbg("calling init function for %s at %p", elm->obj->path, (void *)init_addr[index]);