Re: wrongly marked __init/__initdata for CPU hotplug

From: Andi Kleen
Date: Wed Jan 25 2006 - 23:27:11 EST


> This is nasty. init() calls do_basic_setup() which calls
> do_initcalls(). init is normal text. do_basic_setup and do_initcalls
> are .init.text. gcc has inlined do_basic_setup and do_initcalls into
> init, even though they have different section attributes. Naughty gcc.
>
> This was using GCC: (GNU) 4.0.2 20050901 (prerelease) (SUSE Linux).
> Log a gcc bug. Not a good omen for the idea of letting gcc decide when
> to inline!

Someone should file a bug in the gcc bugzilla then I guess.
Can you do that or should I?

>
> Looking at the C code for do_initcalls(), the reference is obviously to
> initcall_debug. I am puzzled about why the objdump lists
> .init.data+0x15b when initcall_debug is really at .init.data+0x164.

Ah thanks - ok i mislooked then. Anyways, it's not a bug.

> BTW, does anybody know why init() is not defined as __init?

Because it would crash then after returning from free_initmem.

-Andi
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/