On Wed, Jun 25, 2025 at 11:04:14AM +0200, Jan Beulich wrote: > For (aiui) backwards compatibility reasons, gcc defaults to a mode that > was the exclusive one up to gcc4.8, establishing 32-byte alignment for > aggregates larger than a certain size. We don't rely on such, and hence > we can do with the psABI-compliant 16-byte alignment. > > Savings in the build I'm looking at: > - .data.ro_after_init 344 bytes > - .rodata + .data.rel.ro 1904 bytes > - .init.*data.cf_clobber 232 bytes > - .init (overall) 688 bytes > - .data.read_mostly 864 bytes > - .data 600 bytes > - .bss 1472 bytes > > Overall xen-syms' _end happens to move down there by 2 pages. > > Clang doesn't support the option, presumably because they never over- > aligned data. > > Signed-off-by: Jan Beulich <jbeul...@suse.com> > > --- a/xen/arch/x86/arch.mk > +++ b/xen/arch/x86/arch.mk > @@ -8,6 +8,9 @@ CFLAGS += -DXEN_IMG_OFFSET=$(XEN_IMG_OFF > # Prevent floating-point variables from creeping into Xen. > CFLAGS += -msoft-float > > +# Don't needlessly over-align larger aggregates. > +CFLAGS-$(CONFIG_CC_IS_GCC) += -malign-data=abi
Instead of using CONFIG_CC_IS_GCC should be just use cc-option-add to check for the option begin present, regardless of the underlying compiler? Thanks, Roger.