Ard: The issue is related to UINT64 definition in the different ARCHs. In BaseTools X64 and IA32, typedef uint64_t UINT64. uint64_t doesn't work with %llx. To support all archs and tool chain, I propose to use below style to print X64 value.
sprintf(PcdList[Index].Value, "0x%016llx", (unsigned long long) Value); Thanks Liming > -----Original Message----- > From: Ard Biesheuvel [mailto:ard.biesheu...@linaro.org] > Sent: Tuesday, January 2, 2018 5:26 PM > To: Alex James <theracermas...@gmail.com> > Cc: Gao, Liming <liming....@intel.com>; edk2-devel@lists.01.org > Subject: Re: [edk2] [PATCH] BaseTools/PcdValueCommon: Fix PcdDataTypeUint64 > format string > > On 2 January 2018 at 09:25, Ard Biesheuvel <ard.biesheu...@linaro.org> wrote: > > On 29 December 2017 at 02:58, Alex James <theracermas...@gmail.com> wrote: > >> Hi Liming, > >> > >> I was able to reproduce this, will send out the v2 patch shortly. > >> > > > > This is still broken in today's tree. Could we get a fix please? > > > > Ehm, hold on. It is the other way around: on AARCH64, I now get > > PcdValueCommon.c: In function ‘__PcdSet’: > PcdValueCommon.c:270:43: error: format ‘%lx’ expects argument of type > ‘long unsigned int’, but argument 3 has type ‘UINT64 {aka long long > unsigned int}’ [-Werror=format=] > sprintf(PcdList[Index].Value, "0x%016lx", Value); > > > > > >> > >> On Thu, Dec 28, 2017 at 7:46 PM Gao, Liming <liming....@intel.com> wrote: > >> > >>> This fix will trig GCC build warning. > >>> > >>> PcdValueCommon.c: In function '__PcdSet': > >>> PcdValueCommon.c:269:35: error: format '%llx' expects argument of type > >>> 'long long unsigned int', but argument 3 has type 'UINT64 {aka long > >>> unsigned int}' [-Werror=format=] > >>> sprintf(PcdList[Index].Value, "0x%016llx", Value); > >>> ^ > >>> > >>> Thanks > >>> Liming > >>> > -----Original Message----- > >>> > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of > >>> Alex James > >>> > Sent: Friday, December 29, 2017 4:00 AM > >>> > To: edk2-devel@lists.01.org > >>> > Cc: Alex James <theracermas...@gmail.com> > >>> > Subject: [edk2] [PATCH] BaseTools/PcdValueCommon: Fix PcdDataTypeUint64 > >>> format string > >>> > > >>> > Always specify unsigned long long for PcdDataTypeUint64. This is needed > >>> > to fix building with XCODE5. > >>> > > >>> > Contributed-under: TianoCore Contribution Agreement 1.1 > >>> > Signed-off-by: Alex James <theracermas...@gmail.com> > >>> > --- > >>> > BaseTools/Source/C/Common/PcdValueCommon.c | 4 ---- > >>> > 1 file changed, 4 deletions(-) > >>> > > >>> > diff --git a/BaseTools/Source/C/Common/PcdValueCommon.c > >>> b/BaseTools/Source/C/Common/PcdValueCommon.c > >>> > index 6ca0994744..f5d68e79e0 100644 > >>> > --- a/BaseTools/Source/C/Common/PcdValueCommon.c > >>> > +++ b/BaseTools/Source/C/Common/PcdValueCommon.c > >>> > @@ -266,11 +266,7 @@ Returns: > >>> > sprintf(PcdList[Index].Value, "0x%08x", (UINT32)(Value & > >>> 0xffffffff)); > >>> > break; > >>> > case PcdDataTypeUint64: > >>> > -#ifdef __GNUC__ > >>> > - sprintf(PcdList[Index].Value, "0x%016lx", Value); > >>> > -#else > >>> > sprintf(PcdList[Index].Value, "0x%016llx", Value); > >>> > -#endif > >>> > break; > >>> > case PcdDataTypePointer: > >>> > fprintf (stderr, "PCD %s.%s.%s.%s is structure. Use > >>> PcdSetPtr()\n", SkuName, DefaultValueName, TokenSpaceGuidName, > >>> > TokenName); > >>> > -- > >>> > 2.15.1 > >>> > > >>> > _______________________________________________ > >>> > edk2-devel mailing list > >>> > edk2-devel@lists.01.org > >>> > https://lists.01.org/mailman/listinfo/edk2-devel > >>> > >> _______________________________________________ > >> edk2-devel mailing list > >> edk2-devel@lists.01.org > >> https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel