On 01/28/16 03:38, Gao, Liming wrote: > Laszlo: > Someone evaluates GCC LTO feature and detects this issue. Now, we have no > clear plan to add LTO support.
Thanks Scott for the great summary, and Liming for the info. Laszlo > > Thanks > Liming > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Laszlo > Ersek > Sent: Thursday, January 28, 2016 1:34 AM > To: Zhu, Yonghong > Cc: edk2-de...@ml01.01.org; Scott Duplichan > Subject: Re: [edk2] [Patch] BaseTools: Fix the bug for VOID* Patchable PCD > declaration in Library > > On 01/27/16 10:18, Yonghong Zhu wrote: >> VOID* Patchable PCD in Library has the different declaration from the >> one in Driver, this issue that will cause GCC LTO build failure. > > Wow, you managed to build edk2 modules with -flto? How? Is that going to be > added to BaseTools? > > Thanks! > Laszlo > >> >> Contributed-under: TianoCore Contribution Agreement 1.0 >> Signed-off-by: Yonghong Zhu <yonghong....@intel.com> >> --- >> BaseTools/Source/Python/AutoGen/GenC.py | 15 ++++++++++++--- >> 1 file changed, 12 insertions(+), 3 deletions(-) >> >> diff --git a/BaseTools/Source/Python/AutoGen/GenC.py >> b/BaseTools/Source/Python/AutoGen/GenC.py >> index 93be718..3f0dfd9 100644 >> --- a/BaseTools/Source/Python/AutoGen/GenC.py >> +++ b/BaseTools/Source/Python/AutoGen/GenC.py >> @@ -1,9 +1,9 @@ >> ## @file >> # Routines for generating AutoGen.h and AutoGen.c # -# Copyright (c) >> 2007 - 2015, Intel Corporation. All rights reserved.<BR> >> +# Copyright (c) 2007 - 2016, Intel Corporation. All rights >> +reserved.<BR> >> # This program and the accompanying materials # are licensed and >> made available under the terms and conditions of the BSD License # >> which accompanies this distribution. The full text of the license may >> be found at # http://opensource.org/licenses/bsd-license.php >> # >> @@ -1097,11 +1097,12 @@ def CreateLibraryPcdCode(Info, AutoGenC, AutoGenH, >> Pcd): >> GetModeSizeName = '_PCD_GET_MODE_SIZE' + '_' + Pcd.TokenCName >> >> Type = '' >> Array = '' >> if Pcd.DatumType == 'VOID*': >> - Type = '(VOID *)' >> + if Pcd.DefaultValue[0]== '{': >> + Type = '(VOID *)' >> Array = '[]' >> PcdItemType = Pcd.Type >> PcdExCNameList = [] >> if PcdItemType in gDynamicExPcd: >> PcdExTokenName = '_PCD_TOKEN_' + TokenSpaceGuidCName + '_' + >> Pcd.TokenCName @@ -1159,11 +1160,19 @@ def CreateLibraryPcdCode(Info, >> AutoGenC, AutoGenH, Pcd): >> else: >> AutoGenH.Append('#define %s(Value) LibPcdSet%s(%s, >> (Value))\n' % (SetModeName, DatumSizeLib, PcdTokenName)) >> AutoGenH.Append('#define %s(Value) LibPcdSet%sS(%s, >> (Value))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName)) >> if PcdItemType == TAB_PCDS_PATCHABLE_IN_MODULE: >> PcdVariableName = '_gPcd_' + >> gItemTypeStringDatabase[TAB_PCDS_PATCHABLE_IN_MODULE] + '_' + TokenCName >> - AutoGenH.Append('extern volatile %s _gPcd_BinaryPatch_%s%s;\n' >> %(DatumType, TokenCName, Array) ) >> + if DatumType == 'VOID*': >> + ArraySize = int(Pcd.MaxDatumSize, 0) >> + if Pcd.DefaultValue[0] == 'L': >> + ArraySize = ArraySize / 2 >> + Array = '[%d]' % ArraySize >> + DatumType = ['UINT8', 'UINT16'][Pcd.DefaultValue[0] == 'L'] >> + AutoGenH.Append('extern %s _gPcd_BinaryPatch_%s%s;\n' >> %(DatumType, TokenCName, Array)) >> + else: >> + AutoGenH.Append('extern volatile %s %s%s;\n' % >> + (DatumType, PcdVariableName, Array)) >> AutoGenH.Append('#define %s %s_gPcd_BinaryPatch_%s\n' >> %(GetModeName, Type, TokenCName)) >> if Pcd.DatumType == 'VOID*': >> AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) >> LibPatchPcdSetPtrAndSize((VOID *)_gPcd_BinaryPatch_%s, >> &_gPcd_BinaryPatch_Size_%s, (UINTN)_PCD_PATCHABLE_%s_SIZE, (SizeOfBuffer), >> (Buffer))\n' % (SetModeName, Pcd.TokenCName, Pcd.TokenCName, Pcd.TokenCName)) >> AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) >> LibPatchPcdSetPtrAndSizeS((VOID *)_gPcd_BinaryPatch_%s, >> &_gPcd_BinaryPatch_Size_%s, (UINTN)_PCD_PATCHABLE_%s_SIZE, (SizeOfBuffer), >> (Buffer))\n' % (SetModeStatusName, Pcd.TokenCName, Pcd.TokenCName, >> Pcd.TokenCName)) >> else: >> > > _______________________________________________ > 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