diff --git a/BaseTools/Source/C/GenFw/Elf32Convert.c b/BaseTools/Source/C/GenFw/Elf32Convert.c index e1b92ebd71..4b330a6166 100644 --- a/BaseTools/Source/C/GenFw/Elf32Convert.c +++ b/BaseTools/Source/C/GenFw/Elf32Convert.c @@ -218,6 +218,15 @@ CoffAlign ( return (Offset + mCoffAlignment - 1) & ~(mCoffAlignment - 1); } +STATIC +UINT32 +DebugRvaAlign ( + UINT32 Offset + ) +{ + return (Offset + 3) & ~3; +} + // // filter functions // @@ -365,7 +374,7 @@ ScanSections32 ( assert (FALSE); } - mDebugOffset = mCoffOffset; + mDebugOffset = DebugRvaAlign(mCoffOffset); if (mEhdr->e_machine != EM_ARM) { mCoffOffset = CoffAlign(mCoffOffset); @@ -423,7 +432,7 @@ ScanSections32 ( // section alignment. // if (SectionCount > 0) { - mDebugOffset = mCoffOffset; + mDebugOffset = DebugRvaAlign(mCoffOffset); } mCoffOffset = mDebugOffset + sizeof(EFI_IMAGE_DEBUG_DIRECTORY_ENTRY) + sizeof(EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY) + diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c b/BaseTools/Source/C/GenFw/Elf64Convert.c index c758ed9d64..a3f1f5d3d4 100644 --- a/BaseTools/Source/C/GenFw/Elf64Convert.c +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c @@ -211,6 +211,15 @@ CoffAlign ( return (Offset + mCoffAlignment - 1) & ~(mCoffAlignment - 1); } +STATIC +UINT32 +DebugRvaAlign ( + UINT32 Offset + ) +{ + return (Offset + 3) & ~3; +} + // // filter functions // @@ -359,7 +368,7 @@ ScanSections64 ( assert (FALSE); } - mDebugOffset = mCoffOffset; + mDebugOffset = DebugRvaAlign(mCoffOffset); if (mEhdr->e_machine != EM_ARM) { mCoffOffset = CoffAlign(mCoffOffset); @@ -412,7 +421,7 @@ ScanSections64 ( // section alignment. // if (SectionCount > 0) { - mDebugOffset = mCoffOffset; + mDebugOffset = DebugRvaAlign(mCoffOffset); } mCoffOffset = mDebugOffset + sizeof(EFI_IMAGE_DEBUG_DIRECTORY_ENTRY) + sizeof(EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY) +