From 2185f7d5d7a5650dbcb6a05e9de41f340cd3b865 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Date: Sat, 21 May 2022 12:17:58 +0200 Subject: [PATCH 3/3] debug: use UINT_PTR_T to store stack boundaries GCC12 complains about storing invalid pointers, store them as integers instead. obj/acpiexec ../../../source/components/utilities/utdebug.c ../../../source/components/utilities/utdebug.c: In function 'AcpiUtInitStackPtrTrace': ../../../source/components/utilities/utdebug.c:188:31: error: storing the address of local variable 'CurrentSp' in 'AcpiGbl_EntryStackPointer' [-Werror=dangling-pointer=] 188 | AcpiGbl_EntryStackPointer = &CurrentSp; | ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~ ../../../source/components/utilities/utdebug.c:185:29: note: 'CurrentSp' declared here 185 | ACPI_SIZE CurrentSp; | ^~~~~~~~~ Fixes #771 --- source/components/debugger/dbstats.c | 4 ++-- source/components/utilities/utdebug.c | 6 +++--- source/components/utilities/utinit.c | 2 +- source/include/acglobal.h | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) --- a/source/components/debugger/dbstats.c +++ b/source/components/debugger/dbstats.c @@ -647,8 +647,8 @@ AcpiDbDisplayStatistics ( AcpiGbl_EntryStackPointer, AcpiGbl_LowestStackPointer); AcpiOsPrintf ("\nSubsystem Stack Usage:\n\n"); - AcpiOsPrintf ("Entry Stack Pointer %p\n", AcpiGbl_EntryStackPointer); - AcpiOsPrintf ("Lowest Stack Pointer %p\n", AcpiGbl_LowestStackPointer); + AcpiOsPrintf ("Entry Stack Pointer %p\n", ACPI_TO_POINTER(AcpiGbl_EntryStackPointer)); + AcpiOsPrintf ("Lowest Stack Pointer %p\n", ACPI_TO_POINTER(AcpiGbl_LowestStackPointer)); AcpiOsPrintf ("Stack Use %X (%u)\n", Temp, Temp); AcpiOsPrintf ("Deepest Procedure Nesting %u\n", AcpiGbl_DeepestNesting); #endif --- a/source/components/utilities/utdebug.c +++ b/source/components/utilities/utdebug.c @@ -185,7 +185,7 @@ AcpiUtInitStackPtrTrace ( ACPI_SIZE CurrentSp; - AcpiGbl_EntryStackPointer = &CurrentSp; + AcpiGbl_EntryStackPointer = ACPI_TO_INTEGER(&CurrentSp); } @@ -208,9 +208,9 @@ AcpiUtTrackStackPtr ( ACPI_SIZE CurrentSp; - if (&CurrentSp < AcpiGbl_LowestStackPointer) + if (ACPI_TO_INTEGER(&CurrentSp) < AcpiGbl_LowestStackPointer) { - AcpiGbl_LowestStackPointer = &CurrentSp; + AcpiGbl_LowestStackPointer = ACPI_TO_INTEGER(&CurrentSp); } if (AcpiGbl_NestingLevel > AcpiGbl_DeepestNesting) --- a/source/components/utilities/utinit.c +++ b/source/components/utilities/utinit.c @@ -359,7 +359,7 @@ AcpiUtInitGlobals ( #endif #ifdef ACPI_DEBUG_OUTPUT - AcpiGbl_LowestStackPointer = ACPI_CAST_PTR (ACPI_SIZE, ACPI_SIZE_MAX); + AcpiGbl_LowestStackPointer = ACPI_SIZE_MAX; #endif #ifdef ACPI_DBG_TRACK_ALLOCATIONS --- a/source/include/acglobal.h +++ b/source/include/acglobal.h @@ -332,8 +332,8 @@ extern const ACPI_PREDEFINED_NAMES ACPI_GLOBAL (UINT32, AcpiGbl_CurrentNodeCount); ACPI_GLOBAL (UINT32, AcpiGbl_CurrentNodeSize); ACPI_GLOBAL (UINT32, AcpiGbl_MaxConcurrentNodeCount); -ACPI_GLOBAL (ACPI_SIZE *, AcpiGbl_EntryStackPointer); -ACPI_GLOBAL (ACPI_SIZE *, AcpiGbl_LowestStackPointer); +ACPI_GLOBAL (ACPI_UINTPTR_T, AcpiGbl_EntryStackPointer); +ACPI_GLOBAL (ACPI_UINTPTR_T, AcpiGbl_LowestStackPointer); ACPI_GLOBAL (UINT32, AcpiGbl_DeepestNesting); ACPI_INIT_GLOBAL (UINT32, AcpiGbl_NestingLevel, 0); #endif