(+Michael Kubacki, Sean Brogan)

Mike, Michael, Sean:


This change is going to break building edk2 with anything older than Visual Studio 2015, which is where support for __func__ was added.

I checked and currently it appears that VS2013 builds edk2 but VS2012 has errors. Given that the stuart tools don't support anything older than VS2017 I'm thinking this is okay, but I want to double check before pushing this change.


--

Rebecca Cran


On 3/14/23 2:40 PM, Kinney, Michael D wrote:
Reviewed-by: Michael D Kinney <michael.d.kin...@intel.com>


-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Rebecca Cran
Sent: Monday, March 13, 2023 7:20 PM
To: devel@edk2.groups.io; Kinney, Michael D <michael.d.kin...@intel.com>; Gao, Liming 
<gaolim...@byosoft.com.cn>;
Liu, Zhiguang <zhiguang....@intel.com>
Subject: Re: [edk2-devel] [PATCH 2/2] MdePkg: Update code to be more C11 
compliant by using __func__

Mike,


I think your concerns with this patch were addressed?

Could you add a Reviewed-by please?


Thanks.
Rebecca


On 2/9/23 6:01 PM, Michael D Kinney wrote:
Hi Rebecca,

Did this pass EDK II CI?

This change does break EBC compiler builds.  The following has to be added to
MdePkg/Include/Ebc/ProcessorBind.h in order to use __func__ everywhere.

      #define __func__ __FUNCTION__

I also see __FUNCTION__ used in many packages.  I am wondering if we want
to do this clean up if it should be its own patch series and update all
packages in once series.

Mike

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Rebecca Cran
Sent: Thursday, February 9, 2023 7:45 AM
To: devel@edk2.groups.io; Kinney, Michael D <michael.d.kin...@intel.com>; Gao, Liming 
<gaolim...@byosoft.com.cn>;
Liu, Zhiguang
<zhiguang....@intel.com>
Cc: Rebecca Cran <rebe...@quicinc.com>
Subject: [edk2-devel] [PATCH 2/2] MdePkg: Update code to be more C11 compliant 
by using __func__

__FUNCTION__ is a pre-standard extension that gcc and Visual C++ among
others support, while __func__ was standardized in C99.

Since it's more standard, replace __FUNCTION__ with __func__ throughout
MdePkg.

Signed-off-by: Rebecca Cran <rebe...@quicinc.com>
---
   MdePkg/Include/Library/PerformanceLib.h                                      
              | 12 ++++++------
   MdePkg/Include/Library/UnitTestLib.h                                         
              | 18 +++++++++------
---
   MdePkg/Library/BaseCacheMaintenanceLib/LoongArchCache.c                      
              |  6 +++---
   MdePkg/Library/BaseCacheMaintenanceLib/RiscVCache.c                          
              | 12 ++++++------
   MdePkg/Library/BaseLib/SafeString.c                                          
              |  2 +-
   
MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.c
 |  4 ++--
   MdePkg/Library/DxeRngLib/DxeRngLib.c                                         
              | 14 +++++++-------
   7 files changed, 34 insertions(+), 34 deletions(-)

