From: Vladimir Serbinenko Date: Sun, 21 Feb 2016 17:44:18 +0000 (+0100) Subject: Simplify reloc X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=f9ee0c3e5dafb1d44fd29593d286e2f15cbda019;p=thirdparty%2Fgrub.git Simplify reloc --- diff --git a/grub-core/kern/arm/startup.S b/grub-core/kern/arm/startup.S index 8e233d4ec..fd56b31a6 100644 --- a/grub-core/kern/arm/startup.S +++ b/grub-core/kern/arm/startup.S @@ -122,12 +122,6 @@ reloc_done: add r1, r1, #GRUB_KERNEL_MACHINE_STACK_SIZE and r1, r1, #~0x7 @ Ensure 8-byte alignment - - @ Do not put modules before the end of relocations. - @ Instead increase stack size - @ r1 = max (r1, r0) - cmp r0, r1 - movcs r1, r0 sub sp, r1, #8 add r1, r1, #1024 diff --git a/include/grub/arm/uboot/kernel.h b/include/grub/arm/uboot/kernel.h index 06e543324..ce0b149cc 100644 --- a/include/grub/arm/uboot/kernel.h +++ b/include/grub/arm/uboot/kernel.h @@ -26,7 +26,7 @@ #endif /* ! ASM_FILE */ -#define GRUB_KERNEL_MACHINE_STACK_SIZE 0x40000 +#define GRUB_KERNEL_MACHINE_STACK_SIZE GRUB_KERNEL_ARM_STACK_SIZE #define GRUB_KERNEL_MACHINE_HEAP_SIZE (grub_size_t) (16 * 1024 * 1024) #endif /* ! GRUB_KERNEL_MACHINE_HEADER */ diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c index 34878c97f..a6763d756 100644 --- a/util/grub-mkimagexx.c +++ b/util/grub-mkimagexx.c @@ -1524,6 +1524,11 @@ finish_reloc_translation_pe (struct translate_context *ctx, struct grub_mkimage_ } layout->reloc_size = ctx->current_address; + if (image_target->elf_target == EM_ARM && layout->reloc_size > GRUB_KERNEL_ARM_STACK_SIZE) + grub_util_error ("Reloc section (%d) is bigger than stack size (%d). " + "This breaks assembly assumptions. Please increase stack size", + (int) layout->reloc_size, + (int) GRUB_KERNEL_ARM_STACK_SIZE); } /*