On Thu, 27 Apr 2023 at 07:17, gaoliming via groups.io
<gaoliming=byosoft.com...@groups.io> wrote:
>
> BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4425
>
> This change is to support the pre-built EFI image on the old Edk2 code.
> Old Edk2 GenFw tool generates the wrong debug entry in EFI image.
> Those pre-built images can be loaded before d6457b309.
>
> Signed-off-by: Liming Gao <gaolim...@byosoft.com.cn>
> Cc: Ard Biesheuvel <a...@kernel.org>
> Cc: Michael Kubacki <michael.kuba...@microsoft.com>
> ---
>  MdePkg/Library/BasePeCoffLib/BasePeCoff.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/MdePkg/Library/BasePeCoffLib/BasePeCoff.c 
> b/MdePkg/Library/BasePeCoffLib/BasePeCoff.c
> index 4b71176a0c..4636842eeb 100644
> --- a/MdePkg/Library/BasePeCoffLib/BasePeCoff.c
> +++ b/MdePkg/Library/BasePeCoffLib/BasePeCoff.c
> @@ -735,7 +735,7 @@ PeCoffLoaderGetImageInfo (
>                                       &Size,
>                                       &DebugEntry
>                                       );
> -          if (RETURN_ERROR (Status) || (Size != ReadSize)) {
> +          if ((ImageContext->DebugDirectoryEntryRva == 0) && (RETURN_ERROR 
> (Status) || (Size != ReadSize))) {

I'm not sure I understand how this fixes anything. Why is the
condition 'RVA == 0' significant here?

Would something like the below perhaps work as well?

--- a/MdePkg/Library/BasePeCoffLib/BasePeCoff.c
+++ b/MdePkg/Library/BasePeCoffLib/BasePeCoff.c
@@ -755,6 +755,17 @@ PeCoffLoaderGetImageInfo (
               ImageContext->ImageSize += DebugEntry.SizeOfData;
             }

+            //
+            // Implementations of GenFw before commit 60e85a39fe49071 will
+            // concatenate the debug directory entry and the codeview entry,
+            // and erroneously put the combined size into the debug directory
+            // entry's size field. If this is the case, no other relevant
+            // directory entries can exist, and we can terminate here.
+            //
+            if (DebugEntry.FileOffset ==
(DebugDirectoryEntryFileOffset + Index)) {
+              break;
+            }
+
             continue;
           }


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#103717): https://edk2.groups.io/g/devel/message/103717
Mute This Topic: https://groups.io/mt/98531785/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to