I forgot to post back that I did eventually find the solution to this problem. I had it come back and bite me in the butt a second time and it took me a lot longer to figure it out because I kept finding this thread and not the thread where I had made mention of the solution.
Dear Future AJ,
This is how you solved the problem:
http://e2e.ti.com/support/dsp/omap_applications_processors/f/447/t/104381.as...
A little tweak to linkcmd.xdt got me most of the way there. ~/ti/dvsdk/dvsdk_3_01_00_10/xdctools_3_16_01_27/packages/gnu/targets/arm/linkcmd.xdt
INPUT( %for (var i = 0; i < $args.length; i++) { `$args[i]` %}
/usr/lib/gcc/arm-linux-gnueabi/4.5.2/libgcc_eh.a
/usr/lib/arm-linux-gnueabi/libc.a
/usr/lib/arm-linux-gnueabi/gcc/arm-linux-gnueabi/4.5/libgcc.a )
Also:
__aeabi_unwind_cpp_pr0 is part of the standard ARM exception
handling code and helps in unwinding the stack frame when an exception occurs.
__aeabi_unwind_cpp_pr0 is defined in libgcc_eh.a
Additionally, I believe the problem can be solved by coping
/* Dummy functions to avoid linker complaints */ void __aeabi_unwind_cpp_pr0(void) { };
to cmemk.c
I'm testing both methods again. If anything is different this time around I'll be posting back with more updates.
AJ ONeal
On Mon, Apr 18, 2011 at 11: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.