]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Fix the bug that build tool and PCD driver can not deal with byte array or ANSIC...
authorklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 27 May 2009 11:34:11 +0000 (11:34 +0000)
committerklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 27 May 2009 11:34:11 +0000 (11:34 +0000)
This patch including following change:
1) Build tools:
   a) StringTable in generated PCD database is changed to UINT8 array but not original UINT16, because it can also stored the ANSIC and byte array.
   b) The layout of string table in PCD database is changed. To make sure unicode string is in double byte aligned, the item in string table which hold unicode string value will be put ahead than other items. After unicode string item, the HII variable name item is immediate. The byte array item and ANSIC string array item will be put at tail of whole string table.
   c) Fix bug that build tools does not handle the size of unicode string, byte array and ANSIC string.
2) PCD PEI/DXE driver:
   The pointer of StringTable is changed to UINT8* but not original UINT16*.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8392 6f19259b-4bc3-4df7-8a09-765794883524

BaseTools/Bin/Win32/build.exe
MdeModulePkg/Universal/PCD/Dxe/Service.c
MdeModulePkg/Universal/PCD/Pei/Service.c

index 92cac3b53672d4a8af10d0c295a9bfc4fee2429a..c822c11779fac1fd8f59dd4170080341ac00a904 100755 (executable)
Binary files a/BaseTools/Bin/Win32/build.exe and b/BaseTools/Bin/Win32/build.exe differ
index bfc17e734c5b49272a82b881f7df9dd32453ee26..60080f13f70b377eb71c0dac9dfdf8ceb3cc377b 100644 (file)
@@ -40,7 +40,7 @@ GetWorker (
 {\r
   UINT32              *LocalTokenNumberTable;\r
   EFI_GUID            *GuidTable;\r
-  UINT16              *StringTable;\r
+  UINT              *StringTable;\r
   EFI_GUID            *Guid;\r
   UINT16              *Name;\r
   VARIABLE_HEAD       *VariableHead;\r
@@ -108,9 +108,9 @@ GetWorker (
   PcdDb = IsPeiDb ? ((UINT8 *) &mPcdDatabase->PeiDb) : ((UINT8 *) &mPcdDatabase->DxeDb);\r
                                     \r
   if (IsPeiDb) {\r
-    StringTable = (UINT16 *) (&mPcdDatabase->PeiDb.Init.StringTable[0]);\r
+    StringTable = (UINT8 *) (&mPcdDatabase->PeiDb.Init.StringTable[0]);\r
   } else {\r
-    StringTable = (UINT16 *) (&mPcdDatabase->DxeDb.Init.StringTable[0]);\r
+    StringTable = (UINT8 *) (&mPcdDatabase->DxeDb.Init.StringTable[0]);\r
   }\r
                                       \r
   \r
@@ -132,7 +132,7 @@ GetWorker (
       VariableHead = (VARIABLE_HEAD *) (PcdDb + Offset);\r
       \r
       Guid = GuidTable + VariableHead->GuidTableIndex;\r
-      Name = StringTable + VariableHead->StringIndex;\r
+      Name = (UINT16*)(StringTable + VariableHead->StringIndex);\r
       VaraiableDefaultBuffer = (UINT8 *) PcdDb + VariableHead->DefaultValueOffset;\r
 \r
       Status = GetHiiVariable (Guid, Name, &Data, &DataSize);\r
@@ -694,7 +694,7 @@ SetWorker (
   BOOLEAN             IsPeiDb;\r
   UINT32              LocalTokenNumber;\r
   EFI_GUID            *GuidTable;\r
-  UINT16              *StringTable;\r
+  UINT              *StringTable;\r
   EFI_GUID            *Guid;\r
   UINT16              *Name;\r
   UINTN               VariableOffset;\r
@@ -770,9 +770,9 @@ SetWorker (
   PcdDb = IsPeiDb ? ((UINT8 *) &mPcdDatabase->PeiDb) : ((UINT8 *) &mPcdDatabase->DxeDb);\r
 \r
   if (IsPeiDb) {\r
-    StringTable = (UINT16 *) (&mPcdDatabase->PeiDb.Init.StringTable[0]);\r
+    StringTable = (UINT8 *) (&mPcdDatabase->PeiDb.Init.StringTable[0]);\r
   } else {\r
-    StringTable = (UINT16 *) (&mPcdDatabase->DxeDb.Init.StringTable[0]);\r
+    StringTable = (UINT8 *) (&mPcdDatabase->DxeDb.Init.StringTable[0]);\r
   }\r
 \r
   \r
@@ -786,7 +786,7 @@ SetWorker (
     \r
     case PCD_TYPE_STRING:\r
       if (SetPtrTypeSize (TmpTokenNumber, Size)) {\r
-        CopyMem (StringTable + *((UINT16 *)InternalData), Data, *Size);\r
+        CopyMem (StringTable + *((UINT8 *)InternalData), Data, *Size);\r
         Status = EFI_SUCCESS;\r
       } else {\r
         Status = EFI_INVALID_PARAMETER;\r
@@ -810,7 +810,7 @@ SetWorker (
       VariableHead = (VARIABLE_HEAD *) (PcdDb + Offset);\r
       \r
       Guid = GuidTable + VariableHead->GuidTableIndex;\r
-      Name = StringTable + VariableHead->StringIndex;\r
+      Name = (UINT16*) (StringTable + VariableHead->StringIndex);\r
       VariableOffset = VariableHead->Offset;\r
 \r
       Status = SetHiiVariable (Guid, Name, Data, *Size, VariableOffset);\r
index 5bc1dc8205f9d7d75518504b4f13b8aed527894c..ff59b81dcdec0e1361dcde4e3b1b3b5d6d6c2271 100644 (file)
@@ -573,7 +573,7 @@ GetWorker (
   EFI_STATUS          Status;\r
   UINTN               DataSize;\r
   VOID                *Data;\r
-  UINT16              *StringTable;\r
+  UINT              *StringTable;\r
   UINT16              StringTableIdx;\r
   PEI_PCD_DATABASE    *PeiPcdDb;\r
   UINT32              LocalTokenNumber;\r
@@ -622,7 +622,7 @@ GetWorker (
       VariableHead = (VARIABLE_HEAD *) ((UINT8 *)PeiPcdDb + Offset);\r
       \r
       Guid = &(PeiPcdDb->Init.GuidTable[VariableHead->GuidTableIndex]);\r
-      Name = &StringTable[VariableHead->StringIndex];\r
+      Name = (UINT16*)&StringTable[VariableHead->StringIndex];\r
 \r
       Status = GetHiiVariable (Guid, Name, &Data, &DataSize);\r
 \r