X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=libgo%2Fruntime%2Fgo-recover.c;h=d6403e00d399178f71342397f8d918251c8ab74e;hp=7101d518ade9bfb4eb4e29ccd946a03d29dba3c4;hb=5019617c9b795ab4ef1d97a6d3784052894c1ef5;hpb=4cdb9b47b006e5e0b3a08dc761efbdf345dd4ed8 diff --git a/libgo/runtime/go-recover.c b/libgo/runtime/go-recover.c index 7101d518ade..d6403e00d39 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; }