Re: [edk2-devel] [PATCH v1 19/19] MdePkg: Initialise VA_LIST variables before use
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 (, , _INT_SIZE_OF (Parameter), __alignof(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 ; alexei.fedo...@arm.com; > ard.biesheu...@linaro.org; leif.lindh...@linaro.org; > matteo.carl...@arm.com; Kinney, Michael D ; Gao, > Liming ; 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 > --- > 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. > + Copyright (c) 2019, ARM Ltd. All rights reserved. >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. >Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved. > + Copyright (c) 2019, ARM Ltd. All rights reserved. >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. > + Copyright (c) 2019, ARM Ltd. All rights reserved. >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
Re: [edk2-devel] [PATCH v1 19/19] MdePkg: Initialise VA_LIST variables before use
Reviewed-by: Alexei Fedorov Alexei From: Sami Mujawar Sent: 23 August 2019 11:55 To: devel@edk2.groups.io Cc: Sami Mujawar ; Alexei Fedorov ; ard.biesheu...@linaro.org ; leif.lindh...@linaro.org ; Matteo Carlini ; michael.d.kin...@intel.com ; liming@intel.com ; nd 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 --- 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. + Copyright (c) 2019, ARM Ltd. All rights reserved. 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. Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved. + Copyright (c) 2019, ARM Ltd. All rights reserved. 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. + Copyright (c) 2019, ARM Ltd. All rights reserved. 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; UINTNNumberOfPrinted; + Marker = gNullVaList; VA_START (Marker, FormatString); NumberOfPrinted = BasePrintLibSPrintMarker (StartOfBuffer, BufferSize, Flags, FormatString, Marker, NULL); VA_END (Marker); -- 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)' IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be
[edk2-devel] [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 --- 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. + Copyright (c) 2019, ARM Ltd. All rights reserved. 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. Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved. + Copyright (c) 2019, ARM Ltd. All rights reserved. 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. + Copyright (c) 2019, ARM Ltd. All rights reserved. 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; UINTNNumberOfPrinted; + 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] -=-=-=-=-=-=-=-=-=-=-=-