From nobody Mon Mar 18 03:40:50 2024 X-Original-To: dev-commits-src-branches@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 4TygcL4bk2z5FTsl; Mon, 18 Mar 2024 03:40:50 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4TygcL46nHz45Ks; Mon, 18 Mar 2024 03:40:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1710733250; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5mqIoIRTZecFlYqJXj1+urFQDpv8Nc7Z19jGe6SGENI=; b=ur+94ZHYVwMXolspEy8nhNAEKZFDq1dRojCGQPLB+GeneMRkLBypWRJ1EOTLdFGxE16pHf ayPWXrsrw9GtfUaC0mynjvVKaGMR6gZmOfzdYPyvZSELMwVJKds8SaFkNxsSXO2uEuMy9L MkgXYfShy8hyaEZDkyn+J4sQBDH7Sj1mOwxwjCv9XTPxwLzdvWDkL3L+HyfNT7vbpzpZmD jK3h76iDIO6lZUJiMSOu09nhJTeNpU/SVQVbvEOuBZOcMas1TEBx9rv7p41Ke9wFe+HJBF 644akPnFth5U0cfU0sssP6DSyIoaSx/PPvWr39VupvR9muSmUO/tCs9R6SyyqQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1710733250; a=rsa-sha256; cv=none; b=hPf76Yslpah9UAQwZKxYSDemILfLJfSaCQ0JUbWUHgtkkKLy8G8A1fS9/XT/ai8MLuOWXV lrZSOR1JBPtnsVxsxztVfANhjwUv+A6DgrMk4AqqQEHEK3dXVW+MVjwFgMbquba5gMdakw Pkv9n0beEiIayVjoT707o/Nx6pffcuZW2kDG2HBV2MWDju5WNqeDcymxGV2p7F9Y2nmy7K ftX68XmHaR1ULPdHUuykxyYdhp4+mC1Z5kTR5UmKBypxDZSPD4CszsyBvGrIQbvkMy2Yq7 rUsSDHIX35JPv6KT7UOuFnu1W15N/xDyP7/O2RpApkbuuECahaDl8i5Ch7kL0w== 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=1710733250; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=5mqIoIRTZecFlYqJXj1+urFQDpv8Nc7Z19jGe6SGENI=; b=Xfv+hZJwaExS92rZ6TeAFXmJ2O395BRrC2k+0xkHHF4/0S8RpbI4eJCkBgBYZdzf3qIEEG touIA4x4SwFT/5xfBPt9uMGmeqICJDk1zGWEbrHORXuLwtjjx2cOWdBvg27EldlXzQ0XIW vfj/K5ZDjWNmAnhXt1IyYa5WQQYyoL2Ub/1MM066OCtibtVKhpnSY0LKgaaTHMxVcscy6d jj2Q04TO5jSRnx5sPe118tkP4gqNlYNZhO/GIfqxuHCzHe8APotoAYDYEf2bEISrIwyt4q LezcpHABcaXomHRM+KiOiD348gZOCri/HT9KaaIEQrKMyyCz087gSnbP/R2ZXQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4TygcL3k8Nz163L; Mon, 18 Mar 2024 03:40:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 42I3eoCg057368; Mon, 18 Mar 2024 03:40:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 42I3eoU7057365; Mon, 18 Mar 2024 03:40:50 GMT (envelope-from git) Date: Mon, 18 Mar 2024 03:40:50 GMT Message-Id: <202403180340.42I3eoU7057365@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kyle Evans Subject: git: 7e9323311117 - stable/13 - rtld: add some dlopen tests List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 7e9323311117758e7b17386445afd9a7e98bf290 Auto-Submitted: auto-generated The branch stable/13 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=7e9323311117758e7b17386445afd9a7e98bf290 commit 7e9323311117758e7b17386445afd9a7e98bf290 Author: Kyle Evans AuthorDate: 2024-02-13 15:38:02 +0000 Commit: Kyle Evans CommitDate: 2024-03-18 03:34:05 +0000 rtld: add some dlopen tests dlopen_basic just tests that libthr.so can be dlopen()ed, which will just serve as a sanity check that "libthr.so" is a thing that can be dlopened in case we get a weird failure in dlopen_recursing. dlopen_recursing tests a regression reported after the libsys split, where some dlopen() may cause infinite recursion and a resulting crash. This case is inspired by bdrewery's description of what seemed to be causing his issue. The corresponding fix landed in commit 968a18975ad ("rtld: ignore load_filtees() calls if we already [...]") Reviewed by: kib (cherry picked from commit c5796f1572c82b88e8b6a2810c92f30e5ac3e118) --- libexec/rtld-elf/tests/Makefile | 2 ++ libexec/rtld-elf/tests/dlopen_test.c | 52 ++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/libexec/rtld-elf/tests/Makefile b/libexec/rtld-elf/tests/Makefile index 06e143a441a1..e380e9850fc1 100644 --- a/libexec/rtld-elf/tests/Makefile +++ b/libexec/rtld-elf/tests/Makefile @@ -13,6 +13,8 @@ ATF_TESTS_C+= ld_preload_fds SRCS.$t= $t.c common.c .endfor +ATF_TESTS_C+= dlopen_test + WARNS?= 3 .include diff --git a/libexec/rtld-elf/tests/dlopen_test.c b/libexec/rtld-elf/tests/dlopen_test.c new file mode 100644 index 000000000000..ab1e8da1cb41 --- /dev/null +++ b/libexec/rtld-elf/tests/dlopen_test.c @@ -0,0 +1,52 @@ +/*- + * + * Copyright (C) 2024 Kyle Evans + * + * SPDX-License-Identifier: BSD-2-Clause + * + */ + +#include + +#include + +ATF_TC_WITHOUT_HEAD(dlopen_basic); +ATF_TC_BODY(dlopen_basic, tc) +{ + void *hdl, *sym; + + hdl = dlopen("libthr.so", RTLD_NOW); + ATF_REQUIRE(hdl != NULL); + + sym = dlsym(hdl, "pthread_create"); + ATF_REQUIRE(sym != NULL); + + dlclose(hdl); + + sym = dlsym(hdl, "pthread_create"); + ATF_REQUIRE(sym == NULL); +} + +ATF_TC_WITHOUT_HEAD(dlopen_recursing); +ATF_TC_BODY(dlopen_recursing, tc) +{ + void *hdl; + + /* + * If this doesn't crash, we're OK; a regression at one point caused + * some infinite recursion here. + */ + hdl = dlopen("libthr.so", RTLD_NOW | RTLD_GLOBAL); + ATF_REQUIRE(hdl != NULL); + + dlclose(hdl); +} + +ATF_TP_ADD_TCS(tp) +{ + + ATF_TP_ADD_TC(tp, dlopen_basic); + ATF_TP_ADD_TC(tp, dlopen_recursing); + + return atf_no_error(); +}