On VAX, the architecture calling convention is CALLS pushes the saved registers & then sets FP, SP, & AP (argument pointer, similar to FP).
-
-
Replying to @jhamby
And then RET restores the previous values, but it uses the FP and not SP. The good news for the compiler is it doesn't have to adjust SP.
1 reply 0 retweets 0 likes -
Replying to @jhamby
That's why the function epilogue is so simple in the normal case: RET. The problem for "eh_return" is it needs to patch the return address.
1 reply 0 retweets 0 likes -
Replying to @jhamby
So I need to get GCC to use the EH_RETURN_HANDLER_RTX macro properly in expand_eh_return(), defined in gcc/except.c. I'm just getting "ret".
1 reply 0 retweets 0 likes -
Replying to @jhamby
That's why I think the way gcc/config/vax/vax.md is defining "return" is short-circuiting the expected call to expand_eh_return().
1 reply 0 retweets 0 likes -
Replying to @jhamby
The worst case scenario, which I'm hoping to avoid, would be if I have to write an eh_return handler to go up more than one stack frame.
1 reply 0 retweets 0 likes -
Replying to @jhamby
The best case scenario will be if I can patch config/vax/vax.md & elf.h to use GCC's machine-independent exception handling code generation.
1 reply 0 retweets 0 likes -
Replying to @jhamby
The good news is that C++ exceptions seem to be working on all the other platforms NetBSD supports, and NetBSD 7.x is a very solid version.
1 reply 0 retweets 0 likes -
Replying to @jhamby
The old style of C++ exceptions used setjmp() & longjmp() to save the register contents before anything that might throw an exception.
1 reply 0 retweets 0 likes -
Replying to @jhamby
ARM originally used the old "SJLJ" approach, but it now supports proper C++ exceptions with a recent toolchain. http://developer.android.com/ndk/guides/standalone_toolchain.html …
2 replies 2 retweets 3 likes
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.