On Mon, Nov 01, 2021 at 11:29:37 -0700, Michael D Kinney wrote: > 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 pre-define > DEBUG_LINE_NUMBER to use a fixed value. > * Add DEBUG_EXPRESSION_STRING(Expression) macrso 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.
I think it would be useful to separate this > * Use DEBUG_LINE_NUMBER instead of __LINE__. > * Use DEBUG_EXPRESSION_STRING instead of #Expression. from this. I.e., I have no need to verify whether macro use changes in MdePkg are correct, but it is interesting to me to see the new macros being defined. / Leif > Cc: Liming Gao <gaolim...@byosoft.com.cn> > Cc: Zhiguang Liu <zhiguang....@intel.com> > Cc: Michael Kubacki <michael.kuba...@microsoft.com> > Signed-off-by: Michael D Kinney <michael.d.kin...@intel.com> > --- > MdePkg/Include/Library/DebugLib.h | 42 +++++++++++++++++++++++++--- > MdePkg/Include/Library/UnitTestLib.h | 18 ++++++------ > MdePkg/Library/BaseLib/SafeString.c | 2 +- > 3 files changed, 48 insertions(+), 14 deletions(-) > > diff --git a/MdePkg/Include/Library/DebugLib.h > b/MdePkg/Include/Library/DebugLib.h > index 4cacd4b8e243..287b922e9f74 100644 > --- a/MdePkg/Include/Library/DebugLib.h > +++ b/MdePkg/Include/Library/DebugLib.h > @@ -71,6 +71,40 @@ 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. > +// > +#ifndef DEBUG_LINE_NUMBER > +#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. > + > +**/ > + > +#ifndef DEBUG_EXPRESSION_STRING_VALUE > +#define DEBUG_EXPRESSION_STRING(Expression) #Expression > +#else > +#define DEBUG_EXPRESSION_STRING(Expression) DEBUG_EXPRESSION_STRING_VALUE > +#endif > + > /** > Prints a debug message to the debug output device if the specified error > level is enabled. > > @@ -310,15 +344,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 > > diff --git a/MdePkg/Include/Library/UnitTestLib.h > b/MdePkg/Include/Library/UnitTestLib.h > index 99175496c8cd..7cc6082387bb 100644 > --- a/MdePkg/Include/Library/UnitTestLib.h > +++ b/MdePkg/Include/Library/UnitTestLib.h > @@ -348,7 +348,7 @@ SaveFrameworkState ( > @param[in] Expression Expression to be evaluated for TRUE. > **/ > #define UT_ASSERT_TRUE(Expression) > \ > - if(!UnitTestAssertTrue ((Expression), __FUNCTION__, __LINE__, __FILE__, > #Expression)) { \ > + if(!UnitTestAssertTrue ((Expression), __FUNCTION__, DEBUG_LINE_NUMBER, > __FILE__, #Expression)) { \ > return UNIT_TEST_ERROR_TEST_FAILED; > \ > } > > @@ -360,7 +360,7 @@ SaveFrameworkState ( > @param[in] Expression Expression to be evaluated for FALSE. > **/ > #define UT_ASSERT_FALSE(Expression) > \ > - if(!UnitTestAssertFalse ((Expression), __FUNCTION__, __LINE__, __FILE__, > #Expression)) { \ > + if(!UnitTestAssertFalse ((Expression), __FUNCTION__, DEBUG_LINE_NUMBER, > __FILE__, #Expression)) { \ > return UNIT_TEST_ERROR_TEST_FAILED; > \ > } > > @@ -373,7 +373,7 @@ SaveFrameworkState ( > @param[in] ValueB Value to be compared for equality (64-bit comparison). > **/ > #define UT_ASSERT_EQUAL(ValueA, ValueB) > \ > - if(!UnitTestAssertEqual ((UINT64)(ValueA), (UINT64)(ValueB), __FUNCTION__, > __LINE__, __FILE__, #ValueA, #ValueB)) { \ > + if(!UnitTestAssertEqual ((UINT64)(ValueA), (UINT64)(ValueB), __FUNCTION__, > DEBUG_LINE_NUMBER, __FILE__, #ValueA, #ValueB)) { \ > return UNIT_TEST_ERROR_TEST_FAILED; > \ > } > > @@ -387,7 +387,7 @@ SaveFrameworkState ( > @param[in] Length Number of bytes to compare in BufferA and BufferB. > **/ > #define UT_ASSERT_MEM_EQUAL(BufferA, BufferB, Length) > \ > - if(!UnitTestAssertMemEqual ((VOID *)(UINTN)(BufferA), (VOID > *)(UINTN)(BufferB), (UINTN)Length, __FUNCTION__, __LINE__, __FILE__, > #BufferA, #BufferB)) { \ > + if(!UnitTestAssertMemEqual ((VOID *)(UINTN)(BufferA), (VOID > *)(UINTN)(BufferB), (UINTN)Length, __FUNCTION__, DEBUG_LINE_NUMBER, __FILE__, > #BufferA, #BufferB)) { \ > return UNIT_TEST_ERROR_TEST_FAILED; > \ > } > > @@ -400,7 +400,7 @@ SaveFrameworkState ( > @param[in] ValueB Value to be compared for inequality (64-bit > comparison). > **/ > #define UT_ASSERT_NOT_EQUAL(ValueA, ValueB) > \ > - if(!UnitTestAssertNotEqual ((UINT64)(ValueA), (UINT64)(ValueB), > __FUNCTION__, __LINE__, __FILE__, #ValueA, #ValueB)) { \ > + if(!UnitTestAssertNotEqual ((UINT64)(ValueA), (UINT64)(ValueB), > __FUNCTION__, DEBUG_LINE_NUMBER, __FILE__, #ValueA, #ValueB)) { \ > return UNIT_TEST_ERROR_TEST_FAILED; > \ > } > > @@ -412,7 +412,7 @@ SaveFrameworkState ( > @param[in] Status EFI_STATUS value to check. > **/ > #define UT_ASSERT_NOT_EFI_ERROR(Status) > \ > - if(!UnitTestAssertNotEfiError ((Status), __FUNCTION__, __LINE__, __FILE__, > #Status)) { \ > + if(!UnitTestAssertNotEfiError ((Status), __FUNCTION__, DEBUG_LINE_NUMBER, > __FILE__, #Status)) { \ > return UNIT_TEST_ERROR_TEST_FAILED; > \ > } > > @@ -425,7 +425,7 @@ SaveFrameworkState ( > @param[in] Expected EFI_STATUS values to compare for equality. > **/ > #define UT_ASSERT_STATUS_EQUAL(Status, Expected) > \ > - if(!UnitTestAssertStatusEqual ((Status), (Expected), __FUNCTION__, > __LINE__, __FILE__, #Status)) { \ > + if(!UnitTestAssertStatusEqual ((Status), (Expected), __FUNCTION__, > DEBUG_LINE_NUMBER, __FILE__, #Status)) { \ > return UNIT_TEST_ERROR_TEST_FAILED; > \ > } > > @@ -437,7 +437,7 @@ SaveFrameworkState ( > @param[in] Pointer Pointer to be checked against NULL. > **/ > #define UT_ASSERT_NOT_NULL(Pointer) > \ > - if(!UnitTestAssertNotNull ((Pointer), __FUNCTION__, __LINE__, __FILE__, > #Pointer)) { \ > + if(!UnitTestAssertNotNull ((Pointer), __FUNCTION__, DEBUG_LINE_NUMBER, > __FILE__, #Pointer)) { \ > return UNIT_TEST_ERROR_TEST_FAILED; > \ > } > > @@ -482,7 +482,7 @@ SaveFrameworkState ( > } \ > if (!UnitTestExpectAssertFailure ( \ > UnitTestJumpStatus, \ > - __FUNCTION__, __LINE__, __FILE__, \ > + __FUNCTION__, DEBUG_LINE_NUMBER, __FILE__, \ > #FunctionCall, Status)) { \ > return UNIT_TEST_ERROR_TEST_FAILED; \ > } \ > diff --git a/MdePkg/Library/BaseLib/SafeString.c > b/MdePkg/Library/BaseLib/SafeString.c > index 3bb23ca1a130..ce6db2b94eff 100644 > --- a/MdePkg/Library/BaseLib/SafeString.c > +++ b/MdePkg/Library/BaseLib/SafeString.c > @@ -17,7 +17,7 @@ > if (!(Expression)) { \ > DEBUG ((DEBUG_VERBOSE, \ > "%a(%d) %a: SAFE_STRING_CONSTRAINT_CHECK(%a) failed. Return %r\n", \ > - __FILE__, __LINE__, __FUNCTION__, #Expression, Status)); \ > + __FILE__, DEBUG_LINE_NUMBER, __FUNCTION__, > DEBUG_EXPRESSION_STRING(Expression), Status)); \ > return Status; \ > } \ > } while (FALSE) > -- > 2.32.0.windows.1 > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#83024): https://edk2.groups.io/g/devel/message/83024 Mute This Topic: https://groups.io/mt/86748727/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-