Hi Peter, Thanks for your fast answer. On Mon, 03 Aug 2009 08:31:37 -0700, H. Peter Anvin wrote: > On 08/03/2009 05:04 AM, Jean Delvare wrote: > > Hi Sam, > > > > I am not able to build Linus' latest kernel on my oldest test system. I > > get the following linking error at the end: > > > > LD .tmp_vmlinux1 > > ld:arch/x86/kernel/vmlinux.lds:678: parse error > > > > Which is: > > > > ASSERT((_end - 0xC0000000 <= (512 * 1024 * 1024)), > > "kernel image bigger than KERNEL_IMAGE_SIZE") > > > > Apparently this assertion is relatively new, as I was able to build > > kernel 2.6.29 on the same system. The system has binutils 2.14.90.0.6, > > which is more recent than what is listed in Documentation/Changes > > (2.12). > > > > Any idea? > > > > Old binutils doesn't accept the naked ASSERT(); there has to be a sink > for the data; so one has to do crap like: > > __junk_symbol = ASSERT(...); > > or > > . = ASSERT(...); > > near the end. > > Does this patch fix it for you? You patch doesn't, because you forgot to fix the one ASSERT() call that failed for me ;) but the updated version below does indeed fix the build for me: Index: linux-2.6.31-rc5/arch/x86/kernel/vmlinux.lds.S =================================================================== --- linux-2.6.31-rc5.orig/arch/x86/kernel/vmlinux.lds.S 2009-08-01 22:24:12.000000000 +0200 +++ linux-2.6.31-rc5/arch/x86/kernel/vmlinux.lds.S 2009-08-03 21:22:31.000000000 +0200 @@ -393,8 +393,8 @@ #ifdef CONFIG_X86_32 -ASSERT((_end - LOAD_OFFSET <= KERNEL_IMAGE_SIZE), - "kernel image bigger than KERNEL_IMAGE_SIZE") +. = ASSERT((_end - LOAD_OFFSET <= KERNEL_IMAGE_SIZE), + "kernel image bigger than KERNEL_IMAGE_SIZE"); #else /* * Per-cpu symbols which need to be offset from __per_cpu_load @@ -407,12 +407,12 @@ /* * Build-time check on the image size: */ -ASSERT((_end - _text <= KERNEL_IMAGE_SIZE), - "kernel image bigger than KERNEL_IMAGE_SIZE") +. = ASSERT((_end - _text <= KERNEL_IMAGE_SIZE), + "kernel image bigger than KERNEL_IMAGE_SIZE"); #ifdef CONFIG_SMP -ASSERT((per_cpu__irq_stack_union == 0), - "irq_stack_union is not at start of per-cpu area"); +. = ASSERT((per_cpu__irq_stack_union == 0), + "irq_stack_union is not at start of per-cpu area"); #endif #endif /* CONFIG_X86_32 */ @@ -420,7 +420,7 @@ #ifdef CONFIG_KEXEC #include <asm/kexec.h> -ASSERT(kexec_control_code_size <= KEXEC_CONTROL_CODE_MAX_SIZE, - "kexec control code size is too big") +. = ASSERT(kexec_control_code_size <= KEXEC_CONTROL_CODE_MAX_SIZE, + "kexec control code size is too big"); #endif So I guess you can send this to Linus. Thanks! -- Jean Delvare -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html