diff options
author | Yonghong Zhu <yonghong.zhu@intel.com> | 2017-11-02 13:15:34 +0800 |
---|---|---|
committer | Yonghong Zhu <yonghong.zhu@intel.com> | 2017-11-03 14:30:49 +0800 |
commit | 14239ee0770fdbb1d69f1e3f5f70b8df30de1895 (patch) | |
tree | f47c0533ec54c0d6f52084186283e7a8d8f39dcd /BaseTools/Source/Python/Common/Misc.py | |
parent | 631ffb70ebbe78b6e3f342b7ad9ab9b75f8796ae (diff) | |
download | edk2-14239ee0770fdbb1d69f1e3f5f70b8df30de1895.tar.gz edk2-14239ee0770fdbb1d69f1e3f5f70b8df30de1895.tar.bz2 edk2-14239ee0770fdbb1d69f1e3f5f70b8df30de1895.zip |
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 <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Diffstat (limited to 'BaseTools/Source/Python/Common/Misc.py')
-rw-r--r-- | BaseTools/Source/Python/Common/Misc.py | 18 |
1 files changed, 18 insertions, 0 deletions
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
|