diff options
| author | Jason Baron <jbaron@akamai.com> | 2016-08-03 16:46:27 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-08-04 08:50:07 -0400 |
| commit | 10d7227bb911e5ee788fb8f82b1005b821bb7847 (patch) | |
| tree | 2f30e4e4dd430cc713ef5c30ba2f8a5e952ef617 | |
| parent | 5411fd7fdc8713fe17236b7a8f88b74bd8ce9f51 (diff) | |
sparc: support static_key usage in non-module __exit sections
The jump table can reference text found in an __exit section. Thus,
instead of discarding it at build/link time, include EXIT_TEXT as part
of __init and release it at system boot time.
Without this patch the link fails with:
`.exit.text' referenced in section `__jump_table' of xxx.o:
defined in discarded section `.exit.text' of xxx.o
Link: http://lkml.kernel.org/r/d822da427ab07a02a394602eca687104ff682f83.1467837322.git.jbaron@akamai.com
Signed-off-by: Jason Baron <jbaron@akamai.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Chris Metcalf <cmetcalf@mellanox.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Joe Perches <joe@perches.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
| -rw-r--r-- | arch/sparc/kernel/vmlinux.lds.S | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/sparc/kernel/vmlinux.lds.S b/arch/sparc/kernel/vmlinux.lds.S index 7d02b1fef025..d79b3b734245 100644 --- a/arch/sparc/kernel/vmlinux.lds.S +++ b/arch/sparc/kernel/vmlinux.lds.S | |||
| @@ -150,6 +150,13 @@ SECTIONS | |||
| 150 | } | 150 | } |
| 151 | PERCPU_SECTION(SMP_CACHE_BYTES) | 151 | PERCPU_SECTION(SMP_CACHE_BYTES) |
| 152 | 152 | ||
| 153 | #ifdef CONFIG_JUMP_LABEL | ||
| 154 | . = ALIGN(PAGE_SIZE); | ||
| 155 | .exit.text : { | ||
| 156 | EXIT_TEXT | ||
| 157 | } | ||
| 158 | #endif | ||
| 159 | |||
| 153 | . = ALIGN(PAGE_SIZE); | 160 | . = ALIGN(PAGE_SIZE); |
| 154 | __init_end = .; | 161 | __init_end = .; |
| 155 | BSS_SECTION(0, 0, 0) | 162 | BSS_SECTION(0, 0, 0) |
