From nobody Tue Sep 9 03:20:45 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1749732934; cv=none; d=zohomail.com; s=zohoarc; b=VGA0rtJxELE8WyaFEyyQ01xKwMRcH6U8VhT2zXx4ADtvCHGu2bNOMDS651fgurDsGFw3GSZE7m2LwGH+DiD1/BIBq3ORmcRKal47CxOkjpbzmsuF+WuWMYW2+i3xuY8gRMtiXyffdqehEjc/Kh5lkxvovwYj7iidlR+AK+eq9yE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1749732934; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=k9KoeGTJtAVB7Nlr39HUPylq0HwwQj+Xil6PibgTQk0=; b=U+38q6BkaWfCJ8HoIQ/v5nvLIsF7RIyTbgTSS1n4yDsa7NCVjTkIY4RFy/g5LEjnISkEJJgoY5syfMHsOGQj99SA5QQCx9asFt4mMEzKN8JCrsKlBxM+CLQhpkbvxDQkRUo6yAvO1JpgK+FDB3bWNDP1gVVrbZxGF0lRM3o6bUg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 174973293457398.04291409737982; Thu, 12 Jun 2025 05:55:34 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 860B3D5D; Thu, 12 Jun 2025 08:55:33 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 9B66C14D2; Thu, 12 Jun 2025 08:53:36 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id B3733E32; Thu, 12 Jun 2025 08:53:31 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id C84A3110C for ; Thu, 12 Jun 2025 08:53:06 -0400 (EDT) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-516-G-2kLnVdM2u523_QU1cGRQ-1; Thu, 12 Jun 2025 08:48:57 -0400 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id DB93519560A2 for ; Thu, 12 Jun 2025 12:48:56 +0000 (UTC) Received: from localhost.localdomain (unknown [10.43.3.236]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 32C89195609D for ; Thu, 12 Jun 2025 12:48:55 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1749732786; 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: in-reply-to:in-reply-to:references:references; bh=ZahWUR+aNRTpMDbxqRrMvIyeuKexmsCmrkKjIojcF+c=; b=gCjs8woTOybrV3DTNYdXwjJup0B3rkUfQKZXyHPQG3kvFkJtUJPFBcPTDjZN+a0LesKT9h +sXlgmNPd42Ee3ooqepjCN9E7ORiB3prCE2Zu4tHLv+pXMLXy44MCK/aNpLY8a85QnDm78 iC1wIO/uR/PLQzIZJWBh9XQkje1YE9Q= X-MC-Unique: G-2kLnVdM2u523_QU1cGRQ-1 X-Mimecast-MFC-AGG-ID: G-2kLnVdM2u523_QU1cGRQ_1749732537 To: devel@lists.libvirt.org Subject: [PATCH 05/15] tests: Fix mocking of open() Date: Thu, 12 Jun 2025 14:48:37 +0200 Message-ID: <47a72bf28c2f92ec93d36ef7f32905ad88380197.1749732372.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: RGqWkGjadYn0ZnkizpjCTi5UfMhn78V0A8cc1J15KFg_1749732537 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: BTFEENLIPAUH2DFE2GZMWNAT6LOWADH6 X-Message-ID-Hash: BTFEENLIPAUH2DFE2GZMWNAT6LOWADH6 X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1749732935084116600 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik In some cases (well, majority), open() is either rewritten to open64(), either by plain '#define open open64') or at assembly level (using __REDIRECT macro). See for more info. This didn't really matter to us, because we do not chain load two mocks that would need to reimplement open() at the same time. But this is soon going to change. The problem is, that VIR_MOCK_REAL_INIT(open) glances over aforementioned rewrite and initializes real_open pointer to open() from the standard C library. But it needs to point to open() (well, open64()) from the next mock on the list. Therefore, init real_open to open64(). But of course, this is all glibc specific and for example musl does the oposite (#define open64 open). Signed-off-by: Michal Privoznik --- tests/nssmock.c | 4 ++++ tests/qemusecuritymock.c | 4 ++++ tests/vircgroupmock.c | 4 ++++ tests/virfilewrapper.c | 4 ++++ tests/virpcimock.c | 4 ++++ tests/virtestmock.c | 4 ++++ tests/virusbmock.c | 4 ++++ 7 files changed, 28 insertions(+) diff --git a/tests/nssmock.c b/tests/nssmock.c index 3493119f3b..d47fe7b10f 100644 --- a/tests/nssmock.c +++ b/tests/nssmock.c @@ -46,7 +46,11 @@ init_syms(void) if (real_open) return; =20 +# if defined(__GLIBC__) && defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS= =3D=3D 64 + VIR_MOCK_REAL_INIT_ALIASED(open, "open64"); +# else VIR_MOCK_REAL_INIT(open); +# endif # if WITH___OPEN_2 VIR_MOCK_REAL_INIT(__open_2); # endif diff --git a/tests/qemusecuritymock.c b/tests/qemusecuritymock.c index 2dfd6c33a0..d5c711b5d7 100644 --- a/tests/qemusecuritymock.c +++ b/tests/qemusecuritymock.c @@ -115,7 +115,11 @@ init_syms(void) return; =20 VIR_MOCK_REAL_INIT(chown); +#if defined(__GLIBC__) && defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS = =3D=3D 64 + VIR_MOCK_REAL_INIT_ALIASED(open, "open64"); +#else VIR_MOCK_REAL_INIT(open); +#endif #if WITH___OPEN_2 VIR_MOCK_REAL_INIT(__open_2); #endif diff --git a/tests/vircgroupmock.c b/tests/vircgroupmock.c index d922f30f34..a5c18bd7b0 100644 --- a/tests/vircgroupmock.c +++ b/tests/vircgroupmock.c @@ -304,7 +304,11 @@ static void init_syms(void) VIR_MOCK_REAL_INIT(fopen); VIR_MOCK_REAL_INIT(access); VIR_MOCK_REAL_INIT(mkdir); +# if defined(__GLIBC__) && defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS= =3D=3D 64 + VIR_MOCK_REAL_INIT_ALIASED(open, "open64"); +# else VIR_MOCK_REAL_INIT(open); +# endif # if WITH___OPEN_2 VIR_MOCK_REAL_INIT(__open_2); # endif diff --git a/tests/virfilewrapper.c b/tests/virfilewrapper.c index 908f7142c2..3bccca9c11 100644 --- a/tests/virfilewrapper.c +++ b/tests/virfilewrapper.c @@ -56,7 +56,11 @@ static void init_syms(void) VIR_MOCK_REAL_INIT(fopen); VIR_MOCK_REAL_INIT(access); VIR_MOCK_REAL_INIT(mkdir); +# if defined(__GLIBC__) && defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS= =3D=3D 64 + VIR_MOCK_REAL_INIT_ALIASED(open, "open64"); +# else VIR_MOCK_REAL_INIT(open); +# endif # if WITH___OPEN_2 VIR_MOCK_REAL_INIT(__open_2); # endif diff --git a/tests/virpcimock.c b/tests/virpcimock.c index 4eff6d70e3..ca345f37a3 100644 --- a/tests/virpcimock.c +++ b/tests/virpcimock.c @@ -945,7 +945,11 @@ init_syms(void) return; =20 VIR_MOCK_REAL_INIT(access); +# if defined(__GLIBC__) && defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS= =3D=3D 64 + VIR_MOCK_REAL_INIT_ALIASED(open, "open64"); +# else VIR_MOCK_REAL_INIT(open); +# endif # if WITH___OPEN_2 VIR_MOCK_REAL_INIT(__open_2); # endif /* WITH___OPEN_2 */ diff --git a/tests/virtestmock.c b/tests/virtestmock.c index 5b25b380e5..a5c3b29f39 100644 --- a/tests/virtestmock.c +++ b/tests/virtestmock.c @@ -46,7 +46,11 @@ static void init_syms(void) if (real_open) return; =20 +#if defined(__GLIBC__) && defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS = =3D=3D 64 + VIR_MOCK_REAL_INIT_ALIASED(open, "open64"); +#else VIR_MOCK_REAL_INIT(open); +#endif #if WITH___OPEN_2 VIR_MOCK_REAL_INIT(__open_2); #endif diff --git a/tests/virusbmock.c b/tests/virusbmock.c index e148296b7c..c23bed4528 100644 --- a/tests/virusbmock.c +++ b/tests/virusbmock.c @@ -40,7 +40,11 @@ static void init_syms(void) if (real_open) return; =20 +#if defined(__GLIBC__) && defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS = =3D=3D 64 + VIR_MOCK_REAL_INIT_ALIASED(open, "open64"); +#else VIR_MOCK_REAL_INIT(open); +#endif #if WITH___OPEN_2 VIR_MOCK_REAL_INIT(__open_2); #endif --=20 2.49.0