diff options
author | Alexey Samsonov <vonosmas@gmail.com> | 2014-11-04 18:41:38 +0000 |
---|---|---|
committer | Alexey Samsonov <vonosmas@gmail.com> | 2014-11-04 18:41:38 +0000 |
commit | 3931dca7eca07798e1fcf2c0bb40252cc9aed567 (patch) | |
tree | bb95c1ad02615f6a68cc439c6f08aa2d8e93c8c0 /lldb/source/Host/common/FileSpec.cpp | |
parent | 649f172c170ed54c40cba52d193f347e0864ad86 (diff) | |
download | bcm5719-llvm-3931dca7eca07798e1fcf2c0bb40252cc9aed567.tar.gz bcm5719-llvm-3931dca7eca07798e1fcf2c0bb40252cc9aed567.zip |
[TSan] Keep original function and filename in ReportStack.
TSan used to do the following transformations with data obtained
from the symbolizer:
1) Strip "__interceptor_" prefix from function name.
2) Use "strip_path_prefix" runtime flag to strip filepath.
Now these transformations are performed right before the stack trace
is printed, and ReportStack structure contains original information.
This seems like a right thing to do - stripping is a detail of report
formatting implementation, and should belong there. We should, for
example, use original path to source file when we apply suppressions.
This change also make "strip_path_prefix" flag behavior in TSan
consistent with all the other sanitizers - now it should actually
match *the prefix* of path, not some substring. E.g. earlier TSan
would turn "/usr/lib/libfoo.so" into "libfoo.so" even if strip_path_prefix
was "/lib/".
Finally, strings obtained from symbolizer come from internal allocator,
and "stripping" them early by incrementing a "char*" ensures they can
never be properly deallocated, which is a bug.
llvm-svn: 221283
Diffstat (limited to 'lldb/source/Host/common/FileSpec.cpp')
0 files changed, 0 insertions, 0 deletions