On 9 September 2015 at 17:26, Gao, Liming <[email protected]> wrote: > Michael: > Do you use the linker script BaseTools/Scripts/GccBase.lds and -z > common-page-size=4096? >
Are you building for 32-bit ARM by any chance? That does not have this feature wired up yet. I posted a v2 of my series that addresses this yesterday. > From: Michael Zimmermann [mailto:[email protected]] > Sent: Wednesday, September 9, 2015 3:22 PM > To: Yao, Jiewen > Cc: Gao, Liming; [email protected] > Subject: Re: [edk2] Section Alignment of elf binaries compiled with GCC(Linux) > > Unfortunately I missed the replies but I debugged this problem further and > the Problem is that GenFw set's the alignment based on "sh_addralign" in the > Elf header. > > 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. > > On Tue, Aug 18, 2015 at 4:49 AM, Yao, Jiewen > <[email protected]<mailto:[email protected]>> wrote: > OK > > -----Original Message----- > From: Gao, Liming > Sent: Tuesday, August 18, 2015 10:48 AM > To: Yao, Jiewen; Michael Zimmermann; > [email protected]<mailto:[email protected]> > Subject: RE: [edk2] Section Alignment of elf binaries compiled with GCC(Linux) > > Jiewen: > The updated message is useful. I suggest to change error level from > EFI_D_ERROR to EFI_D_INFO. > > Thanks > Liming > -----Original Message----- > From: Yao, Jiewen > Sent: Tuesday, August 18, 2015 10:46 AM > To: Gao, Liming; Michael Zimmermann; > [email protected]<mailto:[email protected]> > Subject: RE: [edk2] Section Alignment of elf binaries compiled with GCC(Linux) > > Hi > How about we update debug message like below: > > Index: PropertiesTable.c > =================================================================== > --- PropertiesTable.c (revision 18191) > +++ PropertiesTable.c (working copy) > @@ -1120,7 +1120,7 @@ > > SetPropertiesTableSectionAlignment (SectionAlignment); > if ((SectionAlignment & (EFI_ACPI_RUNTIME_PAGE_ALLOCATION_ALIGNMENT - 1)) > != 0) { > - DEBUG ((EFI_D_ERROR, "!!!!!!!! InsertImageRecord - Section > Alignment(0x%x) is not %dK !!!!!!!!\n", > + DEBUG ((EFI_D_ERROR, "!!!!!!!! UEFI2.5 PropertiesTable - Runtime Driver > Section Alignment(0x%x) is not %dK !!!!!!!!\n", > SectionAlignment, EFI_ACPI_RUNTIME_PAGE_ALLOCATION_ALIGNMENT >> 10)); > PdbPointer = PeCoffLoaderGetPdbPointer ((VOID*) (UINTN) ImageAddress); > if (PdbPointer != NULL) { > > > > > -----Original Message----- > From: edk2-devel > [mailto:[email protected]<mailto:[email protected]>] > On Behalf Of Gao, Liming > Sent: Tuesday, August 18, 2015 10:39 AM > To: Michael Zimmermann; > [email protected]<mailto:[email protected]> > Subject: Re: [edk2] Section Alignment of elf binaries compiled with GCC(Linux) > > Hi, > This is a warning message that describes the runtime driver alignment is > not 4K. > > UEFI PropertiesTable table feature expects all runtime driver alignment is > 4K. When DxeCore loads Runtime driver, it will check its alignment and report > such warning message if it doesn't meet with the alignment. If you want to > enable this feature, you need to make sure all runtime driver at 4K. If you > don't enable it, you can just ignore this message. > > To configure runtime driver with 4K alignment, you can modify DSC file to > add the following section. > [BuildOptions.common.EDKII.DXE_RUNTIME_DRIVER] > GCC: *_*_*_DLINK_FLAGS = -z common-page-size=0x1000 > MSFT: *_*_*_DLINK_FLAGS = /ALIGN:4096 > > Thanks > Liming > -----Original Message----- > From: edk2-devel > [mailto:[email protected]<mailto:[email protected]>] > On Behalf Of Michael Zimmermann > Sent: Sunday, August 16, 2015 12:32 PM > To: [email protected]<mailto:[email protected]> > Subject: [edk2] Section Alignment of elf binaries compiled with GCC(Linux) > > When booting(a new device I'm currently working on) I get these warnings: > !!!!!!!! InsertImageRecord - Section Alignment(0x20) is not 4K !!!!!!!! > > the warning is raised by "MdeModulePkg/Core/Dxe/Misc/PropertiesTable.c" and > when compiling using GCC from Linux, the SectionAlignment is set by > "BaseTools/Source/C/GenFw/Elf32Convert.c". > > I checked the resulting binaries using "readpe" and indeed they have a > SectionAlignment of 0x20, while the precompiled binaries like Shell.efi have > a Alignment of 0x1000(4K). > > So, is this a bug of my GCC compiler or of EDK2? > _______________________________________________ > edk2-devel mailing list > [email protected]<mailto:[email protected]> > https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ > edk2-devel mailing list > [email protected]<mailto:[email protected]> > https://lists.01.org/mailman/listinfo/edk2-devel > > _______________________________________________ > 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

