Vitaly,

Thank you for the contribution.

There are a couple points about this approach that need to be discussed.

You have included the <Library/DebugCommonLib.h> from 
MdePkg/Include/Library/DebugLib.h.  It is very rare for a 
lib class to include another lib class.  This means that a module
that has a dependency on the DebugLib class inherits a hidden
dependency on the DebugCommonLib class.  For module INF files,
we require the INF file to list all the lib classes that the
module sources directly use.  Since a module that uses the
DebugLib uses the ASSERT() and DEBUG() macros, all the APIs
that the ASSERT() and DEBUG() macros use are also directly
used by the module.  With this patch series, these macros
now use the DebugCommonLib class APIs, which means any module
that uses the DebugLib also directly uses the DebugCommonLib.
The INF files for all modules that use the DebugLib should
also be updated to list the DebugCommonLib.  If we go down
that path, then it would be cleaner for the modules to include
both DebugLib.h and DebugCommonLib.h so the list of includes
matches the list of lib classes in the INF file.  This would
be an even much larger change than the patch series already
under review.

I think there is general agreement that the ASSERT_CONSTRAINT()
feature is valuable, and the sticking point has been the 
complexity of the change and the impact to the existing modules
and platforms.

In order to address the original problem statement and 
Bugzilla: https://bugzilla.tianocore.org/show_bug.cgi?id=2054
Perhaps we should go back to the original proposal that 
adds one new PCD so the string APIs in the BaseLib can
filter out ASSERT() conditions for UEFI Applications that
want return status behavior without ASSERT() behavior.

The work on this patch series and the other proposals have
all been very valuable and we can continue to look for ways
to implement the general purpose ASSERT_CONSTRAINT() without
so many module and platform side effects.

Thanks,

Mike

