Is this warning reported on ARM arch? In Base.h, VA_START is defined as below for ARM arch. Do you mean VS2017 report the warning for below macro? If so, can you propose the change in VA_START macro to fix this warning, then doesn't need to update consumer source code.
#define VA_START(Marker, Parameter) __va_start (&Marker, &Parameter, _INT_SIZE_OF (Parameter), __alignof(Parameter), &Parameter) > -----Original Message----- > From: Sami Mujawar [mailto:sami.muja...@arm.com] > Sent: Friday, August 23, 2019 6:56 PM > To: devel@edk2.groups.io > Cc: Sami Mujawar <sami.muja...@arm.com>; alexei.fedo...@arm.com; > ard.biesheu...@linaro.org; leif.lindh...@linaro.org; > matteo.carl...@arm.com; Kinney, Michael D <michael.d.kin...@intel.com>; Gao, > Liming <liming....@intel.com>; n...@arm.com > Subject: [PATCH v1 19/19] MdePkg: Initialise VA_LIST variables before use > > 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 (#46304): https://edk2.groups.io/g/devel/message/46304 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] -=-=-=-=-=-=-=-=-=-=-=-