BaseTools: Update GenFw to correct DebugEntry Offset when convert XIP image
DebugEntry FileOffset is required to be updated to the virtual address if the input image is converted to XIP image. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
This commit is contained in:
@@ -92,6 +92,7 @@ CHAR8 *mInImageName;
|
|||||||
UINT32 mImageTimeStamp = 0;
|
UINT32 mImageTimeStamp = 0;
|
||||||
UINT32 mImageSize = 0;
|
UINT32 mImageSize = 0;
|
||||||
UINT32 mOutImageType = FW_DUMMY_IMAGE;
|
UINT32 mOutImageType = FW_DUMMY_IMAGE;
|
||||||
|
BOOLEAN mIsConvertXip = FALSE;
|
||||||
|
|
||||||
|
|
||||||
STATIC
|
STATIC
|
||||||
@@ -665,6 +666,8 @@ PeCoffConvertImageToXip (
|
|||||||
free (*FileBuffer);
|
free (*FileBuffer);
|
||||||
*FileLength = XipLength;
|
*FileLength = XipLength;
|
||||||
*FileBuffer = XipFile;
|
*FileBuffer = XipFile;
|
||||||
|
|
||||||
|
mIsConvertXip = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT8 *
|
UINT8 *
|
||||||
@@ -2897,6 +2900,9 @@ Returns:
|
|||||||
Index = 0;
|
Index = 0;
|
||||||
for (Index=0; Index < DebugDirectoryEntrySize / sizeof (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY); Index ++, DebugEntry ++) {
|
for (Index=0; Index < DebugDirectoryEntrySize / sizeof (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY); Index ++, DebugEntry ++) {
|
||||||
DebugEntry->TimeDateStamp = 0;
|
DebugEntry->TimeDateStamp = 0;
|
||||||
|
if (mIsConvertXip) {
|
||||||
|
DebugEntry->FileOffset = DebugEntry->RVA;
|
||||||
|
}
|
||||||
if (ZeroDebugFlag || DebugEntry->Type != EFI_IMAGE_DEBUG_TYPE_CODEVIEW) {
|
if (ZeroDebugFlag || DebugEntry->Type != EFI_IMAGE_DEBUG_TYPE_CODEVIEW) {
|
||||||
memset (FileBuffer + DebugEntry->FileOffset, 0, DebugEntry->SizeOfData);
|
memset (FileBuffer + DebugEntry->FileOffset, 0, DebugEntry->SizeOfData);
|
||||||
memset (DebugEntry, 0, sizeof (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY));
|
memset (DebugEntry, 0, sizeof (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY));
|
||||||
|
Reference in New Issue
Block a user