Skip to contentSkip to conversation

ARM : Removing unwind dummy functions

U-Boot Gabriel Huau 3 participants 3 messages Oct 18, 2012

lore
Share & tools
lore
#0 lore raw

Hi,

I would like to know if it's really necessary to keep the dummy functions in arch/arm/lib/eabi_compat.c.

These function should not be happen in our case (that why the body is empty).

They have been introduced due to problems with some toolchains that was referencing these functions. But we can avoid this hack by adding the option '-fno-unwind-tables' at the compilation time no ? (correct me if I'm wrong).

Best regards,

#1 lore raw

[U-Boot] Debugging (was: ARM : Removing unwind dummy functions)

Hi Gabriel,

Quoted 5 lines · Gabriel Huau

Hi,

I would like to know if it's really necessary to keep the dummy functions in arch/arm/lib/eabi_compat.c.

Quoted 7 lines

These function should not be happen in our case (that why the body is empty).

They have been introduced due to problems with some toolchains that was referencing these functions. But we can avoid this hack by adding the option '-fno-unwind-tables' at the compilation time no ? (correct me if I'm wrong).

We can do this, but then we lose some potentially helpful debug info. OTOH, this debug info is not useful in production.

Which leads to a more general question: what about options for debugging less basic than #define'ing DEBUG ? (my favorite, and one a few people share I believe, is the ability to build an U-Boot that can be loaded and run from RAM, i.e. without the CPU critical inits, and possibly also without relocation. These features could be made available through debug options such as DEBUG_SKIP_CRITICAL_INIT or DEBUG_SKIP_RELOCATION).

Here we could have DEBUG_ARM_UNWIND_SUPPORT: if undefined, option -fno-unwind-tables is added to compilers which understand it and unwind helper functions are not compiled, and if defined, helpers are compiled.

Of course, debug options could be *tested* in the code and *documented* in doc/README.debug-options, but their *definition* would be forbidden in committed code; they would be allowed only in the working directory.

Thoughts?

Quoted 1 line

Best regards,

Amicalement,

Signature · 1 line
Albert.
#2 lore raw

[U-Boot] Debugging (was: ARM : Removing unwind dummy functions)

Quoted 21 lines · Albert ARIBAUD

Hi Gabriel,

Quoted 5 lines · Gabriel Huau

Hi,

I would like to know if it's really necessary to keep the dummy functions in arch/arm/lib/eabi_compat.c.

Quoted 7 lines

These function should not be happen in our case (that why the body is empty).

They have been introduced due to problems with some toolchains that was referencing these functions. But we can avoid this hack by adding the option '-fno-unwind-tables' at the compilation time no ? (correct me if I'm wrong).

We can do this, but then we lose some potentially helpful debug info. OTOH, this debug info is not useful in production.

Quoted 7 lines

Which leads to a more general question: what about options for debugging less basic than #define'ing DEBUG ? (my favorite, and one a few people share I believe, is the ability to build an U-Boot that can be loaded and run from RAM, i.e. without the CPU critical inits, and possibly also without relocation. These features could be made available through debug options such as DEBUG_SKIP_CRITICAL_INIT or DEBUG_SKIP_RELOCATION).

I don't like these. Disabling relocation is on the "why?" side for me. Any modern debugger has the ability to adjust symbol offsets and U-Boot will tell you (bdinfo or with the debug print) what you need. You can even get at it via the debugger prior to relocation. In the case where you don't have a JTAG header, it's not hard to run U-Boot from RAM from U-Boot (or whatever you can run it from), if you can't get real boot-up loading from something other than flash.

Quoted 3 lines

Here we could have DEBUG_ARM_UNWIND_SUPPORT: if undefined, option -fno-unwind-tables is added to compilers which understand it and unwind helper functions are not compiled, and if defined, helpers are compiled.

Well, here's something I just poked at. If we switch to -ffunction-section/-fdata-sections and --gc-sections like other arches we can just drop this outright. SPL is already discarding it and a quick test shows I can even not build it.

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20121018/acf5ea37/attachment.pgp>