Comment 1 for bug 822478

Revision history for this message
Michael Hope (michaelh1) wrote :

__aeabi_ldiv0 is called when a division by zero error occurs. According to the ARM ABI ('Run-time ABI for the ARM® Architecture 2.08'), the implementation may:
 * Return the value passed to them as a parameter.
 * Or, return a fixed value defined by the execution environment (such as 0).
 * Or, raise a signal (often SIGFPE) or throw an exception, and do not return.

The version that comes with libgcc calls the standard C function 'raise' to kill the current process. See:
 http://pubs.opengroup.org/onlinepubs/000095399/functions/raise.html

The Bionic implementation is at:
 bionic/libc/unistd/raise.c

Note that this is unrelated to C++ exceptions. It seems that your C library isn't getting linked in. If you can't use the C library, implement your own version of raise() or __aeabi_ldiv0. The version in libgcc is a weak symbol and will be overriden by your version.