Commit fb5e2b379732e1a6ea32392980bb42e0212db842
Committed by
Sam Ravnborg
1 parent
37a4c94074
Exists in
master
and in
7 other branches
vmlinux.lds: move __attribute__((__cold__)) functions back into final .text section
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. Signed-off-by: Jan Beulich <jbeulich@novell.com> Tested-by: Lukas Lipavsky <llipavsky@suse.cz> Cc: <stable@kernel.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Showing 1 changed file with 3 additions and 1 deletions Side-by-side Diff
include/asm-generic/vmlinux.lds.h
... | ... | @@ -221,6 +221,7 @@ |
221 | 221 | * during second ld run in second ld pass when generating System.map */ |
222 | 222 | #define TEXT_TEXT \ |
223 | 223 | ALIGN_FUNCTION(); \ |
224 | + *(.text.hot) \ | |
224 | 225 | *(.text) \ |
225 | 226 | *(.ref.text) \ |
226 | 227 | *(.text.init.refok) \ |
... | ... | @@ -230,7 +231,8 @@ |
230 | 231 | CPU_KEEP(init.text) \ |
231 | 232 | CPU_KEEP(exit.text) \ |
232 | 233 | MEM_KEEP(init.text) \ |
233 | - MEM_KEEP(exit.text) | |
234 | + MEM_KEEP(exit.text) \ | |
235 | + *(.text.unlikely) | |
234 | 236 | |
235 | 237 | |
236 | 238 | /* sched.text is aling to function alignment to secure we have same |