summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Duplichan <scott@notabs.org>2015-07-26 08:04:10 +0000
committerjljusten <jljusten@Edk2>2015-07-26 08:04:10 +0000
commit41ab153f854986e401f6991ec1e507523a3b730e (patch)
treeebb6d34d29604fe773417feacd2cde8a4ed37e16
parent7b0b36063352649c25843d67e79710c2c6f95051 (diff)
downloadedk2-41ab153f854986e401f6991ec1e507523a3b730e.tar.gz
edk2-41ab153f854986e401f6991ec1e507523a3b730e.tar.bz2
edk2-41ab153f854986e401f6991ec1e507523a3b730e.zip
BaseTools: Make AutoGen.h array declaration match AutoGen.c definition
When a quoted string is used as initialization data in a DEC file PCD entry, the PCD data type in that entry must be VOID*. The created AutoGen.c defines the PCD data as UINT8[] or UINT16[], depending on the string type. The created AutoGen.h, however, declares the PCD data as VOID*. For a standard compile/link, this works because AutoGen.c doesn't include AutoGen.h. But when GCC LTO is used, the link time code generation detects the mismatch and the build fails. This change makes the AutoGen.h PCD data declaration match the AutoGen.c definition. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Scott Duplichan <scott@notabs.org> Reviewed-by: Yingke Liu <yingke.d.liu@intel.com> Signed-off-by: Laszlo Ersek <lersek@redhat.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18058 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r--BaseTools/Source/Python/AutoGen/GenC.py2
1 files changed, 2 insertions, 0 deletions
diff --git a/BaseTools/Source/Python/AutoGen/GenC.py b/BaseTools/Source/Python/AutoGen/GenC.py
index e73ba79e28..84bd607ea6 100644
--- a/BaseTools/Source/Python/AutoGen/GenC.py
+++ b/BaseTools/Source/Python/AutoGen/GenC.py
@@ -1088,6 +1088,8 @@ def CreateLibraryPcdCode(Info, AutoGenC, AutoGenH, Pcd):
if PcdItemType == TAB_PCDS_FIXED_AT_BUILD or PcdItemType == TAB_PCDS_FEATURE_FLAG:
key = ".".join((Pcd.TokenSpaceGuidCName,Pcd.TokenCName))
+ if DatumType == 'VOID*' and Array == '[]':
+ DatumType = ['UINT8', 'UINT16'][Pcd.DefaultValue[0] == 'L']
AutoGenH.Append('extern const %s _gPcd_FixedAtBuild_%s%s;\n' %(DatumType, TokenCName, Array))
AutoGenH.Append('#define %s %s_gPcd_FixedAtBuild_%s\n' %(GetModeName, Type, TokenCName))
AutoGenH.Append('//#define %s ASSERT(FALSE) // It is not allowed to set value for a FIXED_AT_BUILD PCD\n' % SetModeName)