On 07/28/15 18:42, Ard Biesheuvel wrote: > Now that GenFw correctly propagates the minimum alignment of the ELF > input sections to the PE/COFF binary, we can simply select 'auto' > alignment in the FDF Rule section instead of tweaking it by hand. > > Also add the FIXED FFS attribute to the module types that may execute > in place. This enables a newly added optimization in GenFfs that strips > redundant padding, preventing excessive waste of FV space if the section > alignment is considerable (i.e., 2 KB or 4 KB) > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org> > --- > ArmVirtPkg/ArmVirtQemu.fdf | 12 ++++++------ > ArmVirtPkg/ArmVirtXen.fdf | 12 ++++++------ > 2 files changed, 12 insertions(+), 12 deletions(-) > > diff --git a/ArmVirtPkg/ArmVirtQemu.fdf b/ArmVirtPkg/ArmVirtQemu.fdf > index 4ef0f8bb6aa4..3c0487cd95b6 100644 > --- a/ArmVirtPkg/ArmVirtQemu.fdf > +++ b/ArmVirtPkg/ArmVirtQemu.fdf > @@ -309,20 +309,20 @@ [FV.FVMAIN_COMPACT] > ############################################################################ > > [Rule.Common.SEC] > - FILE SEC = $(NAMED_GUID) RELOCS_STRIPPED { > - TE TE Align = 128 $(INF_OUTPUT)/$(MODULE_NAME).efi > + FILE SEC = $(NAMED_GUID) RELOCS_STRIPPED FIXED { > + TE TE Align = Auto $(INF_OUTPUT)/$(MODULE_NAME).efi > } > > [Rule.Common.PEI_CORE] > - FILE PEI_CORE = $(NAMED_GUID) { > - TE TE Align = 8 $(INF_OUTPUT)/$(MODULE_NAME).efi > + FILE PEI_CORE = $(NAMED_GUID) FIXED { > + TE TE Align = Auto $(INF_OUTPUT)/$(MODULE_NAME).efi > UI STRING ="$(MODULE_NAME)" Optional > } > > [Rule.Common.PEIM] > - FILE PEIM = $(NAMED_GUID) { > + FILE PEIM = $(NAMED_GUID) FIXED { > PEI_DEPEX PEI_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex > - TE TE Align = 8 $(INF_OUTPUT)/$(MODULE_NAME).efi > + TE TE Align = Auto $(INF_OUTPUT)/$(MODULE_NAME).efi > UI STRING="$(MODULE_NAME)" Optional > } > > diff --git a/ArmVirtPkg/ArmVirtXen.fdf b/ArmVirtPkg/ArmVirtXen.fdf > index f98772b7191d..97cab4b058f2 100644 > --- a/ArmVirtPkg/ArmVirtXen.fdf > +++ b/ArmVirtPkg/ArmVirtXen.fdf > @@ -220,20 +220,20 @@ [FV.FVMAIN_COMPACT] > ############################################################################ > > [Rule.Common.SEC] > - FILE SEC = $(NAMED_GUID) RELOCS_STRIPPED { > - TE TE Align = 4K $(INF_OUTPUT)/$(MODULE_NAME).efi > + FILE SEC = $(NAMED_GUID) RELOCS_STRIPPED FIXED { > + TE TE Align = Auto $(INF_OUTPUT)/$(MODULE_NAME).efi > } > > [Rule.Common.PEI_CORE] > - FILE PEI_CORE = $(NAMED_GUID) { > - TE TE Align = 8 $(INF_OUTPUT)/$(MODULE_NAME).efi > + FILE PEI_CORE = $(NAMED_GUID) FIXED { > + TE TE Align = Auto $(INF_OUTPUT)/$(MODULE_NAME).efi > UI STRING ="$(MODULE_NAME)" Optional > } > > [Rule.Common.PEIM] > - FILE PEIM = $(NAMED_GUID) { > + FILE PEIM = $(NAMED_GUID) FIXED { > PEI_DEPEX PEI_DEPEX Optional $(INF_OUTPUT)/$(MODULE_NAME).depex > - TE TE Align = 8 $(INF_OUTPUT)/$(MODULE_NAME).efi > + TE TE Align = Auto $(INF_OUTPUT)/$(MODULE_NAME).efi > UI STRING="$(MODULE_NAME)" Optional > } > >
So, if I understand correctly, FIXED has no drawback even when building with gcc, and when used in a clang build, it enables an optimization that is *then* significant. And, because there is no penalty when using gcc, it's simpler to add FIXED in a fixed way (pun intended) than to create clang-specific rules (eg. by duplicating the current rules and restricting them with *_XCODE5_* and *_GCC4x_* respectively). ... I hope the above mishmash can be called "review". :) Reviewed-by: Laszlo Ersek <ler...@redhat.com> _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel