On 9/29/20 11:22 AM, John Paul Adrian Glaubitz wrote:
Hello!

I'm looking for an information regarding exception handling on Linux/m68k, in 
particular
I need to know what registers are used by the ABI in order to implement the 
functions
"getExceptionPointerRegister" and "getExceptionSelectorRegister" in the M680x0 
backend
in LLVM [1], [2].

I don;t know what those functions are, but from their names they seem to be related to figuring out the exception object and type?

Do you understand the itanium ABI's unwinding mechanism --
1) follow stack to get to landing pad.
2) invoke landing pad to see if it wants to catch
3) if not, continue following stack
4) once we've found one to catch it, we need to unwind properly, which involves invoking cleanups. and eventually getting to the catcher

invoking the landing pad means passing (a) an integer telling it what's happening, and (b) a pointer to data.


I looked into the GCC source code to find the corresponding parts but I could 
only find
the macros prefixed with "EH_" [4] which I didn't fully understand.

Those are the bits you want. one of those is the selector (0?) and the other is the data pointer (1?).

I can never remember more than that, and usually go build a compiler and inspect its output to figure more.

nathan


--
Nathan Sidwell

Reply via email to