Fix traceMALLOC() allocated bytes (#1089)
* Fix traceMALLOC() memory count is inaccurate. (#1078)
Modify xWantedSize to the size of a free block when not split blocks.
Ensure that the sizes within traceMALLOC() and traceFREE() macros are equal.
* Create a new variable xAllocatedBlockSize for traceMALLOC()
---------
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
diff --git a/portable/ARMv8M/secure/heap/secure_heap.c b/portable/ARMv8M/secure/heap/secure_heap.c
index 4fa6a2f..55722d4 100644
--- a/portable/ARMv8M/secure/heap/secure_heap.c
+++ b/portable/ARMv8M/secure/heap/secure_heap.c
@@ -256,6 +256,7 @@
BlockLink_t * pxNewBlockLink;
void * pvReturn = NULL;
size_t xAdditionalRequiredSize;
+ size_t xAllocatedBlockSize = 0;
/* If this is the first call to malloc then the heap will require
* initialisation to setup the list of free blocks. */
@@ -374,6 +375,8 @@
mtCOVERAGE_TEST_MARKER();
}
+ xAllocatedBlockSize = pxBlock->xBlockSize;
+
/* The block is being returned - it is allocated and owned by
* the application and has no "next" block. */
secureheapALLOCATE_BLOCK( pxBlock );
@@ -394,7 +397,10 @@
mtCOVERAGE_TEST_MARKER();
}
- traceMALLOC( pvReturn, xWantedSize );
+ traceMALLOC( pvReturn, xAllocatedBlockSize );
+
+ /* Prevent compiler warnings when trace macros are not used. */
+ ( void ) xAllocatedBlockSize;
#if ( secureconfigUSE_MALLOC_FAILED_HOOK == 1 )
{
diff --git a/portable/GCC/ARM_CM23/secure/secure_heap.c b/portable/GCC/ARM_CM23/secure/secure_heap.c
index 4fa6a2f..55722d4 100644
--- a/portable/GCC/ARM_CM23/secure/secure_heap.c
+++ b/portable/GCC/ARM_CM23/secure/secure_heap.c
@@ -256,6 +256,7 @@
BlockLink_t * pxNewBlockLink;
void * pvReturn = NULL;
size_t xAdditionalRequiredSize;
+ size_t xAllocatedBlockSize = 0;
/* If this is the first call to malloc then the heap will require
* initialisation to setup the list of free blocks. */
@@ -374,6 +375,8 @@
mtCOVERAGE_TEST_MARKER();
}
+ xAllocatedBlockSize = pxBlock->xBlockSize;
+
/* The block is being returned - it is allocated and owned by
* the application and has no "next" block. */
secureheapALLOCATE_BLOCK( pxBlock );
@@ -394,7 +397,10 @@
mtCOVERAGE_TEST_MARKER();
}
- traceMALLOC( pvReturn, xWantedSize );
+ traceMALLOC( pvReturn, xAllocatedBlockSize );
+
+ /* Prevent compiler warnings when trace macros are not used. */
+ ( void ) xAllocatedBlockSize;
#if ( secureconfigUSE_MALLOC_FAILED_HOOK == 1 )
{
diff --git a/portable/GCC/ARM_CM33/secure/secure_heap.c b/portable/GCC/ARM_CM33/secure/secure_heap.c
index 4fa6a2f..55722d4 100644
--- a/portable/GCC/ARM_CM33/secure/secure_heap.c
+++ b/portable/GCC/ARM_CM33/secure/secure_heap.c
@@ -256,6 +256,7 @@
BlockLink_t * pxNewBlockLink;
void * pvReturn = NULL;
size_t xAdditionalRequiredSize;
+ size_t xAllocatedBlockSize = 0;
/* If this is the first call to malloc then the heap will require
* initialisation to setup the list of free blocks. */
@@ -374,6 +375,8 @@
mtCOVERAGE_TEST_MARKER();
}
+ xAllocatedBlockSize = pxBlock->xBlockSize;
+
/* The block is being returned - it is allocated and owned by
* the application and has no "next" block. */
secureheapALLOCATE_BLOCK( pxBlock );
@@ -394,7 +397,10 @@
mtCOVERAGE_TEST_MARKER();
}
- traceMALLOC( pvReturn, xWantedSize );
+ traceMALLOC( pvReturn, xAllocatedBlockSize );
+
+ /* Prevent compiler warnings when trace macros are not used. */
+ ( void ) xAllocatedBlockSize;
#if ( secureconfigUSE_MALLOC_FAILED_HOOK == 1 )
{
diff --git a/portable/GCC/ARM_CM35P/secure/secure_heap.c b/portable/GCC/ARM_CM35P/secure/secure_heap.c
index 4fa6a2f..55722d4 100644
--- a/portable/GCC/ARM_CM35P/secure/secure_heap.c
+++ b/portable/GCC/ARM_CM35P/secure/secure_heap.c
@@ -256,6 +256,7 @@
BlockLink_t * pxNewBlockLink;
void * pvReturn = NULL;
size_t xAdditionalRequiredSize;
+ size_t xAllocatedBlockSize = 0;
/* If this is the first call to malloc then the heap will require
* initialisation to setup the list of free blocks. */
@@ -374,6 +375,8 @@
mtCOVERAGE_TEST_MARKER();
}
+ xAllocatedBlockSize = pxBlock->xBlockSize;
+
/* The block is being returned - it is allocated and owned by
* the application and has no "next" block. */
secureheapALLOCATE_BLOCK( pxBlock );
@@ -394,7 +397,10 @@
mtCOVERAGE_TEST_MARKER();
}
- traceMALLOC( pvReturn, xWantedSize );
+ traceMALLOC( pvReturn, xAllocatedBlockSize );
+
+ /* Prevent compiler warnings when trace macros are not used. */
+ ( void ) xAllocatedBlockSize;
#if ( secureconfigUSE_MALLOC_FAILED_HOOK == 1 )
{
diff --git a/portable/GCC/ARM_CM55/secure/secure_heap.c b/portable/GCC/ARM_CM55/secure/secure_heap.c
index 4fa6a2f..55722d4 100644
--- a/portable/GCC/ARM_CM55/secure/secure_heap.c
+++ b/portable/GCC/ARM_CM55/secure/secure_heap.c
@@ -256,6 +256,7 @@
BlockLink_t * pxNewBlockLink;
void * pvReturn = NULL;
size_t xAdditionalRequiredSize;
+ size_t xAllocatedBlockSize = 0;
/* If this is the first call to malloc then the heap will require
* initialisation to setup the list of free blocks. */
@@ -374,6 +375,8 @@
mtCOVERAGE_TEST_MARKER();
}
+ xAllocatedBlockSize = pxBlock->xBlockSize;
+
/* The block is being returned - it is allocated and owned by
* the application and has no "next" block. */
secureheapALLOCATE_BLOCK( pxBlock );
@@ -394,7 +397,10 @@
mtCOVERAGE_TEST_MARKER();
}
- traceMALLOC( pvReturn, xWantedSize );
+ traceMALLOC( pvReturn, xAllocatedBlockSize );
+
+ /* Prevent compiler warnings when trace macros are not used. */
+ ( void ) xAllocatedBlockSize;
#if ( secureconfigUSE_MALLOC_FAILED_HOOK == 1 )
{
diff --git a/portable/GCC/ARM_CM85/secure/secure_heap.c b/portable/GCC/ARM_CM85/secure/secure_heap.c
index 4fa6a2f..55722d4 100644
--- a/portable/GCC/ARM_CM85/secure/secure_heap.c
+++ b/portable/GCC/ARM_CM85/secure/secure_heap.c
@@ -256,6 +256,7 @@
BlockLink_t * pxNewBlockLink;
void * pvReturn = NULL;
size_t xAdditionalRequiredSize;
+ size_t xAllocatedBlockSize = 0;
/* If this is the first call to malloc then the heap will require
* initialisation to setup the list of free blocks. */
@@ -374,6 +375,8 @@
mtCOVERAGE_TEST_MARKER();
}
+ xAllocatedBlockSize = pxBlock->xBlockSize;
+
/* The block is being returned - it is allocated and owned by
* the application and has no "next" block. */
secureheapALLOCATE_BLOCK( pxBlock );
@@ -394,7 +397,10 @@
mtCOVERAGE_TEST_MARKER();
}
- traceMALLOC( pvReturn, xWantedSize );
+ traceMALLOC( pvReturn, xAllocatedBlockSize );
+
+ /* Prevent compiler warnings when trace macros are not used. */
+ ( void ) xAllocatedBlockSize;
#if ( secureconfigUSE_MALLOC_FAILED_HOOK == 1 )
{
diff --git a/portable/IAR/ARM_CM23/secure/secure_heap.c b/portable/IAR/ARM_CM23/secure/secure_heap.c
index 4fa6a2f..55722d4 100644
--- a/portable/IAR/ARM_CM23/secure/secure_heap.c
+++ b/portable/IAR/ARM_CM23/secure/secure_heap.c
@@ -256,6 +256,7 @@
BlockLink_t * pxNewBlockLink;
void * pvReturn = NULL;
size_t xAdditionalRequiredSize;
+ size_t xAllocatedBlockSize = 0;
/* If this is the first call to malloc then the heap will require
* initialisation to setup the list of free blocks. */
@@ -374,6 +375,8 @@
mtCOVERAGE_TEST_MARKER();
}
+ xAllocatedBlockSize = pxBlock->xBlockSize;
+
/* The block is being returned - it is allocated and owned by
* the application and has no "next" block. */
secureheapALLOCATE_BLOCK( pxBlock );
@@ -394,7 +397,10 @@
mtCOVERAGE_TEST_MARKER();
}
- traceMALLOC( pvReturn, xWantedSize );
+ traceMALLOC( pvReturn, xAllocatedBlockSize );
+
+ /* Prevent compiler warnings when trace macros are not used. */
+ ( void ) xAllocatedBlockSize;
#if ( secureconfigUSE_MALLOC_FAILED_HOOK == 1 )
{
diff --git a/portable/IAR/ARM_CM33/secure/secure_heap.c b/portable/IAR/ARM_CM33/secure/secure_heap.c
index 4fa6a2f..55722d4 100644
--- a/portable/IAR/ARM_CM33/secure/secure_heap.c
+++ b/portable/IAR/ARM_CM33/secure/secure_heap.c
@@ -256,6 +256,7 @@
BlockLink_t * pxNewBlockLink;
void * pvReturn = NULL;
size_t xAdditionalRequiredSize;
+ size_t xAllocatedBlockSize = 0;
/* If this is the first call to malloc then the heap will require
* initialisation to setup the list of free blocks. */
@@ -374,6 +375,8 @@
mtCOVERAGE_TEST_MARKER();
}
+ xAllocatedBlockSize = pxBlock->xBlockSize;
+
/* The block is being returned - it is allocated and owned by
* the application and has no "next" block. */
secureheapALLOCATE_BLOCK( pxBlock );
@@ -394,7 +397,10 @@
mtCOVERAGE_TEST_MARKER();
}
- traceMALLOC( pvReturn, xWantedSize );
+ traceMALLOC( pvReturn, xAllocatedBlockSize );
+
+ /* Prevent compiler warnings when trace macros are not used. */
+ ( void ) xAllocatedBlockSize;
#if ( secureconfigUSE_MALLOC_FAILED_HOOK == 1 )
{
diff --git a/portable/IAR/ARM_CM35P/secure/secure_heap.c b/portable/IAR/ARM_CM35P/secure/secure_heap.c
index 4fa6a2f..55722d4 100644
--- a/portable/IAR/ARM_CM35P/secure/secure_heap.c
+++ b/portable/IAR/ARM_CM35P/secure/secure_heap.c
@@ -256,6 +256,7 @@
BlockLink_t * pxNewBlockLink;
void * pvReturn = NULL;
size_t xAdditionalRequiredSize;
+ size_t xAllocatedBlockSize = 0;
/* If this is the first call to malloc then the heap will require
* initialisation to setup the list of free blocks. */
@@ -374,6 +375,8 @@
mtCOVERAGE_TEST_MARKER();
}
+ xAllocatedBlockSize = pxBlock->xBlockSize;
+
/* The block is being returned - it is allocated and owned by
* the application and has no "next" block. */
secureheapALLOCATE_BLOCK( pxBlock );
@@ -394,7 +397,10 @@
mtCOVERAGE_TEST_MARKER();
}
- traceMALLOC( pvReturn, xWantedSize );
+ traceMALLOC( pvReturn, xAllocatedBlockSize );
+
+ /* Prevent compiler warnings when trace macros are not used. */
+ ( void ) xAllocatedBlockSize;
#if ( secureconfigUSE_MALLOC_FAILED_HOOK == 1 )
{
diff --git a/portable/IAR/ARM_CM55/secure/secure_heap.c b/portable/IAR/ARM_CM55/secure/secure_heap.c
index 4fa6a2f..55722d4 100644
--- a/portable/IAR/ARM_CM55/secure/secure_heap.c
+++ b/portable/IAR/ARM_CM55/secure/secure_heap.c
@@ -256,6 +256,7 @@
BlockLink_t * pxNewBlockLink;
void * pvReturn = NULL;
size_t xAdditionalRequiredSize;
+ size_t xAllocatedBlockSize = 0;
/* If this is the first call to malloc then the heap will require
* initialisation to setup the list of free blocks. */
@@ -374,6 +375,8 @@
mtCOVERAGE_TEST_MARKER();
}
+ xAllocatedBlockSize = pxBlock->xBlockSize;
+
/* The block is being returned - it is allocated and owned by
* the application and has no "next" block. */
secureheapALLOCATE_BLOCK( pxBlock );
@@ -394,7 +397,10 @@
mtCOVERAGE_TEST_MARKER();
}
- traceMALLOC( pvReturn, xWantedSize );
+ traceMALLOC( pvReturn, xAllocatedBlockSize );
+
+ /* Prevent compiler warnings when trace macros are not used. */
+ ( void ) xAllocatedBlockSize;
#if ( secureconfigUSE_MALLOC_FAILED_HOOK == 1 )
{
diff --git a/portable/IAR/ARM_CM85/secure/secure_heap.c b/portable/IAR/ARM_CM85/secure/secure_heap.c
index 4fa6a2f..55722d4 100644
--- a/portable/IAR/ARM_CM85/secure/secure_heap.c
+++ b/portable/IAR/ARM_CM85/secure/secure_heap.c
@@ -256,6 +256,7 @@
BlockLink_t * pxNewBlockLink;
void * pvReturn = NULL;
size_t xAdditionalRequiredSize;
+ size_t xAllocatedBlockSize = 0;
/* If this is the first call to malloc then the heap will require
* initialisation to setup the list of free blocks. */
@@ -374,6 +375,8 @@
mtCOVERAGE_TEST_MARKER();
}
+ xAllocatedBlockSize = pxBlock->xBlockSize;
+
/* The block is being returned - it is allocated and owned by
* the application and has no "next" block. */
secureheapALLOCATE_BLOCK( pxBlock );
@@ -394,7 +397,10 @@
mtCOVERAGE_TEST_MARKER();
}
- traceMALLOC( pvReturn, xWantedSize );
+ traceMALLOC( pvReturn, xAllocatedBlockSize );
+
+ /* Prevent compiler warnings when trace macros are not used. */
+ ( void ) xAllocatedBlockSize;
#if ( secureconfigUSE_MALLOC_FAILED_HOOK == 1 )
{
diff --git a/portable/MemMang/heap_2.c b/portable/MemMang/heap_2.c
index c1b35b9..a99a74d 100644
--- a/portable/MemMang/heap_2.c
+++ b/portable/MemMang/heap_2.c
@@ -160,6 +160,7 @@
BlockLink_t * pxNewBlockLink;
void * pvReturn = NULL;
size_t xAdditionalRequiredSize;
+ size_t xAllocatedBlockSize = 0;
if( xWantedSize > 0 )
{
@@ -261,6 +262,8 @@
xFreeBytesRemaining -= pxBlock->xBlockSize;
+ xAllocatedBlockSize = pxBlock->xBlockSize;
+
/* The block is being returned - it is allocated and owned
* by the application and has no "next" block. */
heapALLOCATE_BLOCK( pxBlock );
@@ -269,7 +272,10 @@
}
}
- traceMALLOC( pvReturn, xWantedSize );
+ traceMALLOC( pvReturn, xAllocatedBlockSize );
+
+ /* Prevent compiler warnings when trace macros are not used. */
+ ( void ) xAllocatedBlockSize;
}
( void ) xTaskResumeAll();
diff --git a/portable/MemMang/heap_4.c b/portable/MemMang/heap_4.c
index 71b6a94..fe15654 100644
--- a/portable/MemMang/heap_4.c
+++ b/portable/MemMang/heap_4.c
@@ -177,6 +177,7 @@
BlockLink_t * pxNewBlockLink;
void * pvReturn = NULL;
size_t xAdditionalRequiredSize;
+ size_t xAllocatedBlockSize = 0;
if( xWantedSize > 0 )
{
@@ -302,6 +303,8 @@
mtCOVERAGE_TEST_MARKER();
}
+ xAllocatedBlockSize = pxBlock->xBlockSize;
+
/* The block is being returned - it is allocated and owned
* by the application and has no "next" block. */
heapALLOCATE_BLOCK( pxBlock );
@@ -323,7 +326,10 @@
mtCOVERAGE_TEST_MARKER();
}
- traceMALLOC( pvReturn, xWantedSize );
+ traceMALLOC( pvReturn, xAllocatedBlockSize );
+
+ /* Prevent compiler warnings when trace macros are not used. */
+ ( void ) xAllocatedBlockSize;
}
( void ) xTaskResumeAll();
diff --git a/portable/MemMang/heap_5.c b/portable/MemMang/heap_5.c
index bb33bcf..e0c5666 100644
--- a/portable/MemMang/heap_5.c
+++ b/portable/MemMang/heap_5.c
@@ -212,6 +212,7 @@
BlockLink_t * pxNewBlockLink;
void * pvReturn = NULL;
size_t xAdditionalRequiredSize;
+ size_t xAllocatedBlockSize = 0;
/* The heap must be initialised before the first call to
* pvPortMalloc(). */
@@ -330,6 +331,8 @@
mtCOVERAGE_TEST_MARKER();
}
+ xAllocatedBlockSize = pxBlock->xBlockSize;
+
/* The block is being returned - it is allocated and owned
* by the application and has no "next" block. */
heapALLOCATE_BLOCK( pxBlock );
@@ -351,7 +354,10 @@
mtCOVERAGE_TEST_MARKER();
}
- traceMALLOC( pvReturn, xWantedSize );
+ traceMALLOC( pvReturn, xAllocatedBlockSize );
+
+ /* Prevent compiler warnings when trace macros are not used. */
+ ( void ) xAllocatedBlockSize;
}
( void ) xTaskResumeAll();