From 29c50757873c431c59fa4173f9cfd5c3548a1394 Mon Sep 17 00:00:00 2001 From: Liming Gao Date: Mon, 26 Feb 2018 13:51:44 +0800 Subject: [PATCH] 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 Reviewed-by: Yonghong Zhu --- BaseTools/Source/C/GenFw/GenFw.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/BaseTools/Source/C/GenFw/GenFw.c b/BaseTools/Source/C/GenFw/GenFw.c index 33ba917fda..00c9ff35b1 100644 --- a/BaseTools/Source/C/GenFw/GenFw.c +++ b/BaseTools/Source/C/GenFw/GenFw.c @@ -92,6 +92,7 @@ CHAR8 *mInImageName; UINT32 mImageTimeStamp = 0; UINT32 mImageSize = 0; UINT32 mOutImageType = FW_DUMMY_IMAGE; +BOOLEAN mIsConvertXip = FALSE; STATIC @@ -665,6 +666,8 @@ PeCoffConvertImageToXip ( free (*FileBuffer); *FileLength = XipLength; *FileBuffer = XipFile; + + mIsConvertXip = TRUE; } UINT8 * @@ -2897,6 +2900,9 @@ Returns: Index = 0; for (Index=0; Index < DebugDirectoryEntrySize / sizeof (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY); Index ++, DebugEntry ++) { DebugEntry->TimeDateStamp = 0; + if (mIsConvertXip) { + DebugEntry->FileOffset = DebugEntry->RVA; + } if (ZeroDebugFlag || DebugEntry->Type != EFI_IMAGE_DEBUG_TYPE_CODEVIEW) { memset (FileBuffer + DebugEntry->FileOffset, 0, DebugEntry->SizeOfData); memset (DebugEntry, 0, sizeof (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY));