* [PATCH] mark __init code noinline to stop erroneous inclusions
@ 2005-10-17 21:37 Ben Dooks
2005-10-18 1:03 ` Coywolf Qi Hunt
0 siblings, 1 reply; 3+ messages in thread
From: Ben Dooks @ 2005-10-17 21:37 UTC (permalink / raw)
To: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 361 bytes --]
Make __init also have the noinline attribute attached
to it, to stop code marked as __init being included
into non __init code. This not only wastes space, but
also makes it impossible to track down any calls from
non-init code as differing compilers and optimisations
make differing decisions on what to inline.
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
[-- Attachment #2: init-noinline-code.patch --]
[-- Type: text/plain, Size: 643 bytes --]
--- linux-2.6.14-rc4-git4-bjd2/include/linux/init.h 2005-09-01 21:02:39.000000000 +0100
+++ linux-2.6.14-rc4-git4-bjd3/include/linux/init.h 2005-10-17 22:26:48.000000000 +0100
@@ -41,7 +41,7 @@
/* These are for everybody (although not all archs will actually
discard it in modules) */
-#define __init __attribute__ ((__section__ (".init.text")))
+#define __init noinline __attribute__ ((__section__ (".init.text")))
#define __initdata __attribute__ ((__section__ (".init.data")))
#define __exitdata __attribute__ ((__section__(".exit.data")))
#define __exit_call __attribute_used__ __attribute__ ((__section__ (".exitcall.exit")))
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] mark __init code noinline to stop erroneous inclusions
2005-10-17 21:37 [PATCH] mark __init code noinline to stop erroneous inclusions Ben Dooks
@ 2005-10-18 1:03 ` Coywolf Qi Hunt
2005-10-18 10:38 ` Ben Dooks
0 siblings, 1 reply; 3+ messages in thread
From: Coywolf Qi Hunt @ 2005-10-18 1:03 UTC (permalink / raw)
To: Ben Dooks; +Cc: linux-kernel
On 10/18/05, Ben Dooks <ben@fluff.org.uk> wrote:
> Make __init also have the noinline attribute attached
> to it, to stop code marked as __init being included
> into non __init code. This not only wastes space, but
> also makes it impossible to track down any calls from
> non-init code as differing compilers and optimisations
> make differing decisions on what to inline.
I think this is overkill. __init code could be inlined into __init
code. Instead we should make sure to not to call __init code from
non-init code `directly'.
It is a gcc bug. Gcc really should respects __attribute__
((__section__ (".init.text"))), and not inline the code in that
section.
--
Coywolf Qi Hunt
http://sosdg.org/~coywolf/
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] mark __init code noinline to stop erroneous inclusions
2005-10-18 1:03 ` Coywolf Qi Hunt
@ 2005-10-18 10:38 ` Ben Dooks
0 siblings, 0 replies; 3+ messages in thread
From: Ben Dooks @ 2005-10-18 10:38 UTC (permalink / raw)
To: Coywolf Qi Hunt; +Cc: Ben Dooks, linux-kernel
On Tue, Oct 18, 2005 at 09:03:20AM +0800, Coywolf Qi Hunt wrote:
> On 10/18/05, Ben Dooks <ben@fluff.org.uk> wrote:
> > Make __init also have the noinline attribute attached
> > to it, to stop code marked as __init being included
> > into non __init code. This not only wastes space, but
> > also makes it impossible to track down any calls from
> > non-init code as differing compilers and optimisations
> > make differing decisions on what to inline.
>
> I think this is overkill. __init code could be inlined into __init
> code. Instead we should make sure to not to call __init code from
> non-init code `directly'.
This is very difficult to detect when the compiler is inlining the
function code.
> It is a gcc bug. Gcc really should respects __attribute__
> ((__section__ (".init.text"))), and not inline the code in that
> section.
>From the gcc 4.0 manual,
http://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Function-Attributes.html
section ("section-name")
Normally, the compiler places the code it generates in the
text section. Sometimes, however, you need additional sections,
or you need certain particular functions to appear in special sections.
The section attribute specifies that a function lives in a particular
section.
My reading of the passage is that the output code will be put in
the specified section. It does not say wether or not the compiler
is allowed to do any other optimisations it sees fit on the data.
My belief is that the compiler should be able to do this form of
optimisation, unless we tell it otherwise. The only harm is that
it makes it difficult to detect errors from compilers that do not
do it.
--
Ben (ben@fluff.org, http://www.fluff.org/)
'a smiley only costs 4 bytes'
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2005-10-18 10:38 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-10-17 21:37 [PATCH] mark __init code noinline to stop erroneous inclusions Ben Dooks
2005-10-18 1:03 ` Coywolf Qi Hunt
2005-10-18 10:38 ` Ben Dooks
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®