https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64999
--- Comment #45 from Ian Lance Taylor <ian at airs dot com> --- If we change the PC returned by backtrace_full, and then use that changed PC to look up file/line information, we might get different results. That seems clear. My next question is: when does this matter? There are two ways that we use the result of runtime_callers: either we use the file/line information, or we use the PC. If we use the file/line information, all is well, and there is nothing to discuss. If we use the PC, as in runtime.Callers, then it's true that if we pass that PC back to libbacktrace we may get different file/line information. But, so what? We've already lost the original file/line information anyhow. The idea is that the changed PC will be the same as the PC returned by the gc library. Therefore, we should get approximately the same file/line information as the gc library gets. That is why runtime/pprof/pprof.go in the gc library backs up the PC to the call instruction: because it knows that it has the PC after the call instruction.