From 14239ee0770fdbb1d69f1e3f5f70b8df30de1895 Mon Sep 17 00:00:00 2001 From: Yonghong Zhu Date: Thu, 2 Nov 2017 13:15:34 +0800 Subject: BaseTools: parse map file generated by Xcode on Mac Add support to parse map file generated by Xcode on Mac to get variable offset and Patchable Pcd info in current EFI file. Cc: Liming Gao Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Yonghong Zhu Reviewed-by: Liming Gao --- BaseTools/Source/Python/Common/Misc.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'BaseTools/Source/Python/Common/Misc.py') diff --git a/BaseTools/Source/Python/Common/Misc.py b/BaseTools/Source/Python/Common/Misc.py index dbb711e96c..2a5125d72d 100644 --- a/BaseTools/Source/Python/Common/Misc.py +++ b/BaseTools/Source/Python/Common/Misc.py @@ -67,8 +67,26 @@ def GetVariableOffset(mapfilepath, efifilepath, varnames): if (firstline.startswith("Archive member included ") and firstline.endswith(" file (symbol)")): return _parseForGCC(lines, efifilepath, varnames) + if firstline.startswith("# Path:"): + return _parseForXcode(lines, efifilepath, varnames) return _parseGeneral(lines, efifilepath, varnames) +def _parseForXcode(lines, efifilepath, varnames): + status = 0 + ret = [] + for index, line in enumerate(lines): + line = line.strip() + if status == 0 and line == "# Symbols:": + status = 1 + continue + if status == 1 and len(line) != 0: + for varname in varnames: + if varname in line: + m = re.match('^([\da-fA-FxX]+)([\s\S]*)([_]*%s)$' % varname, line) + if m != None: + ret.append((varname, m.group(1))) + return ret + def _parseForGCC(lines, efifilepath, varnames): """ Parse map file generated by GCC linker """ status = 0 -- cgit v1.2.3