Re: CONFIG_UNWIND_INFO

From: Jan Beulich
Date: Wed Feb 08 2006 - 11:10:16 EST


Attached an updated patch, disallowing the option for all architectures that have been determined to potentially have
problems with the resulting relocations. Jan

>>> Andrew Morton <akpm@xxxxxxxx> 01.02.06 09:53:24 >>>
"Jan Beulich" <jbeulich@xxxxxxxxxx> wrote:
>
> >>> Andrew Morton <akpm@xxxxxxxx> 02/01/06 9:14 AM >>>
> >Andi Kleen <ak@xxxxxxx> wrote:
> >>
> >> On Wednesday 01 February 2006 08:51, Andrew Morton wrote:
> >> > Andi Kleen <ak@xxxxxxx> wrote:
> >> > >
> >> > > On Wednesday 01 February 2006 05:19, you wrote:
> >> > > > Hey Andi,
> >> > > > What's the deal with this option ? It doesn't seem to be
> >> > > > referenced from any Kconfig, but it shows up in a bunch of places.
> >> > > >
> >> > > > Your commit had the message..
> >> > > >
> >> > > > As a follow-up to the introduction of CONFIG_UNWIND_INFO, this
> >> > > > separates the generation of frame unwind information for x86-64 from
> >> > > > that of full debug information.
> >> > > >
> >> > > > But it appears that the 'introduction' didn't happen :-)
> >> > >
> >> > > It was stuck in -mm* due to it being enabled in all cases broke
> >> > > ppc64. I guess it'll go in for 2.6.17, but Andrew and Jan should
> >> > > know details.
> >> >
> >> > Didn't we decide that it was causing the stack to wrap around the 4G
> >> > boundary on powerpc compat tasks? Something like that.
> >>
> >> Wasn't that the large stack randomization patch?
> >
> >Oh, yeah, confused.
> >
> >CONFIG_UNWIND_INFO screwed up the module loader. I think they fixed that -
> >I saw a patch floating about.
>
> So, any chance to get this in, maybe even for 2.6.16?
>

Dunno. You tell me - does it break any other architectures? I don't know.

If you can identify the problematic code in powerpc and then see if any
other architectures do anything similar then that would give some
confidence.
From: Jan Beulich <jbeulich@xxxxxxxxxx>

As a foundation for reliable stack unwinding, this adds a config option
(available to all architectures except IA64 and those where the module loader
might have problems with the resulting relocations) to enable the generation
of frame unwind information.

Signed-Off-By: Jan Beulich <jbeulich@xxxxxxxxxx>

diff -Npru /home/jbeulich/tmp/linux-2.6.16-rc2/Makefile 2.6.16-rc2-unwind-info/Makefile
--- /home/jbeulich/tmp/linux-2.6.16-rc2/Makefile 2006-02-06 11:01:33.000000000 +0100
+++ 2.6.16-rc2-unwind-info/Makefile 2006-02-06 11:12:17.000000000 +0100
@@ -518,6 +518,10 @@ else
CFLAGS += -fomit-frame-pointer
endif

+ifdef CONFIG_UNWIND_INFO
+CFLAGS += -fasynchronous-unwind-tables
+endif
+
ifdef CONFIG_DEBUG_INFO
CFLAGS += -g
endif
diff -Npru /home/jbeulich/tmp/linux-2.6.16-rc2/lib/Kconfig.debug 2.6.16-rc2-unwind-info/lib/Kconfig.debug
--- /home/jbeulich/tmp/linux-2.6.16-rc2/lib/Kconfig.debug 2006-02-06 11:02:54.000000000 +0100
+++ 2.6.16-rc2-unwind-info/lib/Kconfig.debug 2006-02-08 14:14:23.000000000 +0100
@@ -195,6 +195,17 @@ config FRAME_POINTER
some architectures or if you use external debuggers.
If you don't debug the kernel, you can say N.

+config UNWIND_INFO
+ bool "Compile the kernel with frame unwind information"
+ depends on !IA64
+ depends on !MODULES || !(MIPS || PARISC || PPC || SUPERH || SPARC64 || V850)
+ default DEBUG_KERNEL
+ help
+ If you say Y here the resulting kernel image will be slightly larger
+ but not slower, and it will give very useful debugging information.
+ If you don't debug the kernel, you can say N, but we may not be able
+ to solve problems without frame unwind information or frame pointers.
+
config FORCED_INLINING
bool "Force gcc to inline functions marked 'inline'"
depends on DEBUG_KERNEL