Sync EDKII BaseTools to BaseTools project r1988

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10607 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
qhuang8
2010-06-28 09:33:10 +00:00
parent 96dd57ee8d
commit 9053bc517e
41 changed files with 690 additions and 127 deletions

View File

@@ -2,7 +2,7 @@
Functions to get info and load PE/COFF image.
Copyright (c) 2004 - 2008, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -629,15 +629,10 @@ Returns:
}
//
// If the destination address is not 0, use that rather than the
// image address as the relocation target.
// Use DestinationAddress field of ImageContext as the relocation address even if it is 0.
//
if (ImageContext->DestinationAddress) {
BaseAddress = ImageContext->DestinationAddress;
} else {
BaseAddress = ImageContext->ImageAddress;
}
BaseAddress = ImageContext->DestinationAddress;
if (!(ImageContext->IsTeImage)) {
PeHdr = (EFI_IMAGE_OPTIONAL_HEADER_UNION *)((UINTN)ImageContext->ImageAddress +
ImageContext->PeCoffHeaderOffset);

View File

@@ -68,7 +68,7 @@ SUBDIRS := $(LIBRARIES) $(APPLICATIONS)
.PHONY: outputdirs
makerootdir:
-mkdir $(MAKEROOT)
-mkdir -p $(MAKEROOT)
.PHONY: subdirs $(SUBDIRS)
subdirs: $(SUBDIRS)

View File

@@ -1,7 +1,7 @@
/**@file
Header file for EFI Variable Services.
Copyright (c) 2007 - 2008, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available
under the terms and conditions of the BSD License which accompanies this
@@ -18,8 +18,6 @@
#ifndef __VARIABLE_FORMAT_H__
#define __VARIABLE_FORMAT_H__
#define VARIABLE_STORE_SIGNATURE EFI_SIGNATURE_32 ('$', 'V', 'S', 'S')
#define VARIABLE_DATA 0x55AA
//
@@ -31,12 +29,12 @@
#pragma pack(1)
typedef struct {
UINT32 Signature;
UINT32 Size;
UINT8 Format;
UINT8 State;
UINT16 Reserved;
UINT32 Reserved1;
EFI_GUID Signature;
UINT32 Size;
UINT8 Format;
UINT8 State;
UINT16 Reserved;
UINT32 Reserved1;
} VARIABLE_STORE_HEADER;
typedef struct {

View File

@@ -4,7 +4,7 @@
working block, the header structure of the variable block, FTW
working block, or event log block.
Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available
under the terms and conditions of the BSD License which accompanies this
@@ -34,7 +34,7 @@ typedef struct {
#define WORKING_BLOCK_INVALID 0x2
UINT8 Reserved : 6;
UINT8 Reserved3[3];
UINT32 WriteQueueSize;
UINT64 WriteQueueSize;
//
// UINT8 WriteQueue[WriteQueueSize];
//

View File

@@ -1227,7 +1227,7 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, Phase):
NumberOfExTokens = 0
NumberOfSizeItems = 0
GuidList = []
for Pcd in Platform.DynamicPcdList:
CName = Pcd.TokenCName
TokenSpaceGuidCName = Pcd.TokenSpaceGuidCName
@@ -1262,7 +1262,9 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, Phase):
VariableHeadValueList = []
Pcd.InitString = 'UNINIT'
if Pcd.DatumType == 'VOID*':
if Pcd.Type in ["DynamicVpd", "DynamicExVpd"]:
Pcd.TokenTypeList = ['PCD_TYPE_VPD']
elif Pcd.DatumType == 'VOID*':
Pcd.TokenTypeList = ['PCD_TYPE_STRING']
elif Pcd.DatumType == 'BOOLEAN':
Pcd.TokenTypeList = ['PCD_DATUM_TYPE_UINT8']
@@ -1329,7 +1331,7 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, Phase):
Pcd.TokenTypeList += ['PCD_TYPE_VPD']
Pcd.InitString = 'INIT'
VpdHeadOffsetList.append(Sku.VpdOffset)
continue
if Pcd.DatumType == 'VOID*':
Pcd.TokenTypeList += ['PCD_TYPE_STRING']

View File

@@ -279,9 +279,16 @@ def CleanString(Line, CommentCharacter = DataType.TAB_COMMENT_SPLIT, AllowCppSty
if AllowCppStyleComment:
Line = Line.replace(DataType.TAB_COMMENT_R8_SPLIT, CommentCharacter)
#
# remove comments
# remove comments, but we should escape comment character in string
#
Line = Line.split(CommentCharacter, 1)[0];
InString = False
for Index in range(0, len(Line)):
if Line[Index] == '"':
InString = not InString
elif Line[Index] == CommentCharacter and not InString:
Line = Line[0: Index]
break
#
# remove whitespace again
#

View File

@@ -1,7 +1,7 @@
## @file
# This file is used to define class for data sturcture used in ECC
# This file is used to define class for data structure used in ECC
#
# Copyright (c) 2008, Intel Corporation. All rights reserved.<BR>
# Copyright (c) 2008 - 2010, Intel Corporation. All rights reserved.<BR>
# This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at
@@ -92,6 +92,8 @@ MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSEIF = 50013
MODEL_META_DATA_CONDITIONAL_STATEMENT_ENDIF = 5014
MODEL_META_DATA_COMPONENT_SOURCE_OVERRIDE_PATH = 5015
MODEL_EXTERNAL_DEPENDENCY = 10000
MODEL_LIST = [('MODEL_UNKNOWN', MODEL_UNKNOWN),
('MODEL_FILE_C', MODEL_FILE_C),
('MODEL_FILE_H', MODEL_FILE_H),

View File

@@ -21,6 +21,7 @@ import subprocess
from Ffs import Ffs
import os
from CommonDataClass.FdfClass import DataSectionClassObject
from Common.Misc import PeImageClass
import shutil
## generate data section
@@ -74,6 +75,14 @@ class DataSection (DataSectionClassObject):
(os.path.getmtime(MapFile) > os.path.getmtime(CopyMapFile)):
shutil.copyfile(MapFile, CopyMapFile)
#Get PE Section alignment when align is set to AUTO
if self.Alignment == 'Auto' and self.SecType in ('TE', 'PE32'):
ImageObj = PeImageClass (Filename)
if ImageObj.SectionAlignment < 0x400:
self.Alignment = str (ImageObj.SectionAlignment)
else:
self.Alignment = str (ImageObj.SectionAlignment / 0x400) + 'K'
NoStrip = True
if self.SecType in ('TE', 'PE32'):
if self.KeepReloc != None:

View File

@@ -2388,9 +2388,11 @@ class FdfParser:
FfsFileObj.CheckSum = True
if self.__GetAlignment():
FfsFileObj.Alignment = self.__Token
if self.__Token not in ("Auto", "8", "16", "32", "64", "128", "512", "1K", "4K", "32K" ,"64K"):
raise Warning("Incorrect alignment '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)
#For FFS, Auto is default option same to ""
if not self.__Token == "Auto":
FfsFileObj.Alignment = self.__Token
## __GetAlignment() method
#

View File

@@ -76,11 +76,6 @@ gImportCodePatterns = [
'\\1EfiLibReportStatusCode ('
],
[
re.compile('#include\s+["<]LoadFile\.h[">]', re.MULTILINE),
'#include <FvLoadFile.h>'
],
[
re.compile('#include\s+EFI_GUID_DEFINITION\s*\(FirmwareFileSystem\)', re.MULTILINE),
'#include EFI_GUID_DEFINITION (FirmwareFileSystem)\n#include EFI_GUID_DEFINITION (FirmwareFileSystem2)'

View File

@@ -774,6 +774,8 @@ class DscParser(MetaFileParser):
except:
EdkLogger.error("Parser", PARSER_ERROR, File=self.MetaFile, Line=self._LineIndex+1,
ExtraData="Failed to parse content in file %s" % IncludedFile)
# insert an imaginary token in the DSC table to indicate its external dependency on another file
self._Store(MODEL_EXTERNAL_DEPENDENCY, IncludedFile, str(os.stat(IncludedFile)[8]), "")
# update current status with sub-parser's status
self._SectionName = Parser._SectionName
self._SectionType = Parser._SectionType

View File

@@ -2287,6 +2287,13 @@ determine whether database file is out of date!\n")
Result = self.Cur.execute("select min(ID) from %s" % (TableName)).fetchall()
if Result[0][0] != -1:
return False
#
# Check whether the meta data file has external dependency by comparing the time stamp
#
Sql = "select Value1, Value2 from %s where Model=%d" % (TableName, MODEL_EXTERNAL_DEPENDENCY)
for Dependency in self.Cur.execute(Sql).fetchall():
if str(os.stat(Dependency[0])[8]) != Dependency[1]:
return False
except:
return False
return True