def ParseMapFile(Files): AllMaps = {} CurrentModule = '' CurrentMaps = {} for File in Files: Content = open(File, 'r').readlines() for Line in Content: Line = CleanString(Line) # skip empty line if Line == '': continue if Line.find('(') > -1 and Line.find(')') > -1: if CurrentModule != '' and CurrentMaps != {}: AllMaps[CurrentModule] = CurrentMaps CurrentModule = Line[:Line.find('(')] CurrentMaps = {} continue else: Name = '' Address = '' List = Line.split() Address = List[0] if List[1] == 'F' or List[1] == 'FS': Name = List[2] else: Name = List[1] CurrentMaps[Name] = Address continue return AllMaps
def PreProcess(Filename, MergeMultipleLines=True, LineNo=-1): Lines = [] Filename = os.path.normpath(Filename) if not os.path.isfile(Filename): EdkLogger.error("Eot", EdkLogger.FILE_NOT_FOUND, ExtraData=Filename) IsFindBlockComment = False IsFindBlockCode = False ReservedLine = '' ReservedLineLength = 0 for Line in open(Filename, 'r'): Line = Line.strip() # Remove comment block if Line.find(TAB_COMMENT_EDK_START) > -1: ReservedLine = GetSplitList(Line, TAB_COMMENT_EDK_START, 1)[0] IsFindBlockComment = True if Line.find(TAB_COMMENT_EDK_END) > -1: Line = ReservedLine + GetSplitList(Line, TAB_COMMENT_EDK_END, 1)[1] ReservedLine = '' IsFindBlockComment = False if IsFindBlockComment: Lines.append('') continue # Remove comments at tail and remove spaces again Line = CleanString(Line) if Line == '': Lines.append('') continue if MergeMultipleLines: # Add multiple lines to one line if IsFindBlockCode and Line[-1] != TAB_SLASH: ReservedLine = (ReservedLine + TAB_SPACE_SPLIT + Line).strip() Lines.append(ReservedLine) for Index in (0, ReservedLineLength): Lines.append('') ReservedLine = '' ReservedLineLength = 0 IsFindBlockCode = False continue if Line[-1] == TAB_SLASH: ReservedLine = ReservedLine + TAB_SPACE_SPLIT + Line[ 0:-1].strip() ReservedLineLength = ReservedLineLength + 1 IsFindBlockCode = True continue Lines.append(Line) return Lines