if (firstline.startswith("Archive member included ") and\r
firstline.endswith(" file (symbol)")):\r
return _parseForGCC(lines, efifilepath, varnames)\r
+ if firstline.startswith("# Path:"):\r
+ return _parseForXcode(lines, efifilepath, varnames)\r
return _parseGeneral(lines, efifilepath, varnames)\r
\r
+def _parseForXcode(lines, efifilepath, varnames):\r
+ status = 0\r
+ ret = []\r
+ for index, line in enumerate(lines):\r
+ line = line.strip()\r
+ if status == 0 and line == "# Symbols:":\r
+ status = 1\r
+ continue\r
+ if status == 1 and len(line) != 0:\r
+ for varname in varnames:\r
+ if varname in line:\r
+ m = re.match('^([\da-fA-FxX]+)([\s\S]*)([_]*%s)$' % varname, line)\r
+ if m != None:\r
+ ret.append((varname, m.group(1)))\r
+ return ret\r
+\r
def _parseForGCC(lines, efifilepath, varnames):\r
""" Parse map file generated by GCC linker """\r
status = 0\r