From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id C1D8D21B06E9B for ; Mon, 14 Aug 2017 20:54:56 -0700 (PDT) Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga104.jf.intel.com with ESMTP; 14 Aug 2017 20:57:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.41,376,1498546800"; d="scan'208";a="140268902" Received: from mdkinney-mobl1.amr.corp.intel.com ([10.241.98.166]) by fmsmga006.fm.intel.com with ESMTP; 14 Aug 2017 20:57:20 -0700 From: Michael D Kinney To: edk2-devel@lists.01.org Cc: Felix Polyudov , Andrew Fish , Michael Kinney Date: Mon, 14 Aug 2017 20:57:17 -0700 Message-Id: <20170815035718.1560-2-michael.d.kinney@intel.com> X-Mailer: git-send-email 2.13.1.windows.2 In-Reply-To: <20170815035718.1560-1-michael.d.kinney@intel.com> References: <20170815035718.1560-1-michael.d.kinney@intel.com> Subject: [edk2-staging/edk2-test Patch V2 1/2] Test*Pkg: Update DSC files to improve debug X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Aug 2017 03:54:57 -0000 Update the DSC files to improve debug of the TestFrameworkPkg and TestCasePkg. * If -b DEBUG build, then enable DEBUG() messages on the standard error console device with messages of type DEBUG_ERROR, DEBUG_VERBOSE, DEBUG_INFO, DEBUG_WARN, and DEBUG_INIT enabled. * If -b DEBUG build, then enable ASSERT() macros and configure ASSERT() macros to generate a break point when triggered. * If -b DEBUG build, then generated mixed C/ASM output for MSFT builds to help find and fix source code that causes memcpy() and memset() instrinsics to be used. * If -b RELEASE build, then disable all DEBUG() messages and ASSERT() macros and do not generated mixed C/ASM output files. * Add NT32 define that builds the TestFrameworkPkg and TestCasePkg components so they are compatible with NT32 environment debuggers. Cc: Felix Polyudov Cc: Andrew Fish Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael Kinney --- TestCasePkg/TestCasePkg.dsc | 65 +++++++++++++++++++++++++++++++++++ TestFrameworkPkg/TestFrameworkPkg.dsc | 62 +++++++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+) diff --git a/TestCasePkg/TestCasePkg.dsc b/TestCasePkg/TestCasePkg.dsc index c2f1832ae..e7e32d4e0 100644 --- a/TestCasePkg/TestCasePkg.dsc +++ b/TestCasePkg/TestCasePkg.dsc @@ -24,6 +24,18 @@ SKUID_IDENTIFIER = DEFAULT POSTBUILD = TestCasePkg/GenFramework.cmd + # + # Platform On/Off features are defined here + # + DEFINE LOGGING = FALSE + DEFINE SOURCE_DEBUG_ENABLE = FALSE + DEFINE NT32 = FALSE + + !if $(TARGET) == "DEBUG" + DEFINE LOGGING = TRUE + DEFINE SOURCE_DEBUG_ENABLE = TRUE + !endif + [LibraryClasses] UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf @@ -39,11 +51,64 @@ BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf +!if $(LOGGING) DebugLib|MdePkg/Library/UefiDebugLibStdErr/UefiDebugLibStdErr.inf +!else + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf +!endif DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf PostCodeLib|MdePkg/Library/BasePostCodeLibPort80/BasePostCodeLibPort80.inf PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf EfiTestLib|TestFrameworkPkg/Library/EfiTestLib/EfiTestLib.inf +[PcdsFixedAtBuild] +!if $(LOGGING) + !if $(SOURCE_DEBUG_ENABLE) + # + # Enabled ASSERT(), DEBUG(), and DEBUG_CODE() and configure ASSERT() to + # generate a breakpoint. + # + gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x17 + !else + # + # Enabled ASSERT(), DEBUG(), and DEBUG_CODE() and configure ASSERT() to + # generate a deadloop. + # + gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x27 + !endif +!else + # + # Disable ASSERT(), DEBUG(), DEBUG_CODE(), and DEBUG_CLEAR_MEMORY() + # + gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0 +!endif + +[PcdsPatchableInModule] +!if $(LOGGING) + # + # Enable DEBUG() messages of type DEBUG_ERROR, DEBUG_VERBOSE, DEBUG_INFO, + # DEBUG_WARN, and DEBUG_INIT + # + gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80400043 +!endif + [Components] TestCasePkg/Timer/ArchTimerBBTest.inf + +[BuildOptions] +!if $(TARGET) == "DEBUG" + # + # Generate mixed C/ASM files for debug builds + # + MSFT:*_*_*_CC_FLAGS = /FAsc +!endif + +!if $(NT32) + # + # If -D NT32 is set on command line to build, then build all components to be + # compatible with NT32 environment debuggers. + # + DEBUG_*_*_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000 /ALIGN:4096 /FILEALIGN:4096 /SUBSYSTEM:CONSOLE + NOOPT_*_*_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000 /ALIGN:4096 /FILEALIGN:4096 /SUBSYSTEM:CONSOLE + RELEASE_*_*_DLINK_FLAGS = /ALIGN:4096 /FILEALIGN:4096 +!endif diff --git a/TestFrameworkPkg/TestFrameworkPkg.dsc b/TestFrameworkPkg/TestFrameworkPkg.dsc index 93c8886af..ebf866e39 100644 --- a/TestFrameworkPkg/TestFrameworkPkg.dsc +++ b/TestFrameworkPkg/TestFrameworkPkg.dsc @@ -24,6 +24,18 @@ SKUID_IDENTIFIER = DEFAULT POSTBUILD = TestFrameworkPkg/GenFramework.cmd + # + # Platform On/Off features are defined here + # + DEFINE LOGGING = FALSE + DEFINE SOURCE_DEBUG_ENABLE = FALSE + DEFINE NT32 = FALSE + + !if $(TARGET) == "DEBUG" + DEFINE LOGGING = TRUE + DEFINE SOURCE_DEBUG_ENABLE = TRUE + !endif + [LibraryClasses] UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf @@ -39,7 +51,11 @@ BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf +!if $(LOGGING) DebugLib|MdePkg/Library/UefiDebugLibStdErr/UefiDebugLibStdErr.inf +!else + DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf +!endif DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf PostCodeLib|MdePkg/Library/BasePostCodeLibPort80/BasePostCodeLibPort80.inf PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf @@ -56,6 +72,37 @@ EntsLib|TestFrameworkPkg/Library/EasLib/EntsLib.inf EfiTestLib|TestFrameworkPkg/Library/EfiTestLib/EfiTestLib.inf +[PcdsFixedAtBuild] +!if $(LOGGING) + !if $(SOURCE_DEBUG_ENABLE) + # + # Enabled ASSERT(), DEBUG(), and DEBUG_CODE() and configure ASSERT() to + # generate a breakpoint. + # + gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x17 + !else + # + # Enabled ASSERT(), DEBUG(), and DEBUG_CODE() and configure ASSERT() to + # generate a deadloop. + # + gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x27 + !endif +!else + # + # Disable ASSERT(), DEBUG(), DEBUG_CODE(), and DEBUG_CLEAR_MEMORY() + # + gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0 +!endif + +[PcdsPatchableInModule] +!if $(LOGGING) + # + # Enable DEBUG() messages of type DEBUG_ERROR, DEBUG_VERBOSE, DEBUG_INFO, + # DEBUG_WARN, and DEBUG_INIT + # + gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80400043 +!endif + [Components] TestFrameworkPkg/Library/EasLib/EntsLib.inf TestFrameworkPkg/Library/EfiTestLib/EfiTestLib.inf @@ -79,4 +126,19 @@ TestFrameworkPkg/PeiSctManageModule/PeiSctManageModule.inf [BuildOptions] +!if $(TARGET) == "DEBUG" + # + # Generate mixed C/ASM files for debug builds + # MSFT:*_*_*_CC_FLAGS = /FAsc +!endif + +!if $(NT32) + # + # If -D NT32 is set on command line to build, then build all components to be + # compatible with NT32 environment debuggers. + # + DEBUG_*_*_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000 /ALIGN:4096 /FILEALIGN:4096 /SUBSYSTEM:CONSOLE + NOOPT_*_*_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000 /ALIGN:4096 /FILEALIGN:4096 /SUBSYSTEM:CONSOLE + RELEASE_*_*_DLINK_FLAGS = /ALIGN:4096 /FILEALIGN:4096 +!endif -- 2.13.1.windows.2