BaseTools: Fix the bug to parse the new map file format

Current the variable and Pcd format save in the map file is changed, so
this patch is to support this new format.

Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Yonghong Zhu 2016-11-30 16:02:21 +08:00
parent 31bf6304ba
commit 3e7e8571da
2 changed files with 16 additions and 9 deletions

View File

@ -74,7 +74,7 @@ def _parseForGCC(lines, efifilepath, varnames):
status = 0
sections = []
varoffset = []
for line in lines:
for index, line in enumerate(lines):
line = line.strip()
# status machine transection
if status == 0 and line == "Memory Configuration":
@ -88,14 +88,17 @@ def _parseForGCC(lines, efifilepath, varnames):
continue
# status handler
if status == 2:
if status == 3:
m = re.match('^([\w_\.]+) +([\da-fA-Fx]+) +([\da-fA-Fx]+)$', line)
if m != None:
sections.append(m.groups(0))
for varname in varnames:
m = re.match("^([\da-fA-Fx]+) +[_]*(%s)$" % varname, line)
m = re.match(".data.(%s)$" % varname, line)
if m != None:
varoffset.append((varname, int(m.groups(0)[0], 16) , int(sections[-1][1], 16), sections[-1][0]))
if lines[index + 1]:
m = re.match('^([\da-fA-Fx]+) +([\da-fA-Fx]+)', lines[index + 1].strip())
if m != None:
varoffset.append((varname, int(m.groups(0)[0], 16) , int(sections[-1][1], 16), sections[-1][0]))
if not varoffset:
return []

View File

@ -66,7 +66,7 @@ def _parseForGCC(lines, efifilepath):
imageBase = -1
sections = []
bpcds = []
for line in lines:
for index, line in enumerate(lines):
line = line.strip()
# status machine transection
if status == 0 and line == "Memory Configuration":
@ -80,14 +80,18 @@ def _parseForGCC(lines, efifilepath):
continue
# status handler
if status == 2:
if status == 3:
m = re.match('^([\w_\.]+) +([\da-fA-Fx]+) +([\da-fA-Fx]+)$', line)
if m != None:
sections.append(m.groups(0))
if status == 2:
m = re.match("^([\da-fA-Fx]+) +[_]+gPcd_BinaryPatch_([\w_\d]+)$", line)
if status == 3:
m = re.match('^.data._gPcd_BinaryPatch_([\w_\d]+)$', line)
if m != None:
bpcds.append((m.groups(0)[1], int(m.groups(0)[0], 16) , int(sections[-1][1], 16), sections[-1][0]))
if lines[index + 1]:
PcdName = m.groups(0)[0]
m = re.match('^([\da-fA-Fx]+) +([\da-fA-Fx]+)', lines[index + 1].strip())
if m != None:
bpcds.append((PcdName, int(m.groups(0)[0], 16) , int(sections[-1][1], 16), sections[-1][0]))
# get section information from efi file
efisecs = PeImageClass(efifilepath).SectionHeaderList