diff options
| author | Kuba Brecka <kuba.brecka@gmail.com> | 2015-11-30 14:12:47 +0000 |
|---|---|---|
| committer | Kuba Brecka <kuba.brecka@gmail.com> | 2015-11-30 14:12:47 +0000 |
| commit | 4809b1dca1985124e516ef70940c110bdee05f50 (patch) | |
| tree | 7fc8fce2ad750cc00a921a8c5db8672128f00368 | |
| parent | 6c9122ffba64d98acc66fd797a3d32177d4ca02e (diff) | |
| download | bcm5719-llvm-4809b1dca1985124e516ef70940c110bdee05f50.tar.gz bcm5719-llvm-4809b1dca1985124e516ef70940c110bdee05f50.zip | |
[sanitizer] Detect an invalid answer in AtosSymbolizer
On OS X, in AtosSymbolizer, if the answer from atos doesn't contain module name, let's bail and return false. There are some cases where this is beneficial, because we'll try DlAddrSymbolizer next (it's next in the symbolizer chain), which might be able to symbolize something that atos couldn't.
Differential Revision: http://reviews.llvm.org/D15071
llvm-svn: 254301
| -rw-r--r-- | compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc index 6de7fe0b716..64048fa7e58 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc @@ -121,6 +121,12 @@ static bool ParseCommandOutput(const char *str, uptr addr, char **out_name, const char *rest = trim; char *symbol_name; rest = ExtractTokenUpToDelimiter(rest, " (in ", &symbol_name); + if (rest[0] == '\0') { + InternalFree(symbol_name); + InternalFree(trim); + return false; + } + if (internal_strncmp(symbol_name, "0x", 2) != 0) *out_name = symbol_name; else |

