diff options
| author | Julian Lettner <jlettner@apple.com> | 2019-02-27 22:16:02 +0000 |
|---|---|---|
| committer | Julian Lettner <jlettner@apple.com> | 2019-02-27 22:16:02 +0000 |
| commit | a0884da62a471f08c65a03e337aea23203a43eb8 (patch) | |
| tree | dfc44a82b399aa5f2b281a67dc42fcff7b4af2c5 /compiler-rt/lib/ubsan | |
| parent | 6a198366a0cc214c8876620b6ea6f696620973f9 (diff) | |
| download | bcm5719-llvm-a0884da62a471f08c65a03e337aea23203a43eb8.tar.gz bcm5719-llvm-a0884da62a471f08c65a03e337aea23203a43eb8.zip | |
[NFC][Sanitizer] Pull up GetStackTrace into sanitizer_common
We already independently declare GetStackTrace in all (except TSan)
sanitizer runtime headers. Lets move it to sanitizer_stacktrace.h to
have one canonical way to fill in a BufferedStackFrame. Also enables us
to use it in sanitizer_common itself.
This patch defines GetStackTrace for TSan and moves the function from
ubsan_diag.cc to ubsan_diag_standalone.cc to avoid duplicate symbols
for the UBSan-ASan runtime.
Other than that this patch just moves the code out of headers and into
the correct namespace.
Reviewers: vitalybuka
Differential Revision: https://reviews.llvm.org/D58651
llvm-svn: 355039
Diffstat (limited to 'compiler-rt/lib/ubsan')
| -rw-r--r-- | compiler-rt/lib/ubsan/ubsan_diag.cc | 11 | ||||
| -rw-r--r-- | compiler-rt/lib/ubsan/ubsan_diag.h | 3 | ||||
| -rw-r--r-- | compiler-rt/lib/ubsan/ubsan_diag_standalone.cc | 11 |
3 files changed, 11 insertions, 14 deletions
diff --git a/compiler-rt/lib/ubsan/ubsan_diag.cc b/compiler-rt/lib/ubsan/ubsan_diag.cc index 64843bd9617..1935306a637 100644 --- a/compiler-rt/lib/ubsan/ubsan_diag.cc +++ b/compiler-rt/lib/ubsan/ubsan_diag.cc @@ -26,17 +26,6 @@ using namespace __ubsan; -void __ubsan::GetStackTrace(BufferedStackTrace *stack, uptr max_depth, uptr pc, - uptr bp, void *context, bool fast) { - uptr top = 0; - uptr bottom = 0; - if (StackTrace::WillUseFastUnwind(fast)) { - GetThreadStackTopAndBottom(false, &top, &bottom); - stack->Unwind(max_depth, pc, bp, nullptr, top, bottom, true); - } else - stack->Unwind(max_depth, pc, bp, context, 0, 0, false); -} - static void MaybePrintStackTrace(uptr pc, uptr bp) { // We assume that flags are already parsed, as UBSan runtime // will definitely be called when we print the first diagnostics message. diff --git a/compiler-rt/lib/ubsan/ubsan_diag.h b/compiler-rt/lib/ubsan/ubsan_diag.h index eadf466023f..b444e971b22 100644 --- a/compiler-rt/lib/ubsan/ubsan_diag.h +++ b/compiler-rt/lib/ubsan/ubsan_diag.h @@ -234,9 +234,6 @@ bool ignoreReport(SourceLocation SLoc, ReportOptions Opts, ErrorType ET); GET_CALLER_PC_BP; \ ReportOptions Opts = {unrecoverable_handler, pc, bp} -void GetStackTrace(BufferedStackTrace *stack, uptr max_depth, uptr pc, uptr bp, - void *context, bool fast); - /// \brief Instantiate this class before printing diagnostics in the error /// report. This class ensures that reports from different threads and from /// different sanitizers won't be mixed. diff --git a/compiler-rt/lib/ubsan/ubsan_diag_standalone.cc b/compiler-rt/lib/ubsan/ubsan_diag_standalone.cc index 1eff0908e53..9c5c0af5e0e 100644 --- a/compiler-rt/lib/ubsan/ubsan_diag_standalone.cc +++ b/compiler-rt/lib/ubsan/ubsan_diag_standalone.cc @@ -14,6 +14,17 @@ #if CAN_SANITIZE_UB #include "ubsan_diag.h" +void __sanitizer::GetStackTrace(BufferedStackTrace *stack, uptr max_depth, + uptr pc, uptr bp, void *context, bool fast) { + uptr top = 0; + uptr bottom = 0; + if (StackTrace::WillUseFastUnwind(fast)) { + GetThreadStackTopAndBottom(false, &top, &bottom); + stack->Unwind(max_depth, pc, bp, nullptr, top, bottom, true); + } else + stack->Unwind(max_depth, pc, bp, context, 0, 0, false); +} + using namespace __ubsan; extern "C" { |

