aboutsummaryrefslogtreecommitdiff
path: root/libgo/runtime/go-defer.c
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2014-10-08 14:03:13 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2014-10-08 14:03:13 +0000
commit19d4baed5721eb7c95e56c2bec68ae7db6308f9e (patch)
treed77929061927995d8e986e036e1f3492deb0e252 /libgo/runtime/go-defer.c
parent9d07d890e6542570950e1b0bbbb231fac3249774 (diff)
downloadgcc-19d4baed5721eb7c95e56c2bec68ae7db6308f9e.zip
gcc-19d4baed5721eb7c95e56c2bec68ae7db6308f9e.tar.gz
gcc-19d4baed5721eb7c95e56c2bec68ae7db6308f9e.tar.bz2
re PR go/60406 (recover.go: test13reflect2 test failure)
PR go/60406 runtime: Check callers in can_recover if return address doesn't match. Also use __builtin_extract_return_address and tighten up the checks in FFI code. Fixes PR 60406. From-SVN: r216003
Diffstat (limited to 'libgo/runtime/go-defer.c')
-rw-r--r--libgo/runtime/go-defer.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/libgo/runtime/go-defer.c b/libgo/runtime/go-defer.c
index 5dd8c31..3a48fe1 100644
--- a/libgo/runtime/go-defer.c
+++ b/libgo/runtime/go-defer.c
@@ -80,6 +80,6 @@ __go_set_defer_retaddr (void *retaddr)
g = runtime_g ();
if (g->defer != NULL)
- g->defer->__retaddr = retaddr;
+ g->defer->__retaddr = __builtin_extract_return_addr (retaddr);
return 0;
}