From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web11.28284.1679769950911591616 for ; Sat, 25 Mar 2023 11:45:51 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=l8JZRePb; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679769951; x=1711305951; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kipaiiv5wj2ZtdduF5Qr+ZYCyheQLJYKh5ngVx+0mpc=; b=l8JZRePbYpqSCEil+78sejhljKQCaiyOTZqwLl/Vx/D7PawoL3JfCVWN P6QtIYcbz9IY93YxvFznLtBhXR9FA6xpnB9zwXituLn24eVerqToJgvVH ASBB5F/Uv9mmhsCSa5FZ9IMXM8D0XTuUD+xlN4rs88ArZxZDV5Y12ppVK lT9MERYoNu7+DRZ5gZMBvI48zexETTvA0FszCp+kvmuB0LMJXoARDkoMI o4lSR8vF6yspyYhGd5GvZPL6NyzvrIkIMnnPDruHKbS5rH0zKC8wvFGP9 b1RXVej5+bgn9xf7FlKchhplQH29Fbqp+UTPk5mz7Crzbj08qv5A//2Ud g==; X-IronPort-AV: E=McAfee;i="6600,9927,10660"; a="319655064" X-IronPort-AV: E=Sophos;i="5.98,291,1673942400"; d="scan'208";a="319655064" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Mar 2023 11:45:50 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10660"; a="685541392" X-IronPort-AV: E=Sophos;i="5.98,291,1673942400"; d="scan'208";a="685541392" Received: from mdkinney-mobl2.amr.corp.intel.com ([10.212.254.125]) by fmsmga007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Mar 2023 11:45:50 -0700 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Chris Johnson , Andrew Fish , Leif Lindholm , Michael Kubacki , Sean Brogan Subject: [Patch 01/12] UnitTestFrameworkPkg: Add subhook submodule required for gmock Date: Sat, 25 Mar 2023 11:45:29 -0700 Message-Id: <20230325184541.596-2-michael.d.kinney@intel.com> X-Mailer: git-send-email 2.39.1.windows.1 In-Reply-To: <20230325184541.596-1-michael.d.kinney@intel.com> References: <20230325184541.596-1-michael.d.kinney@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Chris Johnson REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4389 Add subhook submodule that is required to hook internal functions when using gmock. https://github.com/Zeex/subhook Add SubhookLib library class and SubhookLib library instance. Include the SUBHOOK_STATIC define in the SubhookLib INF file so it builds as a static library. Also include the SUBHOOK_STATIC define in SubhookLib.h so all modules using SubhookLib properly link SubhookLib as a static library. Cc: Andrew Fish Cc: Leif Lindholm Cc: Michael D Kinney Cc: Michael Kubacki Cc: Sean Brogan Signed-off-by: Chris Johnson --- .gitmodules | 3 ++ ReadMe.rst | 1 + .../Include/Library/SubhookLib.h | 15 ++++++++ .../Library/SubhookLib/SubhookLib.inf | 36 +++++++++++++++++++ .../Library/SubhookLib/SubhookLib.uni | 11 ++++++ .../Library/SubhookLib/subhook | 1 + .../Test/UnitTestFrameworkPkgHostTest.dsc | 1 + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec | 2 ++ .../UnitTestFrameworkPkgHost.dsc.inc | 1 + 9 files changed, 71 insertions(+) create mode 100644 UnitTestFrameworkPkg/Include/Library/SubhookLib.h create mode 100644 UnitTestFrameworkPkg/Library/SubhookLib/SubhookLib.inf create mode 100644 UnitTestFrameworkPkg/Library/SubhookLib/SubhookLib.uni create mode 160000 UnitTestFrameworkPkg/Library/SubhookLib/subhook diff --git a/.gitmodules b/.gitmodules index 8011a88d9d25..fe8a43be93ba 100644 --- a/.gitmodules +++ b/.gitmodules @@ -23,3 +23,6 @@ [submodule "UnitTestFrameworkPkg/Library/GoogleTestLib/googletest"] path = UnitTestFrameworkPkg/Library/GoogleTestLib/googletest url = https://github.com/google/googletest.git +[submodule "UnitTestFrameworkPkg/Library/SubhookLib/subhook"] + path = UnitTestFrameworkPkg/Library/SubhookLib/subhook + url = https://github.com/Zeex/subhook.git diff --git a/ReadMe.rst b/ReadMe.rst index 497d96355908..91b9cf3c5e50 100644 --- a/ReadMe.rst +++ b/ReadMe.rst @@ -94,6 +94,7 @@ that are covered by additional licenses. - `MdeModulePkg/Universal/RegularExpressionDxe/oniguruma `__ - `UnitTestFrameworkPkg/Library/CmockaLib/cmocka `__ - `UnitTestFrameworkPkg/Library/GoogleTestLib/googletest `__ +- `UnitTestFrameworkPkg/Library/SubhookLib/subhook `__ - `RedfishPkg/Library/JsonLib/jansson `__ The EDK II Project is composed of packages. The maintainers for each package diff --git a/UnitTestFrameworkPkg/Include/Library/SubhookLib.h b/UnitTestFrameworkPkg/Include/Library/SubhookLib.h new file mode 100644 index 000000000000..46783adfccfb --- /dev/null +++ b/UnitTestFrameworkPkg/Include/Library/SubhookLib.h @@ -0,0 +1,15 @@ +/** @file + SubhookLib class with APIs from the subhook project + + Copyright (c) 2022, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef SUBHOOK_LIB_H_ +#define SUBHOOK_LIB_H_ + +#define SUBHOOK_STATIC +#include + +#endif diff --git a/UnitTestFrameworkPkg/Library/SubhookLib/SubhookLib.inf b/UnitTestFrameworkPkg/Library/SubhookLib/SubhookLib.inf new file mode 100644 index 000000000000..e8e8ffb90750 --- /dev/null +++ b/UnitTestFrameworkPkg/Library/SubhookLib/SubhookLib.inf @@ -0,0 +1,36 @@ +## @file +# This module provides Subhook Library implementation. +# +# Copyright (c) 2022, Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = SubhookLib + MODULE_UNI_FILE = SubhookLib.uni + FILE_GUID = 70E03378-E140-46A8-8E65-7719DA14A240 + MODULE_TYPE = BASE + VERSION_STRING = 0.1 + LIBRARY_CLASS = SubhookLib|HOST_APPLICATION + +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + subhook/subhook.c + +[Packages] + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec + +[BuildOptions] + MSFT:*_*_*_CC_FLAGS == /c /EHsc /Zi /DSUBHOOK_STATIC + MSFT:NOOPT_*_*_CC_FLAGS = /Od + + GCC:*_*_*_CC_FLAGS == -g -c + + GCC:NOOPT_*_*_CC_FLAGS = -O0 + GCC:*_*_IA32_CC_FLAGS = -m32 + GCC:*_*_X64_CC_FLAGS = -m64 diff --git a/UnitTestFrameworkPkg/Library/SubhookLib/SubhookLib.uni b/UnitTestFrameworkPkg/Library/SubhookLib/SubhookLib.uni new file mode 100644 index 000000000000..eb61f034047e --- /dev/null +++ b/UnitTestFrameworkPkg/Library/SubhookLib/SubhookLib.uni @@ -0,0 +1,11 @@ +// /** @file +// This module provides Subhook Library implementation. +// +// Copyright (c) 2022, Intel Corporation. All rights reserved.
+// SPDX-License-Identifier: BSD-2-Clause-Patent +// +// **/ + +#string STR_MODULE_ABSTRACT #language en-US "Subhook Library implementation" + +#string STR_MODULE_DESCRIPTION #language en-US "This module provides Subhook Library implementation." diff --git a/UnitTestFrameworkPkg/Library/SubhookLib/subhook b/UnitTestFrameworkPkg/Library/SubhookLib/subhook new file mode 160000 index 000000000000..83d4e1ebef35 --- /dev/null +++ b/UnitTestFrameworkPkg/Library/SubhookLib/subhook @@ -0,0 +1 @@ +Subproject commit 83d4e1ebef3588fae48b69a7352cc21801cb70bc diff --git a/UnitTestFrameworkPkg/Test/UnitTestFrameworkPkgHostTest.dsc b/UnitTestFrameworkPkg/Test/UnitTestFrameworkPkgHostTest.dsc index 708ef7f9ab35..722509c8f26f 100644 --- a/UnitTestFrameworkPkg/Test/UnitTestFrameworkPkgHostTest.dsc +++ b/UnitTestFrameworkPkg/Test/UnitTestFrameworkPkgHostTest.dsc @@ -33,6 +33,7 @@ [Components] # UnitTestFrameworkPkg/Library/CmockaLib/CmockaLib.inf UnitTestFrameworkPkg/Library/GoogleTestLib/GoogleTestLib.inf + UnitTestFrameworkPkg/Library/SubhookLib/SubhookLib.inf UnitTestFrameworkPkg/Library/Posix/DebugLibPosix/DebugLibPosix.inf UnitTestFrameworkPkg/Library/Posix/MemoryAllocationLibPosix/MemoryAllocationLibPosix.inf UnitTestFrameworkPkg/Library/UnitTestLib/UnitTestLibCmocka.inf diff --git a/UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec b/UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec index 14e387d63a0f..30b489915d4a 100644 --- a/UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec +++ b/UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec @@ -20,6 +20,7 @@ [Includes] Library/CmockaLib/cmocka/include Library/GoogleTestLib/googletest/googletest/include Library/GoogleTestLib/googletest/googlemock/include + Library/SubhookLib/subhook [Includes.Common.Private] PrivateInclude @@ -34,6 +35,7 @@ [LibraryClasses] ## @libraryclass GoogleTest infrastructure # GoogleTestLib|Include/Library/GoogleTestLib.h + SubhookLib|Include/Library/SubhookLib.h [LibraryClasses.Common.Private] ## @libraryclass Provides a unit test result report diff --git a/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc b/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc index 7f5dfa30ed60..e77897bd326f 100644 --- a/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc +++ b/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc @@ -15,6 +15,7 @@ [LibraryClasses.common.HOST_APPLICATION] CacheMaintenanceLib|MdePkg/Library/BaseCacheMaintenanceLibNull/BaseCacheMaintenanceLibNull.inf CmockaLib|UnitTestFrameworkPkg/Library/CmockaLib/CmockaLib.inf GoogleTestLib|UnitTestFrameworkPkg/Library/GoogleTestLib/GoogleTestLib.inf + SubhookLib|UnitTestFrameworkPkg/Library/SubhookLib/SubhookLib.inf UnitTestLib|UnitTestFrameworkPkg/Library/UnitTestLib/UnitTestLibCmocka.inf DebugLib|UnitTestFrameworkPkg/Library/Posix/DebugLibPosix/DebugLibPosix.inf MemoryAllocationLib|UnitTestFrameworkPkg/Library/Posix/MemoryAllocationLibPosix/MemoryAllocationLibPosix.inf -- 2.39.1.windows.1