diff options
author | Tom Rini <trini@kernel.crashing.org> | 2005-09-13 04:25:09 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-09-13 11:22:28 -0400 |
commit | 6a00cbfcf8ffdd719cb5a27e1a0a9779665d1e23 (patch) | |
tree | 3596cb8dc87fa3b8472234670e2022882ee64738 /arch/ppc/kernel/vmlinux.lds.S | |
parent | 5b952b3c143660b6436fcb299b249cefde61c18d (diff) |
[PATCH] ppc32: discard *.exit.text and *.exit.data sections
Discard *.exit.text sections on runtime. We cannot do this on link time
because of the way BUG macros are implemented. If "__exit function" calls
one of those macros, __bug_table section will reference this function.
This is similar to ".altinstructions" situation on i386.
*.exit.data seems to be OK in this respect and is discarded on link
time.
Signed-off-by: Eugene Surovegin <ebs@ebshome.net>
Signed-off-by: Tom Rini <trini@kernel.crashing.org>
Acked-by: Paul Mackerras <paulus@samba.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/ppc/kernel/vmlinux.lds.S')
-rw-r--r-- | arch/ppc/kernel/vmlinux.lds.S | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/ppc/kernel/vmlinux.lds.S b/arch/ppc/kernel/vmlinux.lds.S index 9353584fb710..17d2db7e537d 100644 --- a/arch/ppc/kernel/vmlinux.lds.S +++ b/arch/ppc/kernel/vmlinux.lds.S | |||
@@ -96,6 +96,9 @@ SECTIONS | |||
96 | *(.init.text) | 96 | *(.init.text) |
97 | _einittext = .; | 97 | _einittext = .; |
98 | } | 98 | } |
99 | /* .exit.text is discarded at runtime, not link time, | ||
100 | to deal with references from __bug_table */ | ||
101 | .exit.text : { *(.exit.text) } | ||
99 | .init.data : { | 102 | .init.data : { |
100 | *(.init.data); | 103 | *(.init.data); |
101 | __vtop_table_begin = .; | 104 | __vtop_table_begin = .; |
@@ -190,5 +193,6 @@ SECTIONS | |||
190 | /* Sections to be discarded. */ | 193 | /* Sections to be discarded. */ |
191 | /DISCARD/ : { | 194 | /DISCARD/ : { |
192 | *(.exitcall.exit) | 195 | *(.exitcall.exit) |
196 | *(.exit.data) | ||
193 | } | 197 | } |
194 | } | 198 | } |