- if TokenSpaceGuidName and TokenSpaceGuidName in self._Symb:\r
- PcdValue = 'GUID(' + self._Symb[TokenSpaceGuidName] + ')'\r
- elif TokenSpaceGuidName:\r
- raise BadExpression('%s not found in DEC file' % TokenSpaceGuidName)\r
-\r
- ListItem, Size = ParseFieldValue(PcdValue)\r
- elif PcdValue.startswith('DEVICE_PATH') and PcdValue.endswith(')'):\r
- ListItem, Size = ParseFieldValue(PcdValue)\r
- else:\r
- ListItem = PcdValue.split(',')\r
-\r
- if type(ListItem) == type(0) or type(ListItem) == type(0L):\r
- for Index in range(0, Size):\r
- ValueStr += '0x%02X' % (int(ListItem) & 255)\r
- ListItem >>= 8\r
- ValueStr += ', '\r
- PcdValue = '{' + ValueStr[:-2] + '}'\r
- elif type(ListItem) == type(''):\r
- if ListItem.startswith('{') and ListItem.endswith('}'):\r
- PcdValue = ListItem\r
- else:\r
- LabelDict = {}\r
- ReLabel = re.compile('LABEL\((\w+)\)')\r
- ReOffset = re.compile('OFFSET_OF\((\w+)\)')\r
- for Index, Item in enumerate(ListItem):\r
- # for LABEL parse\r
- Item = Item.strip()\r
- try:\r
- LabelList = ReLabel.findall(Item)\r
- for Label in LabelList:\r
- if Label not in LabelDict.keys():\r
- LabelDict[Label] = str(Index)\r
- Item = ReLabel.sub('', Item)\r
- except:\r
- pass\r
+ try:\r
+ OffsetList = ReOffset.findall(Item)\r
+ except:\r
+ pass\r
+ for Offset in OffsetList:\r
+ if Offset in LabelDict.keys():\r
+ Re = re.compile('OFFSET_OF\(%s\)' % Offset)\r
+ Item = Re.sub(LabelDict[Offset], Item)\r
+ else:\r
+ raise BadExpression('%s not defined' % Offset)\r
+ NewPcdValueList.append(Item)\r
+\r
+ AllPcdValueList = []\r
+ for Item in NewPcdValueList:\r
+ Size = 0\r
+ ValueStr = ''\r
+ TokenSpaceGuidName = ''\r
+ if Item.startswith('GUID') and Item.endswith(')'):\r