diff options
| author | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-10-09 00:02:14 +0000 |
|---|---|---|
| committer | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-10-09 00:02:14 +0000 |
| commit | 70c833a3002a84eec5f9bded2791d64f2be66ae7 (patch) | |
| tree | 4161ee09ad51349a5080a6442ff772c8c3e965ae /libgo/runtime | |
| parent | 62750cd5c6a8b9ff364516c86e11bb6d1823e591 (diff) | |
| download | ppe42-gcc-70c833a3002a84eec5f9bded2791d64f2be66ae7.tar.gz ppe42-gcc-70c833a3002a84eec5f9bded2791d64f2be66ae7.zip | |
runtime: Do not report thunks and recover functions in backtrace.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@203294 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgo/runtime')
| -rw-r--r-- | libgo/runtime/go-callers.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/libgo/runtime/go-callers.c b/libgo/runtime/go-callers.c index dd1cf7909b6..291dfd0d666 100644 --- a/libgo/runtime/go-callers.c +++ b/libgo/runtime/go-callers.c @@ -53,6 +53,21 @@ callback (void *data, uintptr_t pc, const char *filename, int lineno, return 0; } + /* Skip thunks and recover functions. There is no equivalent to + these functions in the gc toolchain, so returning them here means + significantly different results for runtime.Caller(N). */ + if (function != NULL) + { + const char *p; + + p = __builtin_strchr (function, '.'); + if (p != NULL && __builtin_strncmp (p + 1, "$thunk", 6) == 0) + return 0; + p = __builtin_strrchr (function, '$'); + if (p != NULL && __builtin_strcmp(p, "$recover") == 0) + return 0; + } + if (arg->skip > 0) { --arg->skip; |

