public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Michael D Kinney <michael.d.kinney@intel.com>
To: edk2-devel@lists.01.org
Cc: Felix Polyudov <felixp@ami.com>, Andrew Fish <afish@apple.com>,
	Michael Kinney <michael.d.kinney@intel.com>
Subject: [edk2-staging/edk2-test Patch V2 1/2] Test*Pkg: Update DSC files to improve debug
Date: Mon, 14 Aug 2017 20:57:17 -0700	[thread overview]
Message-ID: <20170815035718.1560-2-michael.d.kinney@intel.com> (raw)
In-Reply-To: <20170815035718.1560-1-michael.d.kinney@intel.com>

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



  reply	other threads:[~2017-08-15  3:54 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-15  3:57 [edk2-staging/edk2-test Patch V2 0/2] TestFrameworkPkg/TestProfile: Fix overlapping buffer ASSERT() Michael D Kinney
2017-08-15  3:57 ` Michael D Kinney [this message]
2017-08-15  3:57 ` [edk2-staging/edk2-test Patch V2 2/2] " Michael D Kinney
2017-08-17  3:16 ` [edk2-staging/edk2-test Patch V2 0/2] " Felix Poludov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170815035718.1560-2-michael.d.kinney@intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox