x86: force suitable alignment in sources rather than in linker script Besides being more logical this also allows verifying correct recording of alignments in .o files. The cpu0_stack related ASSERT() in xen.lds.S is now of questionable value (as it now verifies correct tool chain behavior), but I've left it in nevertheless. Signed-off-by: Jan Beulich --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -89,6 +89,7 @@ struct hvm_function_table hvm_funcs __re */ #define HVM_IOBITMAP_SIZE (3 * PAGE_SIZE) unsigned long __section(".bss.page_aligned") + __attribute__((aligned(PAGE_SIZE))) hvm_io_bitmap[HVM_IOBITMAP_SIZE / BYTES_PER_LONG]; /* Xen command-line option to enable HAP */ --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -125,7 +125,8 @@ #include /* Mapping of the fixmap space needed early. */ -l1_pgentry_t __section(".bss.page_aligned") l1_fixmap[L1_PAGETABLE_ENTRIES]; +l1_pgentry_t __section(".bss.page_aligned") __attribute__((aligned(PAGE_SIZE))) + l1_fixmap[L1_PAGETABLE_ENTRIES]; #define MEM_LOG(_f, _a...) gdprintk(XENLOG_WARNING , _f "\n" , ## _a) @@ -588,7 +589,8 @@ static inline void guest_get_eff_kern_l1 TOGGLE_MODE(); } -const char __section(".bss.page_aligned.const") zero_page[PAGE_SIZE]; +const char __section(".bss.page_aligned.const") + __attribute__((aligned(PAGE_SIZE))) zero_page[PAGE_SIZE]; static void invalidate_shadow_ldt(struct vcpu *v, int flush) { --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -105,7 +105,8 @@ unsigned long __read_mostly xen_virt_end DEFINE_PER_CPU(struct tss_struct, init_tss); -char __section(".bss.stack_aligned") cpu0_stack[STACK_SIZE]; +char __section(".bss.stack_aligned") __attribute__((aligned(STACK_SIZE))) + cpu0_stack[STACK_SIZE]; struct cpuinfo_x86 __read_mostly boot_cpu_data = { 0, 0, 0, 0, -1 }; --- a/xen/arch/x86/xen.lds.S +++ b/xen/arch/x86/xen.lds.S @@ -222,7 +222,6 @@ SECTIONS } :text .data : { /* Data */ - . = ALIGN(PAGE_SIZE); *(.data.page_aligned) *(.data) *(.data.rel) @@ -231,10 +230,8 @@ SECTIONS } :text .bss : { /* BSS */ - . = ALIGN(STACK_SIZE); __bss_start = .; *(.bss.stack_aligned) - . = ALIGN(PAGE_SIZE); *(.bss.page_aligned*) *(.bss) . = ALIGN(SMP_CACHE_BYTES);