From: ian Date: Sat, 11 Feb 2012 00:15:54 +0000 (+0000) Subject: runtime: Tweak __go_can_recover for SPARC. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5019617c9b795ab4ef1d97a6d3784052894c1ef5;p=thirdparty%2Fgcc.git runtime: Tweak __go_can_recover for SPARC. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@184117 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/libgo/runtime/go-recover.c b/libgo/runtime/go-recover.c index 7101d518ade9..d6403e00d399 100644 --- a/libgo/runtime/go-recover.c +++ b/libgo/runtime/go-recover.c @@ -43,6 +43,14 @@ __go_can_recover (const void* retaddr) such as an instruction to adjust the stack pointer. */ ret = (const char *) retaddr; + +#ifdef __sparc__ + /* On SPARC the address we get, from __builtin_return_address, is + the address of the call instruction. Adjust forward, also + skipping the delayed instruction following the call. */ + ret += 8; +#endif + dret = (const char *) d->__retaddr; return ret <= dret && ret + 16 >= dret; }