[edk2-devel] [Patch 1/6] MdePkg: Reproduce builds across source format changes
Leif Lindholm
leif at nuviainc.com
Mon Nov 1 18:52:25 UTC 2021
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 <gaoliming at byosoft.com.cn>
> Cc: Zhiguang Liu <zhiguang.liu at intel.com>
> Cc: Michael Kubacki <michael.kubacki at microsoft.com>
> Signed-off-by: Michael D Kinney <michael.d.kinney at 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/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list