- 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
- LabelOffset = 0\r
- for Index, Item in enumerate(ListItem):\r
- # compute byte offset of every LABEL\r
- Item = Item.strip()\r
+ if Item.startswith('UINT8'):\r
+ LabelOffset = LabelOffset + 1\r
+ elif Item.startswith('UINT16'):\r
+ LabelOffset = LabelOffset + 2\r
+ elif Item.startswith('UINT32'):\r
+ LabelOffset = LabelOffset + 4\r
+ elif Item.startswith('UINT64'):\r
+ LabelOffset = LabelOffset + 8\r
+ else:\r