On Tue, Feb 05, 2008 at 10:47:07AM -0800, Linus Torvalds wrote: > > > Ingo, Thomas, > should we not do this? > > Otherwise, it seems we generate a section that isn't allocated? > > I think toolchain should add the right flags automatically for sections > that start with ".[ro]data" and ".text", but not for the kernel-specific > ".init.*" sections.
With a bit of help from the bin-utils people (Alan Modra) I recently discovered that the linker generate sections with different names when the flags differs, so fogetting "aw" casues the linekr to generate a section named .init.data.1 (or some other number). But I nevet got to investigate if ld does something magically with these autogenerated section names. But I added a check in modpost and it should warn about the code below. I would prefer the use of __CPUINITDATA __FINITDATA as defined in linux/init.h but otherwise - yes it should be fixed. With the use of __CPUINITDATA we can kill the ifdef too. Sam So something like this (untested - sorry): I sneaked an extra ENTRY() in just to clean up a bit. diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S index 4f283ad..09b38d5 100644 --- a/arch/x86/kernel/head_64.S +++ b/arch/x86/kernel/head_64.S @@ -250,18 +250,13 @@ ENTRY(secondary_startup_64) lretq /* SMP bootup changes these two */ -#ifndef CONFIG_HOTPLUG_CPU - .pushsection .init.data -#endif + __CPUINITDATA .align 8 - .globl initial_code -initial_code: + ENTRY(initial_code) .quad x86_64_start_kernel -#ifndef CONFIG_HOTPLUG_CPU - .popsection -#endif - .globl init_rsp -init_rsp: + __FINITDATA + + ENTRY(init_rsp) .quad init_thread_union+THREAD_SIZE-8 bad_address: -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/