> -----Original Message-----
> From: Vitaly Cheptsov <chept...@ispras.ru>
> Sent: Monday, May 11, 2020 8:41 AM
> To: devel@edk2.groups.io
> Cc: Andrew Fish <af...@apple.com>; Kinney, Michael D
> <michael.d.kin...@intel.com>; Marvin Häuser
> <mhaeu...@outlook.de>; Gao, Liming
> <liming....@intel.com>; Gao, Zhichao
> <zhichao....@intel.com>; Laszlo Ersek
> <ler...@redhat.com>
> Subject: [PATCH V4 00/27] Disabling safe string
> constraint assertions
> 
> Cc: Andrew Fish <af...@apple.com>
> Cc: Mike Kinney <michael.d.kin...@intel.com>
> Cc: Marvin Häuser <mhaeu...@outlook.de>
> Cc: Liming Gao <liming....@intel.com>
> Cc: Zhichao Gao <zhichao....@intel.com>
> CC: Laszlo Ersek <ler...@redhat.com>
> 
> This changesest hopefully finally resolves the
> longstanding
> https://bugzilla.tianocore.org/show_bug.cgi?id=2054
> 
> Requesting to merge into edk2-stable202005.
> 
> Vitaly Cheptsov (27):
>   MdePkg: Introduce DebugCommonLib interface and
> BaseDebugCommonLib
>   UnitTestFrameworkPkg: Add support for DebugCommonLib
>   MdePkg: Add support for DebugCommonLib
>   MdeModulePkg: Add support for DebugCommonLib
>   ArmPkg: Add support for DebugCommonLib
>   ArmPlatformPkg: Add support for DebugCommonLib
>   ArmVirtPkg: Add support for DebugCommonLib
>   CryptoPkg: Add support for DebugCommonLib
>   DynamicTablesPkg: Add support for DebugCommonLib
>   EmbeddedPkg: Add support for DebugCommonLib
>   EmulatorPkg: Add support for DebugCommonLib
>   FatPkg: Add support for DebugCommonLib
>   FmpDevicePkg: Add support for DebugCommonLib
>   IntelFsp2Pkg: Add support for DebugCommonLib
>   IntelFsp2WrapperPkg: Add support for DebugCommonLib
>   OvmfPkg: Add support for DebugCommonLib
>   NetworkPkg: Add support for DebugCommonLib
>   ShellPkg: Add support for DebugCommonLib
>   SecurityPkg: Add support for DebugCommonLib
>   PcAtChipsetPkg: Add support for DebugCommonLib
>   SignedCapsulePkg: Add support for DebugCommonLib
>   SourceLevelDebugPkg: Add support for DebugCommonLib
>   StandaloneMmPkg: Add support for DebugCommonLib
>   UefiCpuPkg: Add support for DebugCommonLib
>   UefiPayloadPkg: Add support for DebugCommonLib
>   MdePkg: Introduce assertion on constraint debug mask
> bit
>   MdePkg: Use assertion on constraint violation bit in
> SafeString
> 
>  ArmPkg/ArmPkg.dsc
> |   1 +
>  ArmPkg/Drivers/ArmCrashDumpDxe/ArmCrashDumpDxe.dsc
> |   1 +
>  ArmPkg/Library/SemiHostingDebugLib/DebugLib.c
> |  84 ----------
> 
> ArmPkg/Library/SemiHostingDebugLib/SemiHostingDebugLib.
> inf                             |   3 +-
>  ArmPlatformPkg/ArmPlatformPkg.dsc
> |   1 +
>  ArmVirtPkg/ArmVirt.dsc.inc
> |   1 +
>  CryptoPkg/CryptoPkg.dsc
> |   2 +
>  DynamicTablesPkg/DynamicTablesPkg.dsc
> |   1 +
>  EmbeddedPkg/EmbeddedPkg.dsc
> |   1 +
>  EmulatorPkg/EmulatorPkg.dsc
> |   1 +
>  FatPkg/FatPkg.dsc
> |   1 +
>  FmpDevicePkg/FmpDevicePkg.dsc
> |   1 +
>  IntelFsp2Pkg/IntelFsp2Pkg.dsc
> |   1 +
> 
> IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/BaseFspD
> ebugLibSerialPort.inf           |   1 +
> 
> IntelFsp2Pkg/Library/BaseFspDebugLibSerialPort/DebugLib
> .c                              |  97 -----------
>  IntelFsp2WrapperPkg/IntelFsp2WrapperPkg.dsc
> |   1 +
>  MdeModulePkg/Library/PeiDebugLibDebugPpi/DebugLib.c
> | 100 ------------
> 
> MdeModulePkg/Library/PeiDebugLibDebugPpi/PeiDebugLibDeb
> ugPpi.inf                       |   1 +
> 
> MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/Deb
> ugLib.c                         |  98 -----------
> 
> MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/Pei
> DxeDebugLibReportStatusCode.inf |   1 +
>  MdeModulePkg/MdeModulePkg.dsc
> |   1 +
>  MdePkg/Include/Library/BaseLib.h
> | 120 +++++++-------
>  MdePkg/Include/Library/DebugCommonLib.h
> | 172 ++++++++++++++++++++
>  MdePkg/Include/Library/DebugLib.h
> | 155 +++---------------
> 
> MdePkg/Library/BaseDebugCommonLib/BaseDebugCommonLib.in
> f                               |  39 +++++
> 
> MdePkg/Library/BaseDebugCommonLib/BaseDebugCommonLib.un
> i                               |  16 ++
>  MdePkg/Library/BaseDebugCommonLib/DebugCommonLib.c
> | 133 +++++++++++++++
>  MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
> |  10 ++
>  MdePkg/Library/BaseDebugLibNull/DebugLib.c
> |  98 -----------
> 
> MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSeria
> lPort.inf                       |   1 +
>  MdePkg/Library/BaseDebugLibSerialPort/DebugLib.c
> |  98 -----------
>  MdePkg/Library/BaseLib/BaseLib.inf
> |   1 +
>  MdePkg/Library/BaseLib/SafeString.c
> |   2 +-
>  MdePkg/Library/DxeRuntimeDebugLibSerialPort/DebugLib.c
> |  98 -----------
> 
> MdePkg/Library/DxeRuntimeDebugLibSerialPort/DxeRuntimeD
> ebugLibSerialPort.inf           |   1 +
>  MdePkg/Library/UefiDebugLibConOut/DebugLib.c
> |  98 -----------
> 
> MdePkg/Library/UefiDebugLibConOut/UefiDebugLibConOut.in
> f                               |   1 +
> 
> MdePkg/Library/UefiDebugLibDebugPortProtocol/DebugLib.c
> |  99 -----------
> 
> MdePkg/Library/UefiDebugLibDebugPortProtocol/UefiDebugL
> ibDebugPortProtocol.inf         |   1 +
>  MdePkg/Library/UefiDebugLibStdErr/DebugLib.c
> |  98 -----------
> 
> MdePkg/Library/UefiDebugLibStdErr/UefiDebugLibStdErr.in
> f                               |   1 +
>  MdePkg/MdePkg.dec
> |   6 +-
>  MdePkg/MdePkg.dsc
> |   1 +
>  MdePkg/MdePkg.uni
> |   3 +-
>  NetworkPkg/NetworkPkg.dsc
> |   1 +
>  OvmfPkg/Library/PlatformDebugLibIoPort/DebugLib.c
> |  98 -----------
> 
> OvmfPkg/Library/PlatformDebugLibIoPort/PlatformRomDebug
> LibIoPort.inf                   |   1 +
>  OvmfPkg/OvmfPkgIa32.dsc
> |   1 +
>  OvmfPkg/OvmfPkgIa32X64.dsc
> |   1 +
>  OvmfPkg/OvmfPkgX64.dsc
> |   1 +
>  OvmfPkg/OvmfXen.dsc
> |   1 +
>  PcAtChipsetPkg/PcAtChipsetPkg.dsc
> |   1 +
>  SecurityPkg/SecurityPkg.dsc
> |   1 +
>  ShellPkg/ShellPkg.dsc
> |   1 +
>  SignedCapsulePkg/SignedCapsulePkg.dsc
> |   1 +
>  SourceLevelDebugPkg/SourceLevelDebugPkg.dsc
> |   1 +
>  StandaloneMmPkg/StandaloneMmPkg.dsc
> |   1 +
>  UefiCpuPkg/UefiCpuPkg.dsc
> |   1 +
>  UefiPayloadPkg/UefiPayloadPkgIa32.dsc
> |   1 +
>  UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc
> |   1 +
> 
> UnitTestFrameworkPkg/Library/Posix/DebugLibPosix/DebugL
> ibPosix.c                       |  94 -----------
> 
> UnitTestFrameworkPkg/Library/Posix/DebugLibPosix/DebugL
> ibPosix.inf                     |   1 +
>  UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc
> |   1 +
> 
> UnitTestFrameworkPkg/UnitTestFrameworkPkgTarget.dsc.inc
> |   1 +
>  64 files changed, 501 insertions(+), 1360 deletions(-)
>  create mode 100644
> MdePkg/Include/Library/DebugCommonLib.h
>  create mode 100644
> MdePkg/Library/BaseDebugCommonLib/BaseDebugCommonLib.in
> f
>  create mode 100644
> MdePkg/Library/BaseDebugCommonLib/BaseDebugCommonLib.un
> i
>  create mode 100644
> MdePkg/Library/BaseDebugCommonLib/DebugCommonLib.c
> 
> --
> 2.24.2 (Apple Git-127)


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#59220): https://edk2.groups.io/g/devel/message/59220
Mute This Topic: https://groups.io/mt/74138532/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to