From: Ian Wienand Date: Wed, 20 Jul 2005 05:32:00 +0000 (-0700) Subject: [IA64] Simulator bootloader fails with gcc 4 X-Git-Url: http://git.efficios.com/?a=commitdiff_plain;h=4aec0fb12267718c750475f3404337ad13caa8f5;p=deliverable%2Flinux.git [IA64] Simulator bootloader fails with gcc 4 After building a fresh tree with gcc 4 I can't boot the simulator as the bootloader loader dies with loading /home/ianw/kerntest/kerncomp//build/sim_defconfig/vmlinux... failed to read phdr After some investigation I believe this is do with differences between the alignment of variables on the stack between gcc 3 and 4 and the ski simulator. If you trace through with the simulator you can see that the disk_stat structure value returned from the SSC_WAIT_COMPLETION call seems to be only half loaded. I guess it doesn't like the alignment of the input. Signed-off-by: Ian Wienand Signed-off-by: Tony Luck --- diff --git a/arch/ia64/hp/sim/boot/bootloader.c b/arch/ia64/hp/sim/boot/bootloader.c index 51a7b7b4dd0e..a7bed60b69f9 100644 --- a/arch/ia64/hp/sim/boot/bootloader.c +++ b/arch/ia64/hp/sim/boot/bootloader.c @@ -30,10 +30,14 @@ struct disk_req { unsigned len; }; +/* SSC_WAIT_COMPLETION appears to want this large alignment. gcc < 4 + * seems to give it by default, however gcc > 4 is smarter and may + * not. + */ struct disk_stat { int fd; unsigned count; -}; +} __attribute__ ((aligned (16))); extern void jmp_to_kernel (unsigned long bp, unsigned long e_entry); extern struct ia64_boot_param *sys_fw_init (const char *args, int arglen);