From: Tom Rini Date: Tue, 13 Sep 2005 08:25:09 +0000 (-0700) Subject: [PATCH] ppc32: discard *.exit.text and *.exit.data sections X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=6a00cbfcf8ffdd719cb5a27e1a0a9779665d1e23;p=openwrt%2Fstaging%2Fblogic.git [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 Signed-off-by: Tom Rini Acked-by: Paul Mackerras Cc: Benjamin Herrenschmidt Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- 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 *(.init.text) _einittext = .; } + /* .exit.text is discarded at runtime, not link time, + to deal with references from __bug_table */ + .exit.text : { *(.exit.text) } .init.data : { *(.init.data); __vtop_table_begin = .; @@ -190,5 +193,6 @@ SECTIONS /* Sections to be discarded. */ /DISCARD/ : { *(.exitcall.exit) + *(.exit.data) } }