Ard: He reports that the 'common-page-size' flag doesn't work. When he configures its value to 4096, the alignment in the converted EFI image is still default 32. Could you help check it?
The detail report is attached below. The 'common-page-size' flag doesn't change the value of this field though. what it does change is the Alignment value of the Program Headers: Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align LOAD 0x010000 0x00000000 0x00000000 0x042f8 0x042f8 R E 0x10000 LOAD 0x0142f8 0x000142f8 0x000142f8 0x000d4 0x000f4 RW 0x10000 GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RWE 0x10 the section alignment still stays at 0/1/4. Thanks Liming -----Original Message----- From: edk2-devel [mailto:[email protected]] On Behalf Of Ard Biesheuvel Sent: Wednesday, September 09, 2015 5:51 PM To: Gao, Liming Cc: [email protected]; [email protected]; Liu, Yingke D; [email protected] Subject: Re: [edk2] [PATCH] BaseTools/GenFw: align RVA of debug On 9 September 2015 at 11:46, Gao, Liming <[email protected]> wrote: > Ard: > Dose this patch fix Section Alignment of elf binaries compiled with > GCC(Linux) reported by Michael Zimmermann <[email protected]>? > No. This fixes a problem on 32-bit ARM where the debug entry is resolved before the MMU is up, which results in an alignment fault. The issue you refer to is about the properties table memory protection feature, right? > -----Original Message----- > From: Ard Biesheuvel [mailto:[email protected]] > Sent: Wednesday, September 09, 2015 5:44 PM > To: [email protected]; Gao, Liming; Liu, Yingke D > Cc: [email protected]; [email protected]; Ard Biesheuvel > Subject: [PATCH] BaseTools/GenFw: align RVA of debug > > 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]> > --- > 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

