On Thu, May 18, 2017 at 6:06 AM, Andrew Fish <[email protected]> wrote: > Sergei, > > We are hitting this too. > > Our temporary work around was to suppress the warning for the libraries via > our platforms DSC file so we did not need to override things in edk2. > > You can override the library build options if you add them to the > [Components] section. > > MdePkg/Library/UefiLib/UefiLib.inf { > <BuildOptions> > XCODE:*_*_*_CC_FLAGS = -Wno-varargs
That would be GCC: *_CLANG38_*_CC_FLAGS at least > } > > Thanks, > > Andrew Fish > >> On May 17, 2017, at 5:26 PM, Sergei Temerkhanov <[email protected]> >> wrote: >> >> On Wed, May 17, 2017 at 6:30 PM, Gao, Liming <[email protected]> wrote: >>> Sergey: >>> Now, VS and GCC don't report such issue. How do you find them? >> >> Clang build for ARM64 revealed it. >> >>> And, this change modifies the function API, does it impact the consumer >>> code? >> >> No changes to the consumer code are needed - integer promotions are >> handled by the compilers. In fact, even the ABI remains the same b/c >> full words are passed as function parameters. >> >> Regards, >> Sergey >> >>> >>> Thanks >>> Liming >>>> -----Original Message----- >>>> From: Sergei Temerkhanov [mailto:[email protected]] >>>> Sent: Tuesday, May 16, 2017 8:11 PM >>>> To: Gao, Liming <[email protected]> >>>> Cc: [email protected] >>>> Subject: Re: [edk2] [PATCH] MdePkg: Fix undefined behavior on variadic >>>> parameters >>>> >>>> On Tue, May 16, 2017 at 8:10 AM, Gao, Liming <[email protected]> wrote: >>>>> Sergey: >>>>> Could you give more detail on the undefined behavior on variadic >>>>> parameters? >>>>> >>>>> I see https://bugzilla.tianocore.org/show_bug.cgi?id=410 describe this >>>>> issues found in the latest CLANG tool chain. Do you find >>>> other tool chain reports it? >>>> >>>> Yes, this is exactly the bug this patch fixes. >>>> >>>> As per the C99 standard: >>>> "The parameter parmN is the identifier of the rightmost parameter in >>>> the variable parameter list in the function definition (the one just >>>> before the , ...). If the parameter parmN is declared with the >>>> register storage class, with a function or array type, or with a type >>>> that is not compatible with the type that results after application of >>>> the default argument promotions, the behavior is undefined." >>>> >>>> That's exactly the case here since BOOLEAN is a typedef for unsigned >>>> char. It undergoes a promotion to an unsigned int which is not a >>>> compatible type for unsigned char. Correct me if I'm wrong. >>>> >>>> Regards, >>>> Sergey >>>> >>>>> >>>>> Thanks >>>>> Liming >>>>>> -----Original Message----- >>>>>> From: edk2-devel [mailto:[email protected]] On Behalf Of >>>>>> Sergey Temerkhanov >>>>>> Sent: Tuesday, May 16, 2017 10:57 AM >>>>>> To: [email protected] >>>>>> Subject: [edk2] [PATCH] MdePkg: Fix undefined behavior on variadic >>>>>> parameters >>>>>> >>>>>> Fix undefined behavior by avoiding parameter type promotion >>>>>> >>>>>> Signed-off-by: Sergey Temerkhanov <[email protected]> >>>>>> --- >>>>>> MdePkg/Include/Library/UefiLib.h | 2 +- >>>>>> MdePkg/Library/UefiLib/UefiLib.c | 2 +- >>>>>> 2 files changed, 2 insertions(+), 2 deletions(-) >>>>>> >>>>>> diff --git a/MdePkg/Include/Library/UefiLib.h >>>>>> b/MdePkg/Include/Library/UefiLib.h >>>>>> index 0b14792..4e4697c 100644 >>>>>> --- a/MdePkg/Include/Library/UefiLib.h >>>>>> +++ b/MdePkg/Include/Library/UefiLib.h >>>>>> @@ -818,7 +818,7 @@ CHAR8 * >>>>>> EFIAPI >>>>>> GetBestLanguage ( >>>>>> IN CONST CHAR8 *SupportedLanguages, >>>>>> - IN BOOLEAN Iso639Language, >>>>>> + IN UINTN Iso639Language, >>>>>> ... >>>>>> ); >>>>>> >>>>>> diff --git a/MdePkg/Library/UefiLib/UefiLib.c >>>>>> b/MdePkg/Library/UefiLib/UefiLib.c >>>>>> index a7eee01..74528ec 100644 >>>>>> --- a/MdePkg/Library/UefiLib/UefiLib.c >>>>>> +++ b/MdePkg/Library/UefiLib/UefiLib.c >>>>>> @@ -1514,7 +1514,7 @@ CHAR8 * >>>>>> EFIAPI >>>>>> GetBestLanguage ( >>>>>> IN CONST CHAR8 *SupportedLanguages, >>>>>> - IN BOOLEAN Iso639Language, >>>>>> + IN UINTN Iso639Language, >>>>>> ... >>>>>> ) >>>>>> { >>>>>> -- >>>>>> 2.7.4 >>>>>> >>>>>> _______________________________________________ >>>>>> edk2-devel mailing list >>>>>> [email protected] >>>>>> https://lists.01.org/mailman/listinfo/edk2-devel >> _______________________________________________ >> edk2-devel mailing list >> [email protected] >> https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

