REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3688
* Add DEBUG_LINE_NUMBER define to DebugLib.h that is
by default mapped to __LINE__. A build can define
DEBUG_LINE_NUMBER to use a fixed value.
* Add DEBUG_EXPRESSION_STRING(Expression) macros to
DebugLib.h that is by default mapped to #Expression.
A build can define DEBUG_EXPRESSION_STRING_VALUE to
set all expression strings to a fixed string value.
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang.liu@intel.com>
Cc: Michael Kubacki <michael.kubacki@microsoft.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
---
MdePkg/Include/Library/DebugLib.h | 43 ++++++++++++++++++++++++++++---
1 file changed, 39 insertions(+), 4 deletions(-)
diff --git a/MdePkg/Include/Library/DebugLib.h b/MdePkg/Include/Library/DebugLib.h
index 4cacd4b8e243..7fb75f956c6e 100644
--- a/MdePkg/Include/Library/DebugLib.h
+++ b/MdePkg/Include/Library/DebugLib.h
@@ -71,6 +71,41 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
#define EFI_D_VERBOSE DEBUG_VERBOSE
#define EFI_D_ERROR DEBUG_ERROR
+//
+// Source file line number.
+// Default is use the to compiler provided __LINE__ macro value. The __LINE__
+// mapping can be overriden by predefining DEBUG_LINE_NUMBER
+//
+// Defining DEBUG_LINE_NUMBER to a fixed value is useful when comparing builds
+// across source code formatting changes that may add/remove lines in a source
+// file.
+//
+#ifdef DEBUG_LINE_NUMBER
+#else
+#define DEBUG_LINE_NUMBER __LINE__
+#endif
+
+/**
+ Macro that converts a Boolean expression to a Null-terminated ASCII string.
+
+ The default is to use the C pre-processor stringizing operator '#' to add
+ quotes around the C expression. If DEBUG_EXPRESSION_STRING_VALUE is defined
+ then the C expression is converted to the fixed string value.
+
+ Defining DEBUG_EXPRESSION_STRING_VALUE to a fixed value is useful when
+ comparing builds across source code formatting changes that may make
+ changes to spaces or parenthesis in a Boolean expression.
+
+ @param Expression Boolean expression.
+
+**/
+
+#ifdef DEBUG_EXPRESSION_STRING_VALUE
+#define DEBUG_EXPRESSION_STRING(Expression) DEBUG_EXPRESSION_STRING_VALUE
+#else
+#define DEBUG_EXPRESSION_STRING(Expression) #Expression
+#endif
+
/**
Prints a debug message to the debug output device if the specified error level is enabled.
@@ -310,15 +345,15 @@ UnitTestDebugAssert (
);
#if defined(__clang__) && defined(__FILE_NAME__)
-#define _ASSERT(Expression) UnitTestDebugAssert (__FILE_NAME__, __LINE__, #Expression)
+#define _ASSERT(Expression) UnitTestDebugAssert (__FILE_NAME__, DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression))
#else
-#define _ASSERT(Expression) UnitTestDebugAssert (__FILE__, __LINE__, #Expression)
+#define _ASSERT(Expression) UnitTestDebugAssert (__FILE__, DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression))
#endif
#else
#if defined(__clang__) && defined(__FILE_NAME__)
-#define _ASSERT(Expression) DebugAssert (__FILE_NAME__, __LINE__, #Expression)
+#define _ASSERT(Expression) DebugAssert (__FILE_NAME__, DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression))
#else
-#define _ASSERT(Expression) DebugAssert (__FILE__, __LINE__, #Expression)
+#define _ASSERT(Expression) DebugAssert (__FILE__, DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression))
#endif
#endif
--
2.32.0.windows.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#83055): https://edk2.groups.io/g/devel/message/83055
Mute This Topic: https://groups.io/mt/86752902/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
Mike: I add my comments. Thanks Liming > -----邮件原件----- > 发件人: Michael D Kinney <michael.d.kinney@intel.com> > 发送时间: 2021年11月2日 5:38 > 收件人: devel@edk2.groups.io > 抄送: Liming Gao <gaoliming@byosoft.com.cn>; Zhiguang Liu > <zhiguang.liu@intel.com>; Michael Kubacki > <michael.kubacki@microsoft.com> > 主题: [Patch V2 1/7] MdePkg/Include: Enhance DebugLib to support > reproduce builds > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3688 > > * Add DEBUG_LINE_NUMBER define to DebugLib.h that is > by default mapped to __LINE__. A build can define > DEBUG_LINE_NUMBER to use a fixed value. > * Add DEBUG_EXPRESSION_STRING(Expression) macros to > DebugLib.h that is by default mapped to #Expression. > A build can define DEBUG_EXPRESSION_STRING_VALUE to > set all expression strings to a fixed string value. > > Cc: Liming Gao <gaoliming@byosoft.com.cn> > Cc: Zhiguang Liu <zhiguang.liu@intel.com> > Cc: Michael Kubacki <michael.kubacki@microsoft.com> > Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> > --- > MdePkg/Include/Library/DebugLib.h | 43 > ++++++++++++++++++++++++++++--- > 1 file changed, 39 insertions(+), 4 deletions(-) > > diff --git a/MdePkg/Include/Library/DebugLib.h > b/MdePkg/Include/Library/DebugLib.h > index 4cacd4b8e243..7fb75f956c6e 100644 > --- a/MdePkg/Include/Library/DebugLib.h > +++ b/MdePkg/Include/Library/DebugLib.h > @@ -71,6 +71,41 @@ SPDX-License-Identifier: BSD-2-Clause-Patent > #define EFI_D_VERBOSE DEBUG_VERBOSE > #define EFI_D_ERROR DEBUG_ERROR > > +// > +// Source file line number. > +// Default is use the to compiler provided __LINE__ macro value. The > __LINE__ > +// mapping can be overriden by predefining DEBUG_LINE_NUMBER > +// > +// Defining DEBUG_LINE_NUMBER to a fixed value is useful when comparing > builds > +// across source code formatting changes that may add/remove lines in a > source > +// file. > +// > +#ifdef DEBUG_LINE_NUMBER > +#else > +#define DEBUG_LINE_NUMBER __LINE__ > +#endif How about #ifndef DEBUG_LINE_NUMBER? Thanks Liming > + > +/** > + Macro that converts a Boolean expression to a Null-terminated ASCII > string. > + > + The default is to use the C pre-processor stringizing operator '#' to add > + quotes around the C expression. If DEBUG_EXPRESSION_STRING_VALUE > is defined > + then the C expression is converted to the fixed string value. > + > + Defining DEBUG_EXPRESSION_STRING_VALUE to a fixed value is useful > when > + comparing builds across source code formatting changes that may make > + changes to spaces or parenthesis in a Boolean expression. > + > + @param Expression Boolean expression. > + > +**/ > + > +#ifdef DEBUG_EXPRESSION_STRING_VALUE > +#define DEBUG_EXPRESSION_STRING(Expression) > DEBUG_EXPRESSION_STRING_VALUE > +#else > +#define DEBUG_EXPRESSION_STRING(Expression) #Expression > +#endif > + > /** > Prints a debug message to the debug output device if the specified error > level is enabled. > > @@ -310,15 +345,15 @@ UnitTestDebugAssert ( > ); > > #if defined(__clang__) && defined(__FILE_NAME__) > -#define _ASSERT(Expression) UnitTestDebugAssert (__FILE_NAME__, > __LINE__, #Expression) > +#define _ASSERT(Expression) UnitTestDebugAssert (__FILE_NAME__, > DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression)) > #else > -#define _ASSERT(Expression) UnitTestDebugAssert (__FILE__, __LINE__, > #Expression) > +#define _ASSERT(Expression) UnitTestDebugAssert (__FILE__, > DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression)) > #endif > #else > #if defined(__clang__) && defined(__FILE_NAME__) > -#define _ASSERT(Expression) DebugAssert (__FILE_NAME__, __LINE__, > #Expression) > +#define _ASSERT(Expression) DebugAssert (__FILE_NAME__, > DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression)) > #else > -#define _ASSERT(Expression) DebugAssert (__FILE__, __LINE__, > #Expression) > +#define _ASSERT(Expression) DebugAssert (__FILE__, > DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression)) > #endif > #endif > > -- > 2.32.0.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#83080): https://edk2.groups.io/g/devel/message/83080 Mute This Topic: https://groups.io/mt/86758108/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
> -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of gaoliming > Sent: Monday, November 1, 2021 7:12 PM > To: Kinney, Michael D <michael.d.kinney@intel.com>; devel@edk2.groups.io > Cc: Liu, Zhiguang <zhiguang.liu@intel.com>; 'Michael Kubacki' <michael.kubacki@microsoft.com> > Subject: [edk2-devel] 回复: [Patch V2 1/7] MdePkg/Include: Enhance DebugLib to support reproduce builds > > Mike: > I add my comments. > > Thanks > Liming > > -----邮件原件----- > > 发件人: Michael D Kinney <michael.d.kinney@intel.com> > > 发送时间: 2021年11月2日 5:38 > > 收件人: devel@edk2.groups.io > > 抄送: Liming Gao <gaoliming@byosoft.com.cn>; Zhiguang Liu > > <zhiguang.liu@intel.com>; Michael Kubacki > > <michael.kubacki@microsoft.com> > > 主题: [Patch V2 1/7] MdePkg/Include: Enhance DebugLib to support > > reproduce builds > > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3688 > > > > * Add DEBUG_LINE_NUMBER define to DebugLib.h that is > > by default mapped to __LINE__. A build can define > > DEBUG_LINE_NUMBER to use a fixed value. > > * Add DEBUG_EXPRESSION_STRING(Expression) macros to > > DebugLib.h that is by default mapped to #Expression. > > A build can define DEBUG_EXPRESSION_STRING_VALUE to > > set all expression strings to a fixed string value. > > > > Cc: Liming Gao <gaoliming@byosoft.com.cn> > > Cc: Zhiguang Liu <zhiguang.liu@intel.com> > > Cc: Michael Kubacki <michael.kubacki@microsoft.com> > > Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> > > --- > > MdePkg/Include/Library/DebugLib.h | 43 > > ++++++++++++++++++++++++++++--- > > 1 file changed, 39 insertions(+), 4 deletions(-) > > > > diff --git a/MdePkg/Include/Library/DebugLib.h > > b/MdePkg/Include/Library/DebugLib.h > > index 4cacd4b8e243..7fb75f956c6e 100644 > > --- a/MdePkg/Include/Library/DebugLib.h > > +++ b/MdePkg/Include/Library/DebugLib.h > > @@ -71,6 +71,41 @@ SPDX-License-Identifier: BSD-2-Clause-Patent > > #define EFI_D_VERBOSE DEBUG_VERBOSE > > #define EFI_D_ERROR DEBUG_ERROR > > > > +// > > +// Source file line number. > > +// Default is use the to compiler provided __LINE__ macro value. The > > __LINE__ > > +// mapping can be overriden by predefining DEBUG_LINE_NUMBER > > +// > > +// Defining DEBUG_LINE_NUMBER to a fixed value is useful when comparing > > builds > > +// across source code formatting changes that may add/remove lines in a > > source > > +// file. > > +// > > +#ifdef DEBUG_LINE_NUMBER > > +#else > > +#define DEBUG_LINE_NUMBER __LINE__ > > +#endif > > How about #ifndef DEBUG_LINE_NUMBER? I tried that first. ECC flags it as an error thinking it is an include guard macro. We need to fix ECC to not report this as an error. This style passes ECC and all EDK II CI tests. > > Thanks > Liming > > + > > +/** > > + Macro that converts a Boolean expression to a Null-terminated ASCII > > string. > > + > > + The default is to use the C pre-processor stringizing operator '#' to > add > > + quotes around the C expression. If DEBUG_EXPRESSION_STRING_VALUE > > is defined > > + then the C expression is converted to the fixed string value. > > + > > + Defining DEBUG_EXPRESSION_STRING_VALUE to a fixed value is useful > > when > > + comparing builds across source code formatting changes that may make > > + changes to spaces or parenthesis in a Boolean expression. > > + > > + @param Expression Boolean expression. > > + > > +**/ > > + > > +#ifdef DEBUG_EXPRESSION_STRING_VALUE > > +#define DEBUG_EXPRESSION_STRING(Expression) > > DEBUG_EXPRESSION_STRING_VALUE > > +#else > > +#define DEBUG_EXPRESSION_STRING(Expression) #Expression > > +#endif > > + > > /** > > Prints a debug message to the debug output device if the specified > error > > level is enabled. > > > > @@ -310,15 +345,15 @@ UnitTestDebugAssert ( > > ); > > > > #if defined(__clang__) && defined(__FILE_NAME__) > > -#define _ASSERT(Expression) UnitTestDebugAssert (__FILE_NAME__, > > __LINE__, #Expression) > > +#define _ASSERT(Expression) UnitTestDebugAssert (__FILE_NAME__, > > DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression)) > > #else > > -#define _ASSERT(Expression) UnitTestDebugAssert (__FILE__, __LINE__, > > #Expression) > > +#define _ASSERT(Expression) UnitTestDebugAssert (__FILE__, > > DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression)) > > #endif > > #else > > #if defined(__clang__) && defined(__FILE_NAME__) > > -#define _ASSERT(Expression) DebugAssert (__FILE_NAME__, __LINE__, > > #Expression) > > +#define _ASSERT(Expression) DebugAssert (__FILE_NAME__, > > DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression)) > > #else > > -#define _ASSERT(Expression) DebugAssert (__FILE__, __LINE__, > > #Expression) > > +#define _ASSERT(Expression) DebugAssert (__FILE__, > > DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression)) > > #endif > > #endif > > > > -- > > 2.32.0.windows.1 > > > > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#83095): https://edk2.groups.io/g/devel/message/83095 Mute This Topic: https://groups.io/mt/86758108/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
Mike: OK. So, this change is to pass ECC. Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn> Thanks Liming > -----邮件原件----- > 发件人: Kinney, Michael D <michael.d.kinney@intel.com> > 发送时间: 2021年11月2日 15:05 > 收件人: devel@edk2.groups.io; gaoliming@byosoft.com.cn; Kinney, Michael > D <michael.d.kinney@intel.com> > 抄送: Liu, Zhiguang <zhiguang.liu@intel.com>; 'Michael Kubacki' > <michael.kubacki@microsoft.com> > 主题: RE: [edk2-devel] 回复: [Patch V2 1/7] MdePkg/Include: Enhance > DebugLib to support reproduce builds > > > > > -----Original Message----- > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of > gaoliming > > Sent: Monday, November 1, 2021 7:12 PM > > To: Kinney, Michael D <michael.d.kinney@intel.com>; > devel@edk2.groups.io > > Cc: Liu, Zhiguang <zhiguang.liu@intel.com>; 'Michael Kubacki' > <michael.kubacki@microsoft.com> > > Subject: [edk2-devel] 回复: [Patch V2 1/7] MdePkg/Include: Enhance > DebugLib to support reproduce builds > > > > Mike: > > I add my comments. > > > > Thanks > > Liming > > > -----邮件原件----- > > > 发件人: Michael D Kinney <michael.d.kinney@intel.com> > > > 发送时间: 2021年11月2日 5:38 > > > 收件人: devel@edk2.groups.io > > > 抄送: Liming Gao <gaoliming@byosoft.com.cn>; Zhiguang Liu > > > <zhiguang.liu@intel.com>; Michael Kubacki > > > <michael.kubacki@microsoft.com> > > > 主题: [Patch V2 1/7] MdePkg/Include: Enhance DebugLib to support > > > reproduce builds > > > > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3688 > > > > > > * Add DEBUG_LINE_NUMBER define to DebugLib.h that is > > > by default mapped to __LINE__. A build can define > > > DEBUG_LINE_NUMBER to use a fixed value. > > > * Add DEBUG_EXPRESSION_STRING(Expression) macros to > > > DebugLib.h that is by default mapped to #Expression. > > > A build can define DEBUG_EXPRESSION_STRING_VALUE to > > > set all expression strings to a fixed string value. > > > > > > Cc: Liming Gao <gaoliming@byosoft.com.cn> > > > Cc: Zhiguang Liu <zhiguang.liu@intel.com> > > > Cc: Michael Kubacki <michael.kubacki@microsoft.com> > > > Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> > > > --- > > > MdePkg/Include/Library/DebugLib.h | 43 > > > ++++++++++++++++++++++++++++--- > > > 1 file changed, 39 insertions(+), 4 deletions(-) > > > > > > diff --git a/MdePkg/Include/Library/DebugLib.h > > > b/MdePkg/Include/Library/DebugLib.h > > > index 4cacd4b8e243..7fb75f956c6e 100644 > > > --- a/MdePkg/Include/Library/DebugLib.h > > > +++ b/MdePkg/Include/Library/DebugLib.h > > > @@ -71,6 +71,41 @@ SPDX-License-Identifier: BSD-2-Clause-Patent > > > #define EFI_D_VERBOSE DEBUG_VERBOSE > > > #define EFI_D_ERROR DEBUG_ERROR > > > > > > +// > > > +// Source file line number. > > > +// Default is use the to compiler provided __LINE__ macro value. The > > > __LINE__ > > > +// mapping can be overriden by predefining DEBUG_LINE_NUMBER > > > +// > > > +// Defining DEBUG_LINE_NUMBER to a fixed value is useful when > comparing > > > builds > > > +// across source code formatting changes that may add/remove lines in a > > > source > > > +// file. > > > +// > > > +#ifdef DEBUG_LINE_NUMBER > > > +#else > > > +#define DEBUG_LINE_NUMBER __LINE__ > > > +#endif > > > > How about #ifndef DEBUG_LINE_NUMBER? > > I tried that first. ECC flags it as an error thinking it is an include guard > macro. > We need to fix ECC to not report this as an error. > This style passes ECC and all EDK II CI tests. > > > > > Thanks > > Liming > > > + > > > +/** > > > + Macro that converts a Boolean expression to a Null-terminated ASCII > > > string. > > > + > > > + The default is to use the C pre-processor stringizing operator '#' to > > add > > > + quotes around the C expression. If > DEBUG_EXPRESSION_STRING_VALUE > > > is defined > > > + then the C expression is converted to the fixed string value. > > > + > > > + Defining DEBUG_EXPRESSION_STRING_VALUE to a fixed value is > useful > > > when > > > + comparing builds across source code formatting changes that may > make > > > + changes to spaces or parenthesis in a Boolean expression. > > > + > > > + @param Expression Boolean expression. > > > + > > > +**/ > > > + > > > +#ifdef DEBUG_EXPRESSION_STRING_VALUE > > > +#define DEBUG_EXPRESSION_STRING(Expression) > > > DEBUG_EXPRESSION_STRING_VALUE > > > +#else > > > +#define DEBUG_EXPRESSION_STRING(Expression) #Expression > > > +#endif > > > + > > > /** > > > Prints a debug message to the debug output device if the specified > > error > > > level is enabled. > > > > > > @@ -310,15 +345,15 @@ UnitTestDebugAssert ( > > > ); > > > > > > #if defined(__clang__) && defined(__FILE_NAME__) > > > -#define _ASSERT(Expression) UnitTestDebugAssert (__FILE_NAME__, > > > __LINE__, #Expression) > > > +#define _ASSERT(Expression) UnitTestDebugAssert (__FILE_NAME__, > > > DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression)) > > > #else > > > -#define _ASSERT(Expression) UnitTestDebugAssert (__FILE__, > __LINE__, > > > #Expression) > > > +#define _ASSERT(Expression) UnitTestDebugAssert (__FILE__, > > > DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression)) > > > #endif > > > #else > > > #if defined(__clang__) && defined(__FILE_NAME__) > > > -#define _ASSERT(Expression) DebugAssert (__FILE_NAME__, __LINE__, > > > #Expression) > > > +#define _ASSERT(Expression) DebugAssert (__FILE_NAME__, > > > DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression)) > > > #else > > > -#define _ASSERT(Expression) DebugAssert (__FILE__, __LINE__, > > > #Expression) > > > +#define _ASSERT(Expression) DebugAssert (__FILE__, > > > DEBUG_LINE_NUMBER, DEBUG_EXPRESSION_STRING (Expression)) > > > #endif > > > #endif > > > > > > -- > > > 2.32.0.windows.1 > > > > > > > > > > > > > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#83313): https://edk2.groups.io/g/devel/message/83313 Mute This Topic: https://groups.io/mt/86810076/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
© 2016 - 2026 Red Hat, Inc.