diff --git a/MdePkg/Include/Library/PerformanceLib.h 
b/MdePkg/Include/Library/PerformanceLib.h
index 34ec956b9c0e..d0f2dfb070d5 100644
--- a/MdePkg/Include/Library/PerformanceLib.h
+++ b/MdePkg/Include/Library/PerformanceLib.h
@@ -526,7 +526,7 @@ LogPerformanceMeasurement (
   #define PERF_EVENT_SIGNAL_BEGIN(EventGuid) \
     do { \
       if (LogPerformanceMeasurementEnabled (PERF_GENERAL_TYPE)) { \
-      LogPerformanceMeasurement (&gEfiCallerIdGuid, EventGuid, __FUNCTION__ , 
0, PERF_EVENTSIGNAL_START_ID); \
+      LogPerformanceMeasurement (&gEfiCallerIdGuid, EventGuid, __func__ , 0, 
PERF_EVENTSIGNAL_START_ID); \
       } \
     } while (FALSE)

@@ -542,7 +542,7 @@ LogPerformanceMeasurement (
   #define PERF_EVENT_SIGNAL_END(EventGuid) \
     do { \
       if (LogPerformanceMeasurementEnabled (PERF_GENERAL_TYPE)) { \
-      LogPerformanceMeasurement (&gEfiCallerIdGuid, EventGuid, __FUNCTION__ , 
0, PERF_EVENTSIGNAL_END_ID); \
+      LogPerformanceMeasurement (&gEfiCallerIdGuid, EventGuid, __func__ , 0, 
PERF_EVENTSIGNAL_END_ID); \
       } \
     } while (FALSE)

@@ -558,7 +558,7 @@ LogPerformanceMeasurement (
   #define PERF_CALLBACK_BEGIN(TriggerGuid) \
     do { \
       if (LogPerformanceMeasurementEnabled (PERF_GENERAL_TYPE)) { \
-      LogPerformanceMeasurement (&gEfiCallerIdGuid, TriggerGuid, __FUNCTION__ 
, 0, PERF_CALLBACK_START_ID); \
+      LogPerformanceMeasurement (&gEfiCallerIdGuid, TriggerGuid, __func__ , 0, 
PERF_CALLBACK_START_ID); \
       } \
     } while (FALSE)

@@ -574,7 +574,7 @@ LogPerformanceMeasurement (
   #define PERF_CALLBACK_END(TriggerGuid) \
     do { \
       if (LogPerformanceMeasurementEnabled (PERF_GENERAL_TYPE)) { \
-      LogPerformanceMeasurement (&gEfiCallerIdGuid, TriggerGuid, __FUNCTION__ 
, 0, PERF_CALLBACK_END_ID); \
+      LogPerformanceMeasurement (&gEfiCallerIdGuid, TriggerGuid, __func__ , 0, 
PERF_CALLBACK_END_ID); \
       } \
     } while (FALSE)

@@ -589,7 +589,7 @@ LogPerformanceMeasurement (
   #define PERF_FUNCTION_BEGIN() \
     do { \
       if (LogPerformanceMeasurementEnabled (PERF_GENERAL_TYPE)) { \
-      LogPerformanceMeasurement (&gEfiCallerIdGuid, NULL, __FUNCTION__ , 0, 
PERF_FUNCTION_START_ID); \
+      LogPerformanceMeasurement (&gEfiCallerIdGuid, NULL, __func__ , 0, 
PERF_FUNCTION_START_ID); \
       } \
     } while (FALSE)

@@ -604,7 +604,7 @@ LogPerformanceMeasurement (
   #define PERF_FUNCTION_END() \
     do { \
       if (LogPerformanceMeasurementEnabled (PERF_GENERAL_TYPE)) { \
-      LogPerformanceMeasurement (&gEfiCallerIdGuid, NULL, __FUNCTION__ , 0, 
PERF_FUNCTION_END_ID); \
+      LogPerformanceMeasurement (&gEfiCallerIdGuid, NULL, __func__ , 0, 
PERF_FUNCTION_END_ID); \
       } \
     } while (FALSE)

diff --git a/MdePkg/Include/Library/UnitTestLib.h 
b/MdePkg/Include/Library/UnitTestLib.h
index 71c205b1b143..321a310602d7 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__, DEBUG_LINE_NUMBER, 
__FILE__, #Expression)) { \
+  if(!UnitTestAssertTrue ((Expression), __func__, 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__, DEBUG_LINE_NUMBER, 
__FILE__, #Expression)) { \
+  if(!UnitTestAssertFalse ((Expression), __func__, 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__, 
DEBUG_LINE_NUMBER, __FILE__,
#ValueA, #ValueB)) { \
+  if(!UnitTestAssertEqual ((UINT64)(ValueA), (UINT64)(ValueB), __func__, 
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__,
DEBUG_LINE_NUMBER,
__FILE__, #BufferA, #BufferB)) { \
+  if(!UnitTestAssertMemEqual ((VOID *)(UINTN)(BufferA), (VOID 
*)(UINTN)(BufferB), (UINTN)Length, __func__,
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__, DEBUG_LINE_NUMBER, __FILE__,
#ValueA, #ValueB)) { \
+  if(!UnitTestAssertNotEqual ((UINT64)(ValueA), (UINT64)(ValueB), __func__, 
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__, DEBUG_LINE_NUMBER, 
__FILE__, #Status)) { \
+  if(!UnitTestAssertNotEfiError ((Status), __func__, 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__, 
DEBUG_LINE_NUMBER, __FILE__, #Status)) { \
+  if(!UnitTestAssertStatusEqual ((Status), (Expected), __func__, 
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__, DEBUG_LINE_NUMBER, 
__FILE__, #Pointer)) { \
+  if(!UnitTestAssertNotNull ((Pointer), __func__, DEBUG_LINE_NUMBER, __FILE__, 
#Pointer)) { \
       return UNIT_TEST_ERROR_TEST_FAILED;                                      
                   \
     }

@@ -482,7 +482,7 @@ extern BASE_LIBRARY_JUMP_BUFFER  
*gUnitTestExpectAssertFailureJumpBuffer;
         }                                                                \
         if (!UnitTestExpectAssertFailure (                               \
                UnitTestJumpStatus,                                       \
-             __FUNCTION__, DEBUG_LINE_NUMBER, __FILE__,                \
+             __func__, DEBUG_LINE_NUMBER, __FILE__,                \
                #FunctionCall, Status)) {                                 \
           return UNIT_TEST_ERROR_TEST_FAILED;                            \
         }                                                                \
diff --git a/MdePkg/Library/BaseCacheMaintenanceLib/LoongArchCache.c
b/MdePkg/Library/BaseCacheMaintenanceLib/LoongArchCache.c
index 4c8773278c3c..617b0f4218b8 100644
--- a/MdePkg/Library/BaseCacheMaintenanceLib/LoongArchCache.c
+++ b/MdePkg/Library/BaseCacheMaintenanceLib/LoongArchCache.c
@@ -100,7 +100,7 @@ WriteBackInvalidateDataCache (
     VOID
     )
   {
-  DEBUG ((DEBUG_ERROR, "%a: Not currently implemented on LoongArch.\n", 
__FUNCTION__));
+  DEBUG ((DEBUG_ERROR, "%a: Not currently implemented on LoongArch.\n", 
__func__));
   }

   /**
@@ -136,7 +136,7 @@ WriteBackInvalidateDataCacheRange (
     IN      UINTN  Length
     )
   {
-  DEBUG ((DEBUG_ERROR, "%a: Not currently implemented on LoongArch.\n", 
__FUNCTION__));
+  DEBUG ((DEBUG_ERROR, "%a: Not currently implemented on LoongArch.\n", 
__func__));
     return Address;
   }

@@ -191,7 +191,7 @@ WriteBackDataCacheRange (
     IN      UINTN  Length
     )
   {
-  DEBUG ((DEBUG_ERROR, "%a: Not currently implemented on LoongArch.\n", 
__FUNCTION__));
+  DEBUG ((DEBUG_ERROR, "%a: Not currently implemented on LoongArch.\n", 
__func__));
     return Address;
   }

diff --git a/MdePkg/Library/BaseCacheMaintenanceLib/RiscVCache.c
b/MdePkg/Library/BaseCacheMaintenanceLib/RiscVCache.c
index 67a3387ff3c6..bb26fe013d8b 100644
--- a/MdePkg/Library/BaseCacheMaintenanceLib/RiscVCache.c
+++ b/MdePkg/Library/BaseCacheMaintenanceLib/RiscVCache.c
@@ -76,7 +76,7 @@ InvalidateInstructionCacheRange (
     IN UINTN  Length
     )
   {
-  DEBUG ((DEBUG_ERROR, "%a:RISC-V unsupported function.\n", __FUNCTION__));
+  DEBUG ((DEBUG_ERROR, "%a:RISC-V unsupported function.\n", __func__));
     return Address;
   }

@@ -96,7 +96,7 @@ WriteBackInvalidateDataCache (
     VOID
     )
   {
-  DEBUG ((DEBUG_ERROR, "%a:RISC-V unsupported function.\n", __FUNCTION__));
+  DEBUG ((DEBUG_ERROR, "%a:RISC-V unsupported function.\n", __func__));
   }

   /**
@@ -132,7 +132,7 @@ WriteBackInvalidateDataCacheRange (
     IN      UINTN  Length
     )
   {
-  DEBUG ((DEBUG_ERROR, "%a:RISC-V unsupported function.\n", __FUNCTION__));
+  DEBUG ((DEBUG_ERROR, "%a:RISC-V unsupported function.\n", __func__));
     return Address;
   }

@@ -152,7 +152,7 @@ WriteBackDataCache (
     VOID
     )
   {
-  DEBUG ((DEBUG_ERROR, "%a:RISC-V unsupported function.\n", __FUNCTION__));
+  DEBUG ((DEBUG_ERROR, "%a:RISC-V unsupported function.\n", __func__));
   }

   /**
@@ -187,7 +187,7 @@ WriteBackDataCacheRange (
     IN      UINTN  Length
     )
   {
-  DEBUG ((DEBUG_ERROR, "%a:RISC-V unsupported function.\n", __FUNCTION__));
+  DEBUG ((DEBUG_ERROR, "%a:RISC-V unsupported function.\n", __func__));
     return Address;
   }

@@ -245,6 +245,6 @@ InvalidateDataCacheRange (
     IN      UINTN  Length
     )
   {
-  DEBUG ((DEBUG_ERROR, "%a:RISC-V unsupported function.\n", __FUNCTION__));
+  DEBUG ((DEBUG_ERROR, "%a:RISC-V unsupported function.\n", __func__));
     return Address;
   }
diff --git a/MdePkg/Library/BaseLib/SafeString.c 
b/MdePkg/Library/BaseLib/SafeString.c
index b75b33381732..954d3f8c8988 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__, DEBUG_LINE_NUMBER, __FUNCTION__, DEBUG_EXPRESSION_STRING 
(Expression), Status)); \
+        __FILE__, DEBUG_LINE_NUMBER, __func__, DEBUG_EXPRESSION_STRING 
(Expression), Status)); \
         return Status; \
       } \
     } while (FALSE)
diff --git 
a/MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.c
b/MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.c
index f47301de8982..a23113f9c91d 100644
--- 
a/MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.c
+++ 
b/MdePkg/Library/BaseOrderedCollectionRedBlackTreeLib/BaseOrderedCollectionRedBlackTreeLib.c
@@ -1416,7 +1416,7 @@ RedBlackTreeValidate (
     CONST RED_BLACK_TREE_NODE  *Last;
     CONST RED_BLACK_TREE_NODE  *Node;

-  DEBUG ((DEBUG_VERBOSE, "%a: Tree=%p\n", __FUNCTION__, Tree));
+  DEBUG ((DEBUG_VERBOSE, "%a: Tree=%p\n", __func__, Tree));

     //
     // property #5
@@ -1459,7 +1459,7 @@ RedBlackTreeValidate (
     DEBUG ((
       DEBUG_VERBOSE,
       "%a: Tree=%p BlackHeight=%Ld Count=%Ld\n",
-    __FUNCTION__,
+    __func__,
       Tree,
       (INT64)BlackHeight,
       (INT64)ForwardCount
diff --git a/MdePkg/Library/DxeRngLib/DxeRngLib.c 
b/MdePkg/Library/DxeRngLib/DxeRngLib.c
index 82129aa44598..46aea515924f 100644
--- a/MdePkg/Library/DxeRngLib/DxeRngLib.c
+++ b/MdePkg/Library/DxeRngLib/DxeRngLib.c
@@ -37,43 +37,43 @@ GenerateRandomNumberViaNist800Algorithm (
     RngProtocol = NULL;

     if (Buffer == NULL) {
-    DEBUG ((DEBUG_ERROR, "%a: Buffer == NULL.\n", __FUNCTION__));
+    DEBUG ((DEBUG_ERROR, "%a: Buffer == NULL.\n", __func__));
       return EFI_INVALID_PARAMETER;
     }

     Status = gBS->LocateProtocol (&gEfiRngProtocolGuid, NULL, (VOID 
**)&RngProtocol);
     if (EFI_ERROR (Status) || (RngProtocol == NULL)) {
-    DEBUG ((DEBUG_ERROR, "%a: Could not locate RNG prototocol, Status = %r\n", 
__FUNCTION__, Status));
+    DEBUG ((DEBUG_ERROR, "%a: Could not locate RNG prototocol, Status = %r\n", 
__func__, Status));
       return Status;
     }

     Status = RngProtocol->GetRNG (RngProtocol, 
&gEfiRngAlgorithmSp80090Ctr256Guid, BufferSize, Buffer);
-  DEBUG ((DEBUG_INFO, "%a: GetRNG algorithm CTR-256 - Status = %r\n", 
__FUNCTION__, Status));
+  DEBUG ((DEBUG_INFO, "%a: GetRNG algorithm CTR-256 - Status = %r\n", 
__func__, Status));
     if (!EFI_ERROR (Status)) {
       return Status;
     }

     Status = RngProtocol->GetRNG (RngProtocol, 
&gEfiRngAlgorithmSp80090Hmac256Guid, BufferSize, Buffer);
-  DEBUG ((DEBUG_INFO, "%a: GetRNG algorithm HMAC-256 - Status = %r\n", 
__FUNCTION__, Status));
+  DEBUG ((DEBUG_INFO, "%a: GetRNG algorithm HMAC-256 - Status = %r\n", 
__func__, Status));
     if (!EFI_ERROR (Status)) {
       return Status;
     }

     Status = RngProtocol->GetRNG (RngProtocol, 
&gEfiRngAlgorithmSp80090Hash256Guid, BufferSize, Buffer);
-  DEBUG ((DEBUG_INFO, "%a: GetRNG algorithm Hash-256 - Status = %r\n", 
__FUNCTION__, Status));
+  DEBUG ((DEBUG_INFO, "%a: GetRNG algorithm Hash-256 - Status = %r\n", 
__func__, Status));
     if (!EFI_ERROR (Status)) {
       return Status;
     }

     // If all the other methods have failed, use the default method from the 
RngProtocol
     Status = RngProtocol->GetRNG (RngProtocol, NULL, BufferSize, Buffer);
-  DEBUG ((DEBUG_INFO, "%a: GetRNG algorithm Hash-256 - Status = %r\n", 
__FUNCTION__, Status));
+  DEBUG ((DEBUG_INFO, "%a: GetRNG algorithm Hash-256 - Status = %r\n", 
__func__, Status));
     if (!EFI_ERROR (Status)) {
       return Status;
     }

     // If we get to this point, we have failed
-  DEBUG ((DEBUG_ERROR, "%a: GetRNG() failed, staus = %r\n", __FUNCTION__, 
Status));
+  DEBUG ((DEBUG_ERROR, "%a: GetRNG() failed, staus = %r\n", __func__, Status));

     return Status;
   }// GenerateRandomNumberViaNist800Algorithm()
--
2.30.2














-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#101337): https://edk2.groups.io/g/devel/message/101337
Mute This Topic: https://groups.io/mt/96855618/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to