exception handling broken on x86-64?

Dale,

Works for me on x86-64 Darwin, fwiw.

That looks pretty strange. Ok, it can work for small testcases, but will
surely fail when you try to use for something more real. Currently it at
least lacks information about frame moves. So, every invoke, which needs
to restore call-clobbered registers during unwinding will be broken.

Does Shootout-C++/except work for you? And stuff from llvm testsuite
like omnetpp and xalan ?

Also, Darwin is different than Linux, because Darwin's unwinding runtime
is native one, not built by llvm-gcc.

Dale,

Works for me on x86-64 Darwin, fwiw.

That looks pretty strange. Ok, it can work for small testcases, but will
surely fail when you try to use for something more real. Currently it at
least lacks information about frame moves. So, every invoke, which needs
to restore call-clobbered registers during unwinding will be broken.

Does Shootout-C++/except work for you? And stuff from llvm testsuite
like omnetpp and xalan ?

Everything in the llvm testsuite works.

Also, Darwin is different than Linux, because Darwin's unwinding runtime
is native one, not built by llvm-gcc.

I didn't look too hard, but it looks like the x86-64 info is only slightly modified from the x86-32 info on darwin (in gcc). A few fields were extended to 64 bits but it was not far off. So what was there mostly just worked. You may be right that there are problems that haven't shown up yet.

Dale,

Works for me on x86-64 Darwin, fwiw.

That looks pretty strange. Ok, it can work for small testcases, but will
surely fail when you try to use for something more real. Currently it at
least lacks information about frame moves. So, every invoke, which needs
to restore call-clobbered registers during unwinding will be broken.

Does Shootout-C++/except work for you? And stuff from llvm testsuite
like omnetpp and xalan ?

Everything in the llvm testsuite works.

And the gcc testsuite - well, there are a couple of failures, but I looked at them and am convinced they are not problems with the EH mechanism.