On 09/25/17 06:59, Gao, Liming wrote: > Marvin: > My concern is that the fix is an incompatible change. It requires to modify > library API. In fact, this is an undefined behavior. But, current compiler > (VS, GCC and Clang) makes it work. So, I prefer to keep the code as-is, and > disable this warning first. If you find any real issue, we can return back > and figure out the solution.
I think we can draw a parallel here to GetVariable() and GetVariable2(). GetVariable() is now unavailable if DISABLE_NEW_DEPRECATED_INTERFACES is defined. I think the right solution would be to - introduce GetBestLanguage2(), - migrate all the current call sites to GetBestLanguage2() -- I counted 18, and the updates should be easy --, - and then make GetVariable() conditional on not-DISABLE_NEW_DEPRECATED_INTERFACES. CHAR8 * EFIAPI GetBestLanguage2 ( IN CONST CHAR8 *SupportedLanguages, IN INTN Iso639Language, ... ); I don't feel strongly about this question, I just think technically this would be best. CLANG warnings are valuable. Thanks Laszlo >> -----Original Message----- >> From: edk2-devel [mailto:[email protected]] On Behalf Of >> Marvin H?user >> Sent: Friday, September 22, 2017 11:53 PM >> To: [email protected] >> Cc: Gao, Liming <[email protected]> >> Subject: Re: [edk2] [PATCH] BaseTools/Conf: Support LLVM39 and LLVM40 in >> CLANG38 toolchain >> >> Hey, >> >> I just noticed this patch as it recently has been pushed. I found this has >> been a >> reaction to https://bugzilla.tianocore.org/show_bug.cgi?id=410 >> Though as Clang correctly detected, this is Undefined Behavior per the C >> specification, so why was the warning hidden? >> In context of the issue in UefiLib, providing the first element of the VA >> list as a >> prototyped argument, would have solved the issue without UB. >> >> Do you wish such a patch? >> >> Thanks, >> Marvin. >> >>> -----Original Message----- >>> From: edk2-devel [mailto:[email protected]] On Behalf Of >>> Gao, Liming >>> Sent: Monday, August 28, 2017 9:19 AM >>> To: Shi, Steven <[email protected]>; [email protected] >>> Subject: Re: [edk2] [PATCH] BaseTools/Conf: Support LLVM39 and LLVM40 >> in >>> CLANG38 toolchain >>> >>> Reviewed-by: Liming Gao <[email protected]> >>> >>>> -----Original Message----- >>>> From: Shi, Steven >>>> Sent: Wednesday, August 23, 2017 3:01 PM >>>> To: [email protected]; Gao, Liming <[email protected]> >>>> Cc: Zhu, Yonghong <[email protected]>; Shi, Steven >>>> <[email protected]> >>>> Subject: [PATCH] BaseTools/Conf: Support LLVM39 and LLVM40 in >> CLANG38 >>>> toolchain >>>> >>>> From: "Shi, Steven" <[email protected]> >>>> >>>> Add LLVM39 and LLVM40 support in CLANG38 toolchain >>>> >>>> Contributed-under: TianoCore Contribution Agreement 1.0 >>>> Signed-off-by: Steven Shi <[email protected]> >>>> --- >>>> BaseTools/Conf/tools_def.template | 5 +++-- >>>> 1 file changed, 3 insertions(+), 2 deletions(-) >>>> >>>> diff --git a/BaseTools/Conf/tools_def.template >>>> b/BaseTools/Conf/tools_def.template >>>> index 1fa3ca3..2f83341 100755 >>>> --- a/BaseTools/Conf/tools_def.template >>>> +++ b/BaseTools/Conf/tools_def.template >>>> @@ -380,7 +380,8 @@ DEFINE SOURCERY_CYGWIN_TOOLS = >>> /cygdrive/c/Program >>>> Files/CodeSourcery/Sourcery G >>>> # Intel(r) ACPI Compiler from >>>> # https://acpica.org/downloads >>>> # CLANG38 -Linux- Requires: >>>> -# Clang v3.8 or later, LLVMgold plugin and >>>> GNU binutils 2.26 >>>> targeting x86_64-linux-gnu >>>> +# Clang v3.8, LLVMgold plugin and GNU >>>> binutils 2.26 >>> targeting >>>> x86_64-linux-gnu >>>> +# Clang v3.9 or later, LLVMgold plugin and >>>> GNU binutils 2.28 >>>> targeting x86_64-linux-gnu >>>> # Optional: >>>> # Required to build platforms or ACPI tables: >>>> # Intel(r) ACPI Compiler from >>>> @@ -5512,7 +5513,7 @@ DEFINE CLANG38_X64_PREFIX = >>>> ENV(CLANG38_BIN) >>>> DEFINE CLANG38_IA32_TARGET = -target i686-pc-linux-gnu >>>> DEFINE CLANG38_X64_TARGET = -target x86_64-pc-linux-gnu >>>> >>>> -DEFINE CLANG38_ALL_CC_FLAGS = DEF(GCC44_ALL_CC_FLAGS) - >> Wno- >>>> empty-body -fno-stack-protector -mms-bitfields -Wno-address -Wno- >> shift- >>>> negative-value -Wno-parentheses-equality -Wno-unknown-pragmas - >>> Wno- >>>> tautological-constant-out-of-range-compare -Wno-incompatible-library- >>>> redeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx - >>> msoft- >>>> float -mno-implicit-float -ftrap- >>>> function=undefined_behavior_has_been_optimized_away_by_clang - >>>> funsigned-char -fno-ms-extensions -Wno-null-dereference -Wno- >>>> tautological-compare -Wno-unknown-warning-option >>>> +DEFINE CLANG38_ALL_CC_FLAGS = DEF(GCC44_ALL_CC_FLAGS) - >>> Wno- >>>> empty-body -fno-stack-protector -mms-bitfields -Wno-address -Wno- >> shift- >>>> negative-value -Wno-parentheses-equality -Wno-unknown-pragmas - >>> Wno- >>>> tautological-constant-out-of-range-compare -Wno-incompatible-library- >>>> redeclaration -fno-asynchronous-unwind-tables -mno-sse -mno-mmx - >>> msoft- >>>> float -mno-implicit-float -ftrap- >>>> function=undefined_behavior_has_been_optimized_away_by_clang - >>>> funsigned-char -fno-ms-extensions -Wno-null-dereference -Wno- >>>> tautological-compare -Wno-unknown-warning-option -Wno-varargs >>>> >>>> ########################### >>>> # CLANG38 IA32 definitions >>>> -- >>>> 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 > _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

