[PATCH v2 3/3] stackchk: Fixed 32bit pointers

Stephen Clark stephen.clark at oarcorp.com
Thu Mar 18 17:33:10 UTC 2021


Using 32bit types like uint32_t for pointers creates issues on 64 bit
architectures like AArch64. Replaced occurrences of these with uintptr_t,
which will work for both 32 and 64 bit architectures.
---
 cpukit/libmisc/stackchk/check.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/cpukit/libmisc/stackchk/check.c b/cpukit/libmisc/stackchk/check.c
index ab08155c92..a2b63345d9 100644
--- a/cpukit/libmisc/stackchk/check.c
+++ b/cpukit/libmisc/stackchk/check.c
@@ -447,12 +447,13 @@ static bool Stack_check_Dump_threads_usage(
 {
   char                 name[ 22 ];
   const rtems_printer *printer;
+  uintptr_t sp = _CPU_Context_Get_SP( &the_thread->Registers );
 
   printer = arg;
   _Thread_Get_name( the_thread, name, sizeof( name ) );
   Stack_check_Dump_stack_usage(
     &the_thread->Start.Initial_stack,
-    (void *) _CPU_Context_Get_SP( &the_thread->Registers ),
+    (void *) sp,
     name,
     the_thread->Object.id,
     printer
-- 
2.27.0



More information about the devel mailing list