What is an "exception" in C?

There is no CPP (.cpp or .cxx) code in any of these libraries.


Interesting thing though:
cmem has a userspace and kernelspace component.
TI does really nasty stuff, like pull in .h files from the kernel and whatnot.
I just tried again against the 2.6.38 kernel (was 2.6.36 this morning) and there is no error.

http://lxr.free-electrons.com/ident?i=__aeabi_unwind_cpp_pr0

Perhaps it's just something in my .config that turns that on or off in the kernel.

AJ ONeal


On Mon, Apr 18, 2011 at 3:06 PM, Michael Hope <michael.hope@linaro.org> wrote:
On Tue, Apr 19, 2011 at 5:39 AM, AJ ONeal <coolaj86@gmail.com> wrote:
>
> I'm compiling an application built with TI's DVSDK 3 *[0].
>
>
>
> /home/user/ti/dvsdk/dvsdk_3_01_00_10/linuxutils_2_25_02_08/packages/ti/sdo/linuxutils/cmem/lib/cmem.a470MV(cmem.o470MV):(.ARM.exidx+0x0):
> undefined reference to `__aeabi_unwind_cpp_pr0'
>
>
>
> arm-linux-gnueabi-gcc --version
> arm-linux-gnueabi-gcc (Ubuntu/Linaro 4.5.2-5ubuntu2~ppa1) 4.5.2
> arm-linux-gnueabi-ld --version
> GNU ld (GNU Binutils for Ubuntu) 2.21.0.20110302
>
> More full output is here (but it isn't particularly helpful due to TI's RTSC
> make system's black-magic)
> https://gist.github.com/925674
> FYI: the MV in cmem.a470MV stands for MontaVista.
> This name is hard-coded somewhere even though it's not being linked against
> a MontaVista system.
> I believe the 470 means that it should work with ARMv4 through ARMv7, but
> I'm not positive.
>
> My googling suggest that this is a toolchain bug and that the best way
> around the issue is to create a file which defines the function as a void
> dummy and include it.
> http://www.codesourcery.com/archives/arm-gnu/msg03604.html
> http://comments.gmane.org/gmane.comp.boot-loaders.u-boot/78649
> http://www.cs.fsu.edu/~baker/devices/lxr/http/ident?i=__aeabi_unwind_cpp_pr0
>
> I have a script that I'll post shortly with instructions as to how to setup
> TI's DVSDK with Linaro
> AJ ONeal
>
> [0] I'm not using the latest DVSDK version 4 because the paths and such are
> so hard-coded for the 2009q3 version of codesourcery on ubuntu 10.04 LTS
> that I don't know where to start fixing it.

Hi AJ.  __aeabi_unwind_cpp_pr0 is part of the standard ARM exception
handling code and helps in unwinding the stack frame when an exception
occurs.  This suggests that the binary cmem.a470MV can throw
exceptions and therefore needs exception handling.

I don't think this is a toolchain bug as this function is included in
libgcc_eh.a and is normally pulled in automatically.  Could you add
'-v' to your linker flags and send through the result?

-- Michael