Re: [PATCH] move __attribute__((__cold__)) functions back intofinal .text section

From: Andrew Morton
Date: Wed Jul 02 2008 - 02:18:20 EST


On Wed, 18 Jun 2008 12:36:01 +0100 "Jan Beulich" <jbeulich@xxxxxxxxxx> wrote:

> Due to the addition of __attribute__((__cold__)) to a few symbols
> without adjusting the linker scripts, those symbols currently may end
> up outside the [_stext,_etext) range, as they get placed in
> .text.unlikely by (at least) gcc 4.3.0. This may confuse code not only
> outside of the kernel, symbol_put_addr()'s BUG() could also trigger.
> Hence we need to add .text.unlikely (and for future uses of
> __attribute__((__hot__)) also .text.hot) to the TEXT_TEXT() macro.
>
> Issue observed by Lukas Lipavsky.
>
> Cc: Lukas Lipavsky <llipavsky@xxxxxxx>
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
>
> ---
> include/asm-generic/vmlinux.lds.h | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> --- linux-2.6.26-rc6/include/asm-generic/vmlinux.lds.h 2008-04-17 04:49:44.000000000 +0200
> +++ 2.6.26-rc6-hot-cold-text/include/asm-generic/vmlinux.lds.h 2008-06-18 12:19:22.000000000 +0200
> @@ -204,6 +204,7 @@
> * during second ld run in second ld pass when generating System.map */
> #define TEXT_TEXT \
> ALIGN_FUNCTION(); \
> + *(.text.hot) \
> *(.text) \
> *(.ref.text) \
> *(.text.init.refok) \
> @@ -213,7 +214,8 @@
> CPU_KEEP(init.text) \
> CPU_KEEP(exit.text) \
> MEM_KEEP(init.text) \
> - MEM_KEEP(exit.text)
> + MEM_KEEP(exit.text) \
> + *(.text.unlikely)
>
>
> /* sched.text is aling to function alignment to secure we have same
>

So this is now in Sam's
git+ssh://master.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next.git.
But it is not in the present linux-next. Either because Sam added it
after Stephen pulled Sam's tree, or because something screwed up.

So I'll now be dropping it. Sam, please ensure that it gets into
2.6.26 and 2.6.25.x (IMO).

Thanks.

--
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/