Re: Bare metal ARM Cross compiler for arm-none-eabi target without libunwind?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



-----Fredrik Hederstierna/INT/SE/DIR/SECURITAS wrote: -----
To: aph@xxxxxxxxxx
From: Fredrik Hederstierna/INT/SE/DIR/SECURITAS
Date: 03/28/2012 11:33AM
Cc: gcc-help@xxxxxxxxxxx
Subject: Re: Bare metal ARM Cross compiler for arm-none-eabi target without libunwind?

>> We generate the map-file, the content tells that (if I understand correctly)
>> 
>> "_divdi3.o"  use "__aeabi_unwind_cpp_pr0" which resides in "unwind-arm.o".
>> 
>> Is it really correct that we need unwind-support if just using division?
>> Could it be that _divdi3 can 'throw' division-by-zero 'exception' ?
>> (We have overloaded div0: "void __div0(void) { assert(0); }" so we dont want unwinding here anyway...)
>

>I suspect (but you'll have to check) that this is because _divdi3 is
>compiled with exceptions, and this is indeed because division by zero
>might throw.  The simplest fix is to compile it without exceptions.
>The correct fix is to make unwinding work on your platform.

I've been investigating the libgcc sources, what do you think of something alike this solution

Today in "gcc/libgcc/Makefile.in" its filtered on which functions that should be compiled with unwind-info:

  # These might cause a divide overflow trap and so are compiled with
  # unwinder info.
  LIB2_DIVMOD_FUNCS = _divdi3 _moddi3 _udivdi3 _umoddi3 _udiv_w_sdiv _udivmoddi4

What if this could be overridden by configuration option?

Eg.

+# Check if we want to exclude unwind support.
+ifeq ($(enable_libunwind_exceptions),yes)
   # These might cause a divide overflow trap and so are compiled with
   # unwinder info.
   LIB2_DIVMOD_FUNCS = _divdi3 _moddi3 _udivdi3 _umoddi3 _udiv_w_sdiv _udivmoddi4
+endif

In this case all libgcc will be build 'normally' without extra unwind build stuff?
The 'enable_libunwind_exceptions' have to be set somehow when running 'configure'.

Thanks/Fredrik



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux