From patchwork Fri Aug 18 18:47:32 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 9909803 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 431B460385 for ; Fri, 18 Aug 2017 18:52:34 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3600B28D44 for ; Fri, 18 Aug 2017 18:52:34 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2AF7A28D47; Fri, 18 Aug 2017 18:52:34 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 808D528D44 for ; Fri, 18 Aug 2017 18:52:31 +0000 (UTC) Received: from localhost ([::1]:49982 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dimNi-0004f4-Sk for patchwork-qemu-devel@patchwork.kernel.org; Fri, 18 Aug 2017 14:52:30 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60707) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dimMW-0004dQ-9Z for qemu-devel@nongnu.org; Fri, 18 Aug 2017 14:51:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dimMT-0002hd-5i for qemu-devel@nongnu.org; Fri, 18 Aug 2017 14:51:16 -0400 Received: from mail-by2nam03on0065.outbound.protection.outlook.com ([104.47.42.65]:38336 helo=NAM03-BY2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dimMS-0002gw-Rk for qemu-devel@nongnu.org; Fri, 18 Aug 2017 14:51:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=6DyuO1DVQyUvXzhY+beJnA5tk4C5aacg9cSANKC/40w=; b=1ypf9uE3zWl6xAuCPfXSnWnnFzwwlJKA/m7y3vkn6jm0EcfoUZCeNggFyNiprsbqvvGWUHXEwynR1Nm8znMLEGIFXv6C0AL9krD7w4RnvOuLQi9KpSXDPi+QMEMG3OaquXi32XrTX0uVGk8hQgismzy3Uhr/Lt03V8D7WKISJAs= Received: from MWHPR02CA0001.namprd02.prod.outlook.com (10.168.209.139) by BN6PR02MB2466.namprd02.prod.outlook.com (10.173.141.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1341.21; Fri, 18 Aug 2017 18:51:10 +0000 Received: from CY1NAM02FT017.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e45::200) by MWHPR02CA0001.outlook.office365.com (2603:10b6:300:4b::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1362.18 via Frontend Transport; Fri, 18 Aug 2017 18:51:09 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.83) smtp.mailfrom=xilinx.com; redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=bestguesspass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.83 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.83; helo=xsj-pvapsmtpgw01; Received: from xsj-pvapsmtpgw01 (149.199.60.83) by CY1NAM02FT017.mail.protection.outlook.com (10.152.75.181) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1341.15 via Frontend Transport; Fri, 18 Aug 2017 18:51:08 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66] helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw01 with esmtp (Exim 4.63) (envelope-from ) id 1dimML-0006IO-6X; Fri, 18 Aug 2017 11:51:05 -0700 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1dimML-0008Af-34; Fri, 18 Aug 2017 11:51:05 -0700 Received: from xsj-pvapsmtp01 (mailhost.xilinx.com [149.199.38.66]) by xsj-smtp-dlp1.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id v7IIowjB015315; Fri, 18 Aug 2017 11:50:58 -0700 Received: from [172.19.2.220] (helo=localhost.localdomain) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1dimME-00088u-7q; Fri, 18 Aug 2017 11:50:58 -0700 From: Alistair Francis To: , Date: Fri, 18 Aug 2017 11:47:32 -0700 Message-ID: <54e6458745493d10901964624479a7d9a872f481.1503077821.git.alistair.francis@xilinx.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: References: X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.1.0.1062-23266.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.83; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(39860400002)(2980300002)(438002)(189002)(199003)(63266004)(106466001)(81166006)(478600001)(36756003)(81156014)(8676002)(2950100002)(54906002)(48376002)(39060400002)(77096006)(33646002)(6666003)(50466002)(5003940100001)(50986999)(5660300001)(76176999)(50226002)(47776003)(118296001)(189998001)(8936002)(356003)(2906002)(305945005)(4326008)(626005)(36386004)(9786002)(107986001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR02MB2466; H:xsj-pvapsmtpgw01; FPR:; SPF:Pass; PTR:unknown-60-83.xilinx.com; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; CY1NAM02FT017; 1:3Dcze/MS4plI6XgFiBPl6+FLBTnwpBuzuvxHUg2lhgMoyWGiFPJl+alqV5bPYvvyBKTQ9rpU7OPcBwaCpwvAO+cPMEN82+tUePMud4r3zATdnpo1A3hwl/jm9/XRgxju MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f1c8b6ba-7e39-4992-3ae7-08d4e66a171c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(8251501002)(300000503095)(300135400095)(2017052603031)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:BN6PR02MB2466; X-Microsoft-Exchange-Diagnostics: 1; BN6PR02MB2466; 3:/l+DChgJi3s74l4munBoZhyi15qRXTjewRj+lKyZ9eXVW6M7Jj9rdqloz7mw8CjDknU2OzTMsSrZ/BUlT4LmNN8u3KbELuJV4C/gyusetdCjPoLyVhHOnE7A0j9VWNGNggwHVrGPmFfIhgfrWsVay3KB+3yLNekdAtsWk6Q1fK2hgAhWT4zyH06/ajldq4+fued/iYH6kH6cnxMtLkNE4Lbs6SeQCGoEMvYjYg0e92qwJJ0quf++tXSeg3LNlVxWYyyzXtZVf975BXJU6Z4hyTTDySEJm1+TTOSxCCz1Bjk3OeXiwWrcj8W5qQQuHUqs5qXYmZeIgWc0xmq/jzes1EXSLIJWdrzKEQPTPHmUzmM=; 25:Jv0I+1LcvXMcGxFjres28cX11YQy2tUmtZoRnPTHzU1WDyg41O35i0rHi8rXHxjMsFLYxMHO5IBSGpciRhb/L19tdRK9PkqH06PF8m8y2YOxha5ctm59g3WNkY8Xa/BuaT9jYSO3OBIVLcLXEmUw04AZxBAKDKtrIfpKibui01zAdhO1604ZlXuwPvf8WQemHbYXTameHtt6L2dpmyksVvzsb7ohB9aT77FeJx/6Fcv5GXLTViYnVlZ6n9NP1OsUmDsVQ3YqKQ28jDaMR8IO9rptLxvbMLdPeeLiqA7OOkC4ml0wUzX9AmVcged/jpeBDUCy4yzQJ2IfUuo/OGkO8Q== X-MS-TrafficTypeDiagnostic: BN6PR02MB2466: X-Microsoft-Exchange-Diagnostics: 1; BN6PR02MB2466; 31:tAd9bHMSALfDY/1nk9rzai2rhc+IdbgicLKYg7kNa6ZMFRPULWYDARhhjdugzpbID3lrx/mJPHZ6HoFo24NxNXoX+kOryqDtu8EIpUYh1WxaE9D6xLpFDQHeAur8c6oCXr1l7KDG3MglmzPJbEXp36QmMw8pKbqorc0S2JF6YR1SnlSuE58ts4poQzsiCutl91bklbN+e0SGi4cbP3gK+CTW4yXtrKartVnzhGPu7qU=; 20:vzslagdo4xVfKpK1NO/HkZpxaRniGDCoH4pXJVXCjBfQRW+a0/qS15mO6tJvJ4QHeetlAijPAKapMi+qJAFOrQcY36FjhdUYEZ0Zkds6FNuHZ9Nqql/HCQJ+38qjfFIvwIIaIBpN8pLP1qP0WcFpLJuyVRKmyRa53qN06ipxuTqUSyOc7aKU6QEqa0/+E+SNwA0Mm2DeP9tpOoYBS6yMn2nSNqE48WrnyxSAxxMGEhf6XZdFB1GIaTEOKozwymZlpWSubV7Rj7cBL0M6wvwAT7X/a51oVqmsxRINHDQ6CkuOb6mLJR1XGKFmRekKkU6D1N5pU07+DDr3P7clzV/gObE4BWJmirVVSdycCs9kcXxdifI1d8YeMjKtLZ2NQldA8ckg9br/OusE+cPciFjM79cqmtenOzJ9YuiucE68ZshqoGm2/sjb3z3mBua71aiU7AZ2mOh8G4tDxlOU1Yvee0CMz7oxkdqny1FibJ/Aeb9g2Uv6CxYXPIqDBn7OOUAM X-Exchange-Antispam-Report-Test: UriScan:(192813158149592); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(13018025)(8121501046)(13016025)(5005006)(100000703101)(100105400095)(93006095)(93004095)(10201501046)(3002001)(6055026)(6041248)(20161123564025)(20161123558100)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BN6PR02MB2466; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BN6PR02MB2466; X-Microsoft-Exchange-Diagnostics: 1; BN6PR02MB2466; 4:dFMHi5g5wrjgg0B7TiwjCOpzQCPIV0aE2bLJGxYDejU/xg1PGV3CEOt+FQofDDD4bcWlw5jhISqBct9XxRmqoL5osEz3xCaZYYYmvu9ltfjZ53/60XjS6M163F2mfIJsSZkelNBEzfcdL1i49fI6d4TRph8MqWMEI2eNvt01q8gREoBJlTCGN2vsqXmf4mG04qYZRGxCg9RMJ9wKouVweMATsk8vXeetk6Pe1rOZ1kogENeyRQUaFyn8gl0MLzeb+IvnMldDkODap5t181bUPdVPCuMu3fi3HcUAat1xliI= X-Forefront-PRVS: 040359335D X-Microsoft-Exchange-Diagnostics: 1; BN6PR02MB2466; 23:h3sficg//5NrL4Gz3NvB7+xO1xnROqS7DIZ4p4Xho9Pvjorqw3pGFLNJNfhJKohwYFvESr7zGGGOcDATVSdq0rqf6zloPjDqzFU5/dR9VRP/HzE9oqykwi/u8BqNFofwnCb4ux0DmjMkyLNuqvRW1AhQYEVWuj40VbA1BRUNTD+rR1zMJpOl6PVS8HqJNf1c2ONeCrOUmoW+KtXEiE9po8SBL/oTAx9bNkEHDOrpHWhqZrVJe4xG3nfeKMFyvsty2Rf9lWs7iqKXyLxDGUcx1f4uwrV7Qs/EJ2hyhUpW2hxhaTapDJB/FshBCyY385KzC6QwOJIJY3SBMJy+jYovLUdZOyvCmdUtSmRJj7ODRCPdrDJNlwegsqwLKrLjICMjWGkg5NAHMs7jDury0SmeoXGDuCHleUinYLT8Y9P7P0/Xub1cWqjM/SOaMtvfxlNR1SfgfoPogopTXUouewskwgDpa8eIkLz9g5oihyK1z4lZHC8Dhk2b0DFvwNiCG/jjbqJvSdKonChLeFDK/u7fjccRsmt38uZ2OieDr1QrAmQt2QLwOXf+lkeW27K55pEpf5xBw0xks6tc0MGdCFYPl789u+KsTbKuXVseMy5glyeUCz1vF9e+GzALFVykUlf1SAPfbRf6M+I0KZkRQsLCsAbGQqpKKG0HEw/FhGHo954ertXylIGZysB+ES3vssedLzYrYze5pEnWfdJl5G7lnLVi1YTt2+daLgxqf+R/rVMOfoY2EivikIuGxgxBSTVCS949adZzvZHs3RfkqlXJYFzm7y3G+YNjqq/iTXrWgjJi80ZBm+gZQBORePNf0em6V1i2OOfNWNZWUAc1aXTSrShSBoAHZqhbODEu4ZuIUD0G5oCv2B0x0qS8qyirZAQquvGhmpV7Uu5KoVUSjtygeIgPDOYC6y5PEYEJXC9cbiom7QtGTGJ4I5B6fqkkmwDO X-Microsoft-Exchange-Diagnostics: 1; BN6PR02MB2466; 6:FmNHjytWoZVlq/HWoc7twpSWRodY93I/KZxDGRwDQoBZfdMwp6S/7hWHqeo2m/LTvoZnw6T+RZAT4ACF3X300G36x/R+REbGdBfELyFxdx5GtmKKjNb0YYmZMcxcAM96f6g4lchm0BqF8kkQWYXRWZ3jQGmZLiVm1JEq92wFziJIfh+vzu6kK3Xer55BmXTupHTbeCql6dyG4Gx81Kpao0Gb1Gfm4L56ILlDnZMUopFlFwVcbpjnBZv8gnnGjb9cY/uJw4ML03e5Dg4uzqd2tZaQhdyckR2EZpXA+cQvkI6nwWrxo4QVI4KW5V3ISvtI9hESXet2eWIxXYWd9g2Bgw==; 5:uoL1p71/B8kyhIlV/1zJEp9ZW7SPW7VbiUNyT4pwKSMOqF3z+Rf4ap2oAjh1ibPsfuFSKnLnsIPPESt6Km0NTmBBYTdYpkmRox0ilAnahWiuXrRqX5AjYm8uJaxa04tMMQUNxkXy0A/nyCXrdrmEFw==; 24:Fk3Lf/MJCdtT3t9kTQWMPjtdym333N2cd2PADDz6/11EYW7QuCUY0M2HSq19eBRGPXe45ZSpGMv6lunWjIWn+KX9s+auKZoVS+hrL3x1x5s=; 7:mPW6k0n4F6bMxxDTBvFAncqQJWLrg+nGpCrA2KMbqHUwAlhcom1J3x54W3URqsc3Olzo1PP4ZMWNBi3cM8DvihSTxLyi0LuEtVgnMO6rPm2NjxdFJ/nthhsTDM1dckdSi6znx9Fy//+BUcnPxZAFFgVnh7Lq1tWk6TjrRgvx/my63Le4ALI9L55o3ox5tpM8DjrvMOTe/ghihcxuLE6W8PSPC3aANCve0RnB3hEY1iQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Aug 2017 18:51:08.3480 (UTC) X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.60.83]; Helo=[xsj-pvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR02MB2466 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.42.65 Subject: [Qemu-devel] [PATCH v1 1/2] Makefile: Remove libqemustub.a X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, pbonzini@redhat.com, alistair.francis@xilinx.com Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Using two libraries (libqemuutil.a and libqemustub.a) would sometimes result in circular dependencies. To avoid these issues let's just combine both into a single library that functions as both. Signed-off-by: Alistair Francis Reviewed-by: Philippe Mathieu-Daudé --- Makefile | 7 +++---- Makefile.target | 2 +- docs/devel/build-system.txt | 14 +++++--------- tests/Makefile.include | 6 +++--- 4 files changed, 12 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index 81447b1f08..f111e93c63 100644 --- a/Makefile +++ b/Makefile @@ -344,7 +344,7 @@ subdir-dtc:dtc/libfdt dtc/tests dtc/%: mkdir -p $@ -$(SUBDIR_RULES): libqemuutil.a libqemustub.a $(common-obj-y) $(chardev-obj-y) \ +$(SUBDIR_RULES): libqemuutil.a $(common-obj-y) $(chardev-obj-y) \ $(qom-obj-y) $(crypto-aes-obj-$(CONFIG_USER_ONLY)) ROMSUBDIR_RULES=$(patsubst %,romsubdir-%, $(ROMS)) @@ -364,12 +364,11 @@ Makefile: $(version-obj-y) ###################################################################### # Build libraries -libqemustub.a: $(stub-obj-y) -libqemuutil.a: $(util-obj-y) $(trace-obj-y) +libqemuutil.a: $(util-obj-y) $(trace-obj-y) $(stub-obj-y) ###################################################################### -COMMON_LDADDS = libqemuutil.a libqemustub.a +COMMON_LDADDS = libqemuutil.a qemu-img.o: qemu-img-cmds.h diff --git a/Makefile.target b/Makefile.target index 7f42c45db8..0a80caf79c 100644 --- a/Makefile.target +++ b/Makefile.target @@ -193,7 +193,7 @@ all-obj-$(CONFIG_SOFTMMU) += $(io-obj-y) $(QEMU_PROG_BUILD): config-devices.mak -COMMON_LDADDS = ../libqemuutil.a ../libqemustub.a +COMMON_LDADDS = ../libqemuutil.a # build either PROG or PROGW $(QEMU_PROG_BUILD): $(all-obj-y) $(COMMON_LDADDS) diff --git a/docs/devel/build-system.txt b/docs/devel/build-system.txt index 2af1e668c5..5f32e53248 100644 --- a/docs/devel/build-system.txt +++ b/docs/devel/build-system.txt @@ -232,15 +232,11 @@ The utility code that is used by all binaries is built into a static archive called libqemuutil.a, which is then linked to all the binaries. In order to provide hooks that are only needed by some of the binaries, code in libqemuutil.a may depend on other functions that are -not fully implemented by all QEMU binaries. To deal with this there is a -second library called libqemustub.a which provides dummy stubs for all -these functions. These will get lazy linked into the binary if the real -implementation is not present. In this way, the libqemustub.a static -library can be thought of as a portable implementation of the weak -symbols concept. All binaries should link to both libqemuutil.a and -libqemustub.a. e.g. - - qemu-img$(EXESUF): qemu-img.o ..snip.. libqemuutil.a libqemustub.a +not fully implemented by all QEMU binaries. To deal with this there are +dummy stubs for all these functions in libqemuutil.a. +All binaries should link to both libqemuutil.a and libqemustub.a. e.g. + + qemu-img$(EXESUF): qemu-img.o ..snip.. libqemuutil.a Windows platform portability diff --git a/tests/Makefile.include b/tests/Makefile.include index 37c1bed683..80527a8763 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -553,7 +553,7 @@ QEMU_CFLAGS += -I$(SRC_PATH)/tests # Deps that are common to various different sets of tests below -test-util-obj-y = libqemuutil.a libqemustub.a +test-util-obj-y = libqemuutil.a test-qom-obj-y = $(qom-obj-y) $(test-util-obj-y) test-qapi-obj-y = tests/test-qapi-visit.o tests/test-qapi-types.o \ tests/test-qapi-event.o tests/test-qmp-introspect.o \ @@ -608,8 +608,8 @@ tests/test-vmstate$(EXESUF): tests/test-vmstate.o \ $(test-io-obj-y) tests/test-timed-average$(EXESUF): tests/test-timed-average.o $(test-util-obj-y) tests/test-base64$(EXESUF): tests/test-base64.o \ - libqemuutil.a libqemustub.a -tests/ptimer-test$(EXESUF): tests/ptimer-test.o tests/ptimer-test-stubs.o hw/core/ptimer.o libqemustub.a + libqemuutil.a +tests/ptimer-test$(EXESUF): tests/ptimer-test.o tests/ptimer-test-stubs.o hw/core/ptimer.o $(test-util-obj-y) tests/test-logging$(EXESUF): tests/test-logging.o $(test-util-obj-y)