[edk2] [edk2-staging/edk2-test Patch V2 1/2] Test*Pkg: Update DSC files to improve debug

Michael D Kinney posted 2 patches 7 years, 4 months ago
[edk2] [edk2-staging/edk2-test Patch V2 1/2] Test*Pkg: Update DSC files to improve debug
Posted by Michael D Kinney 7 years, 4 months ago
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 <felixp@ami.com>
Cc: Andrew Fish <afish@apple.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Michael Kinney <michael.d.kinney@intel.com>
---
 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

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel