re PR go/64999 (s390x libgo test failure in TestMemoryProfiler)

PR go/64999
	PR go/65180
runtime: Adjust libbacktrace PC value to what runtime.Callers expects.

From Lynn Boger.

From-SVN: r222196
This commit is contained in:
Ian Lance Taylor 2015-04-17 19:29:28 +00:00
parent f6c72af46f
commit 5fdb119fd5
1 changed files with 14 additions and 1 deletions

View File

@ -83,7 +83,20 @@ callback (void *data, uintptr_t pc, const char *filename, int lineno,
}
loc = &arg->locbuf[arg->index];
loc->pc = pc;
/* On the call to backtrace_full the pc value was most likely
decremented if there was a normal call, since the pc referred to
the instruction where the call returned and not the call itself.
This was done so that the line number referred to the call
instruction. To make sure the actual pc from the call stack is
used, it is incremented here.
In the case of a signal, the pc was not decremented by
backtrace_full but still incremented here. That doesn't really
hurt anything since the line number is right and the pc refers to
the same instruction. */
loc->pc = pc + 1;
/* The libbacktrace library says that these strings might disappear,
but with the current implementation they won't. We can't easily