Reviewed-by: Liming Gao <[email protected]> Besides, Dennis doesn't own BaseTools any longer.
Thanks Liming -----Original Message----- From: edk2-devel [mailto:[email protected]] On Behalf Of Ard Biesheuvel Sent: Friday, September 11, 2015 2:53 PM To: [email protected]; Gao, Liming; Liu, Yingke D Cc: Laszlo Ersek; Leif Lindholm; Ard Biesheuvel Subject: Re: [edk2] [PATCH] BaseTools/GenFw: align RVA of debug On 9 September 2015 at 11:44, Ard Biesheuvel <[email protected]> wrote: > SVN commit r18077 ("BaseTools/GenFw: move .debug contents to .data to > save space") removed the separate .debug section after moving its > contents into .text or .data. However, this change does not take into > account that some of these contents need to appear at a 32-bit aligned > offset. So align the debug data RVA to 32 bits. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Ard Biesheuvel <[email protected]> @Dennis: any comments? > --- > BaseTools/Source/C/GenFw/Elf32Convert.c | 13 +++++++++++-- > BaseTools/Source/C/GenFw/Elf64Convert.c | 13 +++++++++++-- > 2 files changed, 22 insertions(+), 4 deletions(-) > > diff --git a/BaseTools/Source/C/GenFw/Elf32Convert.c > b/BaseTools/Source/C/GenFw/Elf32Convert.c > index e1b92ebd713e..4b330a61669f 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 c758ed9d64a6..a3f1f5d3d4c7 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) + > -- > 1.9.1 > _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

