runtime: Do not report thunks and recover functions in backtrace.

From-SVN: r203294
This commit is contained in:
Ian Lance Taylor 2013-10-09 00:02:14 +00:00
parent 8ae4c35c1e
commit 7af190f113
1 changed files with 15 additions and 0 deletions

View File

@ -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;