[PATCH] Default setting of the ARM_UNWIND option

From: Claudio Scordino
Date: Mon Oct 19 2009 - 06:17:13 EST


[email cut-and-pasted from a private discussion...]
moving from release 2.6.27 to release 2.6.32-rc4, my ARM board (derived from AT91SAM9623-EK) started hanging at the initial "Calibrating delay loop" message.

After some inspection, I found out the problem to be with commit adf8b37bafc1495393201a2ae4235846371870d0.

In practice, it enables stack unwinding support by default. However, if enabled, it hangs my machine.

The problem might be with my compiler (according to the help, stack unwinding only works with EABI compilers).

I'm using a CodeSourcery gcc 4.2.1 "arm-none-linux-gnueabi".

I think 4.2.1 generates really buggy code with -fno-frame-pointer,
nothing to do with the stack unwinding implementation in the kernel. I
would recommend you either use a newer compiler or disables ARM_UNWIND
in your .config (which automatically re-enables FRAMEPOINTER).
Hi Catalin,

thank you for your answer.

In my opinion, we should change the default setting of this option.

Having "yes" as default policy for ARM_UNWIND means that, by default,
the kernel does not boot if a user has a buggy compiler (like me) and
he/she doesn't explicitly disable the ARM_UNWIND option.

Consider that people may not know that their problem is related to the
ARM_UNWIND option. Therefore, they may waste time just bisecting to
understand where their problem really is.

Therefore, my suggestion is to change the default policy of this option
as shown in the attached patch, to avoid a potential waste of time of
developers. Users who know that they can enable this option, will enable
it.

Let me know what you think about this suggestion.

Many thanks and my best regards,

Claudio



From: Claudio Scordino <claudio@xxxxxxxxxxxxxxx>
Date: Mon, 19 Oct 2009 11:59:16 +0200
Subject: [PATCH 1/1] Disable stack unwinding support by default, since it does not work on some buggy or not-EABI compilers.

Disable stack unwinding support by default, since it does not work on some
buggy or not-EABI compilers.

Signed-off-by: Claudio Scordino <claudio@xxxxxxxxxxxxxxx>
---
arch/arm/Kconfig.debug | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index 1a6f70e..925e3fd 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -19,13 +19,13 @@ config FRAME_POINTER
config ARM_UNWIND
bool "Enable stack unwinding support"
depends on AEABI && EXPERIMENTAL
- default y
+ default n
help
This option enables stack unwinding support in the kernel
using the information automatically generated by the
compiler. The resulting kernel image is slightly bigger but
the performance is not affected. Currently, this feature
- only works with EABI compilers. If unsure say Y.
+ only works with EABI compilers. If unsure say N.

config DEBUG_USER
bool "Verbose user fault messages"
--
1.6.0.4