Our divide by zero exception prints the address of the exception and not the caller ?
Both 64 and 32 bit division is implemented via a call to a GCC library function and not via an instruction. A 32 bit division by zero will show the address of the caller of the library function. The 64 bit division functions call 32 bit division functions, and the pc address is one of those calls.
"Divide by zero opc:30083AC0 sp:3bt end"
I just noticed the "bt end" there, meaning a backtrace was attempted but didn't succeed. The "sp:3" makes no sense though. Intentionally doing a division by zero on mine gives this:
Divide by zero a
The top two lines are truncated on the right. The pc value seems trustworthy.
One idea is saving the whole stack from the exception handler and doing a backtrace manually.