The VS2017 compiler reports 'warning C6001: Using uninitialized memory 'Marker'.' for VA_LIST variables.
To fix this issue declare a VA_LIST global variable and use this to initialise VA_LIST variables before use. Note: The VA_LIST cannot be assigned a NULL value because some compilers define VA_LIST to be a structure. Signed-off-by: Sami Mujawar <sami.muja...@arm.com> --- MdePkg/Library/BaseLib/SwitchStack.c | 9 +++++++++ MdePkg/Library/BasePrintLib/PrintLib.c | 5 +++++ MdePkg/Library/BasePrintLib/PrintLibInternal.c | 9 +++++++++ 3 files changed, 23 insertions(+) diff --git a/MdePkg/Library/BaseLib/SwitchStack.c b/MdePkg/Library/BaseLib/SwitchStack.c index cb9f69f1eaceba690b48e9ca6b8a9af2e348bddd..e1bb524819b3de3521c5461ce681aa3a6c186f2c 100644 --- a/MdePkg/Library/BaseLib/SwitchStack.c +++ b/MdePkg/Library/BaseLib/SwitchStack.c @@ -2,12 +2,20 @@ Switch Stack functions. Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> + Copyright (c) 2019, ARM Ltd. All rights reserved.<BR> SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include "BaseLibInternals.h" +// +// Declare a VA_LIST global variable that is used to initialise VA_LIST +// variables before use. The VA_LIST cannot be assigned a NULL value +// because some compilers define VA_LIST to be a structure. +// +STATIC VA_LIST gNullVaList; + /** Transfers control to a function starting with a new stack. @@ -57,6 +65,7 @@ SwitchStack ( // ASSERT (((UINTN)NewStack & (CPU_STACK_ALIGNMENT - 1)) == 0); + Marker = gNullVaList; VA_START (Marker, NewStack); InternalSwitchStack (EntryPoint, Context1, Context2, NewStack, Marker); diff --git a/MdePkg/Library/BasePrintLib/PrintLib.c b/MdePkg/Library/BasePrintLib/PrintLib.c index af771652e4b0aebd616973ba1089ae5bc2b6f0c0..67c5f3dd547cea5447075ef88d697879883ba5ab 100644 --- a/MdePkg/Library/BasePrintLib/PrintLib.c +++ b/MdePkg/Library/BasePrintLib/PrintLib.c @@ -3,6 +3,7 @@ Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR> + Copyright (c) 2019, ARM Ltd. All rights reserved.<BR> SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -177,6 +178,7 @@ UnicodeSPrint ( VA_LIST Marker; UINTN NumberOfPrinted; + Marker = gNullVaList; VA_START (Marker, FormatString); NumberOfPrinted = UnicodeVSPrint (StartOfBuffer, BufferSize, FormatString, Marker); VA_END (Marker); @@ -337,6 +339,7 @@ UnicodeSPrintAsciiFormat ( VA_LIST Marker; UINTN NumberOfPrinted; + Marker = gNullVaList; VA_START (Marker, FormatString); NumberOfPrinted = UnicodeVSPrintAsciiFormat (StartOfBuffer, BufferSize, FormatString, Marker); VA_END (Marker); @@ -614,6 +617,7 @@ AsciiSPrint ( VA_LIST Marker; UINTN NumberOfPrinted; + Marker = gNullVaList; VA_START (Marker, FormatString); NumberOfPrinted = AsciiVSPrint (StartOfBuffer, BufferSize, FormatString, Marker); VA_END (Marker); @@ -774,6 +778,7 @@ AsciiSPrintUnicodeFormat ( VA_LIST Marker; UINTN NumberOfPrinted; + Marker = gNullVaList; VA_START (Marker, FormatString); NumberOfPrinted = AsciiVSPrintUnicodeFormat (StartOfBuffer, BufferSize, FormatString, Marker); VA_END (Marker); diff --git a/MdePkg/Library/BasePrintLib/PrintLibInternal.c b/MdePkg/Library/BasePrintLib/PrintLibInternal.c index b6ec5ac4fbb98982f8ccaf3908c2a91ce583e31e..11392f2a5d12eb059611c3ff77b27b602f9b9a40 100644 --- a/MdePkg/Library/BasePrintLib/PrintLibInternal.c +++ b/MdePkg/Library/BasePrintLib/PrintLibInternal.c @@ -2,12 +2,20 @@ Print Library internal worker functions. Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> + Copyright (c) 2019, ARM Ltd. All rights reserved.<BR> SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include "PrintLibInternal.h" +// +// Declare a VA_LIST global variable that is used to initialise VA_LIST +// variables before use. The VA_LIST cannot be assigned a NULL value +// because some compilers define VA_LIST to be a structure. +// +extern VA_LIST gNullVaList; + #define WARNING_STATUS_NUMBER 5 #define ERROR_STATUS_NUMBER 33 @@ -1256,6 +1264,7 @@ BasePrintLibSPrint ( VA_LIST Marker; UINTN NumberOfPrinted; + Marker = gNullVaList; VA_START (Marker, FormatString); NumberOfPrinted = BasePrintLibSPrintMarker (StartOfBuffer, BufferSize, Flags, FormatString, Marker, NULL); VA_END (Marker); -- 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)' -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#46280): https://edk2.groups.io/g/devel/message/46280 Mute This Topic: https://groups.io/mt/32999803/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-