<div dir="ltr">Julian, the sanitizer-windows bot (an MSVC build) is broken after this change, please a take a look: <a href="http://lab.llvm.org:8011/builders/sanitizer-windows/builds/42653/steps/stage%201%20build/logs/stdio">http://lab.llvm.org:8011/builders/sanitizer-windows/builds/42653/steps/stage%201%20build/logs/stdio</a></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Feb 28, 2019 at 1:40 AM Julian Lettner via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: yln<br>
Date: Wed Feb 27 14:16:02 2019<br>
New Revision: 355039<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=355039&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=355039&view=rev</a><br>
Log:<br>
[NFC][Sanitizer] Pull up GetStackTrace into sanitizer_common<br>
<br>
We already independently declare GetStackTrace in all (except TSan)<br>
sanitizer runtime headers. Lets move it to sanitizer_stacktrace.h to<br>
have one canonical way to fill in a BufferedStackFrame. Also enables us<br>
to use it in sanitizer_common itself.<br>
<br>
This patch defines GetStackTrace for TSan and moves the function from<br>
ubsan_diag.cc to ubsan_diag_standalone.cc to avoid duplicate symbols<br>
for the UBSan-ASan runtime.<br>
<br>
Other than that this patch just moves the code out of headers and into<br>
the correct namespace.<br>
<br>
Reviewers: vitalybuka<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D58651" rel="noreferrer" target="_blank">https://reviews.llvm.org/D58651</a><br>
<br>
Modified:<br>
    compiler-rt/trunk/lib/asan/asan_stack.cc<br>
    compiler-rt/trunk/lib/asan/asan_stack.h<br>
    compiler-rt/trunk/lib/hwasan/hwasan.cpp<br>
    compiler-rt/trunk/lib/hwasan/hwasan.h<br>
    compiler-rt/trunk/lib/lsan/lsan.cc<br>
    compiler-rt/trunk/lib/lsan/lsan.h<br>
    compiler-rt/trunk/lib/msan/msan.cc<br>
    compiler-rt/trunk/lib/msan/msan.h<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.h<br>
    compiler-rt/trunk/lib/tsan/rtl/tsan_stack_trace.cc<br>
    compiler-rt/trunk/lib/ubsan/ubsan_diag.cc<br>
    compiler-rt/trunk/lib/ubsan/ubsan_diag.h<br>
    compiler-rt/trunk/lib/ubsan/ubsan_diag_standalone.cc<br>
<br>
Modified: compiler-rt/trunk/lib/asan/asan_stack.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_stack.cc?rev=355039&r1=355038&r2=355039&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_stack.cc?rev=355039&r1=355038&r2=355039&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_stack.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_stack.cc Wed Feb 27 14:16:02 2019<br>
@@ -28,6 +28,34 @@ u32 GetMallocContextSize() {<br>
<br>
 }  // namespace __asan<br>
<br>
+void __sanitizer::GetStackTrace(BufferedStackTrace *stack, uptr max_depth,<br>
+                                uptr pc, uptr bp, void *context, bool fast) {<br>
+  using namespace __asan;<br>
+#if SANITIZER_WINDOWS<br>
+  stack->Unwind(max_depth, pc, 0, context, 0, 0, false);<br>
+#else<br>
+  AsanThread *t;<br>
+  stack->size = 0;<br>
+  if (LIKELY(asan_inited)) {<br>
+    if ((t = GetCurrentThread()) && !t->isUnwinding()) {<br>
+      uptr stack_top = t->stack_top();<br>
+      uptr stack_bottom = t->stack_bottom();<br>
+      ScopedUnwinding unwind_scope(t);<br>
+      if (!SANITIZER_MIPS || IsValidFrame(bp, stack_top, stack_bottom)) {<br>
+        if (StackTrace::WillUseFastUnwind(fast))<br>
+          stack->Unwind(max_depth, pc, bp, nullptr, stack_top, stack_bottom,<br>
+                      true);<br>
+        else<br>
+          stack->Unwind(max_depth, pc, 0, context, 0, 0, false);<br>
+      }<br>
+    } else if (!t && !fast) {<br>
+      /* If GetCurrentThread() has failed, try to do slow unwind anyways. */<br>
+      stack->Unwind(max_depth, pc, bp, context, 0, 0, false);<br>
+    }<br>
+  }<br>
+#endif // SANITIZER_WINDOWS<br>
+}<br>
+<br>
 // ------------------ Interface -------------- {{{1<br>
<br>
 extern "C" {<br>
<br>
Modified: compiler-rt/trunk/lib/asan/asan_stack.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_stack.h?rev=355039&r1=355038&r2=355039&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_stack.h?rev=355039&r1=355038&r2=355039&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_stack.h (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_stack.h Wed Feb 27 14:16:02 2019<br>
@@ -26,37 +26,6 @@ static const u32 kDefaultMallocContextSi<br>
 void SetMallocContextSize(u32 size);<br>
 u32 GetMallocContextSize();<br>
<br>
-// Get the stack trace with the given pc and bp.<br>
-// The pc will be in the position 0 of the resulting stack trace.<br>
-// The bp may refer to the current frame or to the caller's frame.<br>
-ALWAYS_INLINE<br>
-void GetStackTrace(BufferedStackTrace *stack, uptr max_depth, uptr pc, uptr bp,<br>
-                   void *context, bool fast) {<br>
-#if SANITIZER_WINDOWS<br>
-  stack->Unwind(max_depth, pc, 0, context, 0, 0, false);<br>
-#else<br>
-  AsanThread *t;<br>
-  stack->size = 0;<br>
-  if (LIKELY(asan_inited)) {<br>
-    if ((t = GetCurrentThread()) && !t->isUnwinding()) {<br>
-      uptr stack_top = t->stack_top();<br>
-      uptr stack_bottom = t->stack_bottom();<br>
-      ScopedUnwinding unwind_scope(t);<br>
-      if (!SANITIZER_MIPS || IsValidFrame(bp, stack_top, stack_bottom)) {<br>
-        if (StackTrace::WillUseFastUnwind(fast))<br>
-          stack->Unwind(max_depth, pc, bp, nullptr, stack_top, stack_bottom,<br>
-                      true);<br>
-        else<br>
-          stack->Unwind(max_depth, pc, 0, context, 0, 0, false);<br>
-      }<br>
-    } else if (!t && !fast) {<br>
-      /* If GetCurrentThread() has failed, try to do slow unwind anyways. */<br>
-      stack->Unwind(max_depth, pc, bp, context, 0, 0, false);<br>
-    }<br>
-  }<br>
-#endif // SANITIZER_WINDOWS<br>
-}<br>
-<br>
 } // namespace __asan<br>
<br>
 // NOTE: A Rule of thumb is to retrieve stack trace in the interceptors<br>
<br>
Modified: compiler-rt/trunk/lib/hwasan/hwasan.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/hwasan/hwasan.cpp?rev=355039&r1=355038&r2=355039&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/hwasan/hwasan.cpp?rev=355039&r1=355038&r2=355039&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/hwasan/hwasan.cpp (original)<br>
+++ compiler-rt/trunk/lib/hwasan/hwasan.cpp Wed Feb 27 14:16:02 2019<br>
@@ -144,26 +144,6 @@ static void InitializeFlags() {<br>
   if (common_flags()->help) parser.PrintFlagDescriptions();<br>
 }<br>
<br>
-void GetStackTrace(BufferedStackTrace *stack, uptr max_s, uptr pc, uptr bp,<br>
-                   void *context, bool request_fast_unwind) {<br>
-  Thread *t = GetCurrentThread();<br>
-  if (!t) {<br>
-    // the thread is still being created.<br>
-    stack->size = 0;<br>
-    return;<br>
-  }<br>
-  if (!StackTrace::WillUseFastUnwind(request_fast_unwind)) {<br>
-    // Block reports from our interceptors during _Unwind_Backtrace.<br>
-    SymbolizerScope sym_scope;<br>
-    return stack->Unwind(max_s, pc, bp, context, 0, 0, request_fast_unwind);<br>
-  }<br>
-  if (StackTrace::WillUseFastUnwind(request_fast_unwind))<br>
-    stack->Unwind(max_s, pc, bp, nullptr, t->stack_top(), t->stack_bottom(),<br>
-                  true);<br>
-  else<br>
-    stack->Unwind(max_s, pc, 0, context, 0, 0, false);<br>
-}<br>
-<br>
 static void HWAsanCheckFailed(const char *file, int line, const char *cond,<br>
                               u64 v1, u64 v2) {<br>
   Report("HWAddressSanitizer CHECK failed: %s:%d \"%s\" (0x%zx, 0x%zx)\n", file,<br>
@@ -264,6 +244,28 @@ void InitInstrumentation() {<br>
<br>
 } // namespace __hwasan<br>
<br>
+void __sanitizer::GetStackTrace(BufferedStackTrace *stack, uptr max_s, uptr pc,<br>
+                                uptr bp, void *context,<br>
+                                bool request_fast_unwind) {<br>
+  using namespace __hwasan;<br>
+  Thread *t = GetCurrentThread();<br>
+  if (!t) {<br>
+    // the thread is still being created.<br>
+    stack->size = 0;<br>
+    return;<br>
+  }<br>
+  if (!StackTrace::WillUseFastUnwind(request_fast_unwind)) {<br>
+    // Block reports from our interceptors during _Unwind_Backtrace.<br>
+    SymbolizerScope sym_scope;<br>
+    return stack->Unwind(max_s, pc, bp, context, 0, 0, request_fast_unwind);<br>
+  }<br>
+  if (StackTrace::WillUseFastUnwind(request_fast_unwind))<br>
+    stack->Unwind(max_s, pc, bp, nullptr, t->stack_top(), t->stack_bottom(),<br>
+                  true);<br>
+  else<br>
+    stack->Unwind(max_s, pc, 0, context, 0, 0, false);<br>
+}<br>
+<br>
 // Interface.<br>
<br>
 using namespace __hwasan;<br>
<br>
Modified: compiler-rt/trunk/lib/hwasan/hwasan.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/hwasan/hwasan.h?rev=355039&r1=355038&r2=355039&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/hwasan/hwasan.h?rev=355039&r1=355038&r2=355039&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/hwasan/hwasan.h (original)<br>
+++ compiler-rt/trunk/lib/hwasan/hwasan.h Wed Feb 27 14:16:02 2019<br>
@@ -104,9 +104,6 @@ struct SymbolizerScope {<br>
   ~SymbolizerScope() { ExitSymbolizer(); }<br>
 };<br>
<br>
-void GetStackTrace(BufferedStackTrace *stack, uptr max_s, uptr pc, uptr bp,<br>
-                   void *context, bool request_fast_unwind);<br>
-<br>
 // Returns a "chained" origin id, pointing to the given stack trace followed by<br>
 // the previous origin id.<br>
 u32 ChainOrigin(u32 id, StackTrace *stack);<br>
<br>
Modified: compiler-rt/trunk/lib/lsan/lsan.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan.cc?rev=355039&r1=355038&r2=355039&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan.cc?rev=355039&r1=355038&r2=355039&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/lsan/lsan.cc (original)<br>
+++ compiler-rt/trunk/lib/lsan/lsan.cc Wed Feb 27 14:16:02 2019<br>
@@ -32,6 +32,24 @@ bool WordIsPoisoned(uptr addr) {<br>
<br>
 }  // namespace __lsan<br>
<br>
+void __sanitizer::GetStackTrace(BufferedStackTrace *stack, uptr max_depth,<br>
+                                uptr pc, uptr bp, void *context, bool fast) {<br>
+  using namespace __lsan;<br>
+  uptr stack_top = 0, stack_bottom = 0;<br>
+  ThreadContext *t;<br>
+  if (StackTrace::WillUseFastUnwind(fast) &&<br>
+      (t = CurrentThreadContext())) {<br>
+    stack_top = t->stack_end();<br>
+    stack_bottom = t->stack_begin();<br>
+  }<br>
+  if (!SANITIZER_MIPS || IsValidFrame(bp, stack_top, stack_bottom)) {<br>
+    if (StackTrace::WillUseFastUnwind(fast))<br>
+      stack->Unwind(max_depth, pc, bp, nullptr, stack_top, stack_bottom, true);<br>
+    else<br>
+      stack->Unwind(max_depth, pc, 0, context, 0, 0, false);<br>
+  }<br>
+}<br>
+<br>
 using namespace __lsan;  // NOLINT<br>
<br>
 static void InitializeFlags() {<br>
<br>
Modified: compiler-rt/trunk/lib/lsan/lsan.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan.h?rev=355039&r1=355038&r2=355039&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan.h?rev=355039&r1=355038&r2=355039&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/lsan/lsan.h (original)<br>
+++ compiler-rt/trunk/lib/lsan/lsan.h Wed Feb 27 14:16:02 2019<br>
@@ -40,28 +40,6 @@ void ReplaceSystemMalloc();<br>
     __lsan_init();                \<br>
 } while (0)<br>
<br>
-// Get the stack trace with the given pc and bp.<br>
-// The pc will be in the position 0 of the resulting stack trace.<br>
-// The bp may refer to the current frame or to the caller's frame.<br>
-ALWAYS_INLINE<br>
-void GetStackTrace(__sanitizer::BufferedStackTrace *stack,<br>
-                   __sanitizer::uptr max_depth, __sanitizer::uptr pc,<br>
-                   __sanitizer::uptr bp, void *context, bool fast) {<br>
-  uptr stack_top = 0, stack_bottom = 0;<br>
-  ThreadContext *t;<br>
-  if (__sanitizer::StackTrace::WillUseFastUnwind(fast) &&<br>
-      (t = CurrentThreadContext())) {<br>
-    stack_top = t->stack_end();<br>
-    stack_bottom = t->stack_begin();<br>
-  }<br>
-  if (!SANITIZER_MIPS || IsValidFrame(bp, stack_top, stack_bottom)) {<br>
-    if (StackTrace::WillUseFastUnwind(fast))<br>
-      stack->Unwind(max_depth, pc, bp, nullptr, stack_top, stack_bottom, true);<br>
-    else<br>
-      stack->Unwind(max_depth, pc, 0, context, 0, 0, false);<br>
-  }<br>
-}<br>
-<br>
 }  // namespace __lsan<br>
<br>
 extern bool lsan_inited;<br>
<br>
Modified: compiler-rt/trunk/lib/msan/msan.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan.cc?rev=355039&r1=355038&r2=355039&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan.cc?rev=355039&r1=355038&r2=355039&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/msan/msan.cc (original)<br>
+++ compiler-rt/trunk/lib/msan/msan.cc Wed Feb 27 14:16:02 2019<br>
@@ -221,21 +221,6 @@ static void InitializeFlags() {<br>
   if (f->store_context_size < 1) f->store_context_size = 1;<br>
 }<br>
<br>
-void GetStackTrace(BufferedStackTrace *stack, uptr max_s, uptr pc, uptr bp,<br>
-                   void *context, bool request_fast_unwind) {<br>
-  MsanThread *t = GetCurrentThread();<br>
-  if (!t || !StackTrace::WillUseFastUnwind(request_fast_unwind)) {<br>
-    // Block reports from our interceptors during _Unwind_Backtrace.<br>
-    SymbolizerScope sym_scope;<br>
-    return stack->Unwind(max_s, pc, bp, context, 0, 0, false);<br>
-  }<br>
-  if (StackTrace::WillUseFastUnwind(request_fast_unwind))<br>
-    stack->Unwind(max_s, pc, bp, nullptr, t->stack_top(), t->stack_bottom(),<br>
-                  true);<br>
-  else<br>
-    stack->Unwind(max_s, pc, 0, context, 0, 0, false);<br>
-}<br>
-<br>
 void PrintWarning(uptr pc, uptr bp) {<br>
   PrintWarningWithOrigin(pc, bp, __msan_origin_tls);<br>
 }<br>
@@ -316,6 +301,23 @@ u32 ChainOrigin(u32 id, StackTrace *stac<br>
<br>
 } // namespace __msan<br>
<br>
+void __sanitizer::GetStackTrace(BufferedStackTrace *stack, uptr max_s, uptr pc,<br>
+                                uptr bp, void *context,<br>
+                                bool request_fast_unwind) {<br>
+  using namespace __msan;<br>
+  MsanThread *t = GetCurrentThread();<br>
+  if (!t || !StackTrace::WillUseFastUnwind(request_fast_unwind)) {<br>
+    // Block reports from our interceptors during _Unwind_Backtrace.<br>
+    SymbolizerScope sym_scope;<br>
+    return stack->Unwind(max_s, pc, bp, context, 0, 0, false);<br>
+  }<br>
+  if (StackTrace::WillUseFastUnwind(request_fast_unwind))<br>
+    stack->Unwind(max_s, pc, bp, nullptr, t->stack_top(), t->stack_bottom(),<br>
+                  true);<br>
+  else<br>
+    stack->Unwind(max_s, pc, 0, context, 0, 0, false);<br>
+}<br>
+<br>
 // Interface.<br>
<br>
 using namespace __msan;<br>
<br>
Modified: compiler-rt/trunk/lib/msan/msan.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan.h?rev=355039&r1=355038&r2=355039&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan.h?rev=355039&r1=355038&r2=355039&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/msan/msan.h (original)<br>
+++ compiler-rt/trunk/lib/msan/msan.h Wed Feb 27 14:16:02 2019<br>
@@ -312,9 +312,6 @@ struct SymbolizerScope {<br>
 void PrintWarning(uptr pc, uptr bp);<br>
 void PrintWarningWithOrigin(uptr pc, uptr bp, u32 origin);<br>
<br>
-void GetStackTrace(BufferedStackTrace *stack, uptr max_s, uptr pc, uptr bp,<br>
-                   void *context, bool request_fast_unwind);<br>
-<br>
 // Unpoison first n function arguments.<br>
 void UnpoisonParam(uptr n);<br>
 void UnpoisonThreadLocalState();<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.h?rev=355039&r1=355038&r2=355039&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.h?rev=355039&r1=355038&r2=355039&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.h (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_stacktrace.h Wed Feb 27 14:16:02 2019<br>
@@ -121,6 +121,12 @@ static inline bool IsValidFrame(uptr fra<br>
   return frame > stack_bottom && frame < stack_top - 2 * sizeof (uhwptr);<br>
 }<br>
<br>
+// Get the stack trace with the given pc and bp.<br>
+// The pc will be in the position 0 of the resulting stack trace.<br>
+// The bp may refer to the current frame or to the caller's frame.<br>
+void GetStackTrace(BufferedStackTrace *stack, uptr max_depth, uptr pc, uptr bp,<br>
+                   void *context, bool request_fast_unwind);<br>
+<br>
 }  // namespace __sanitizer<br>
<br>
 // Use this macro if you want to print stack trace with the caller<br>
<br>
Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_stack_trace.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_stack_trace.cc?rev=355039&r1=355038&r2=355039&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_stack_trace.cc?rev=355039&r1=355038&r2=355039&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/tsan/rtl/tsan_stack_trace.cc (original)<br>
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_stack_trace.cc Wed Feb 27 14:16:02 2019<br>
@@ -48,3 +48,15 @@ void VarSizeStackTrace::ReverseOrder() {<br>
 }<br>
<br>
 }  // namespace __tsan<br>
+<br>
+void __sanitizer::GetStackTrace(BufferedStackTrace *stack, uptr max_depth,<br>
+                                uptr pc, uptr bp, void *context,<br>
+                                bool request_fast_unwind) {<br>
+  uptr top = 0;<br>
+  uptr bottom = 0;<br>
+  if (StackTrace::WillUseFastUnwind(request_fast_unwind)) {<br>
+    GetThreadStackTopAndBottom(false, &top, &bottom);<br>
+    stack->Unwind(kStackTraceMax, pc, bp, nullptr, top, bottom, true);<br>
+  } else<br>
+    stack->Unwind(kStackTraceMax, pc, 0, context, 0, 0, false);<br>
+}<br>
<br>
Modified: compiler-rt/trunk/lib/ubsan/ubsan_diag.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/ubsan/ubsan_diag.cc?rev=355039&r1=355038&r2=355039&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/ubsan/ubsan_diag.cc?rev=355039&r1=355038&r2=355039&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/ubsan/ubsan_diag.cc (original)<br>
+++ compiler-rt/trunk/lib/ubsan/ubsan_diag.cc Wed Feb 27 14:16:02 2019<br>
@@ -26,17 +26,6 @@<br>
<br>
 using namespace __ubsan;<br>
<br>
-void __ubsan::GetStackTrace(BufferedStackTrace *stack, uptr max_depth, uptr pc,<br>
-                            uptr bp, void *context, bool fast) {<br>
-  uptr top = 0;<br>
-  uptr bottom = 0;<br>
-  if (StackTrace::WillUseFastUnwind(fast)) {<br>
-    GetThreadStackTopAndBottom(false, &top, &bottom);<br>
-    stack->Unwind(max_depth, pc, bp, nullptr, top, bottom, true);<br>
-  } else<br>
-    stack->Unwind(max_depth, pc, bp, context, 0, 0, false);<br>
-}<br>
-<br>
 static void MaybePrintStackTrace(uptr pc, uptr bp) {<br>
   // We assume that flags are already parsed, as UBSan runtime<br>
   // will definitely be called when we print the first diagnostics message.<br>
<br>
Modified: compiler-rt/trunk/lib/ubsan/ubsan_diag.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/ubsan/ubsan_diag.h?rev=355039&r1=355038&r2=355039&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/ubsan/ubsan_diag.h?rev=355039&r1=355038&r2=355039&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/ubsan/ubsan_diag.h (original)<br>
+++ compiler-rt/trunk/lib/ubsan/ubsan_diag.h Wed Feb 27 14:16:02 2019<br>
@@ -234,9 +234,6 @@ bool ignoreReport(SourceLocation SLoc, R<br>
     GET_CALLER_PC_BP; \<br>
     ReportOptions Opts = {unrecoverable_handler, pc, bp}<br>
<br>
-void GetStackTrace(BufferedStackTrace *stack, uptr max_depth, uptr pc, uptr bp,<br>
-                   void *context, bool fast);<br>
-<br>
 /// \brief Instantiate this class before printing diagnostics in the error<br>
 /// report. This class ensures that reports from different threads and from<br>
 /// different sanitizers won't be mixed.<br>
<br>
Modified: compiler-rt/trunk/lib/ubsan/ubsan_diag_standalone.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/ubsan/ubsan_diag_standalone.cc?rev=355039&r1=355038&r2=355039&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/ubsan/ubsan_diag_standalone.cc?rev=355039&r1=355038&r2=355039&view=diff</a><br>
==============================================================================<br>
--- compiler-rt/trunk/lib/ubsan/ubsan_diag_standalone.cc (original)<br>
+++ compiler-rt/trunk/lib/ubsan/ubsan_diag_standalone.cc Wed Feb 27 14:16:02 2019<br>
@@ -14,6 +14,17 @@<br>
 #if CAN_SANITIZE_UB<br>
 #include "ubsan_diag.h"<br>
<br>
+void __sanitizer::GetStackTrace(BufferedStackTrace *stack, uptr max_depth,<br>
+                                uptr pc, uptr bp, void *context, bool fast) {<br>
+  uptr top = 0;<br>
+  uptr bottom = 0;<br>
+  if (StackTrace::WillUseFastUnwind(fast)) {<br>
+    GetThreadStackTopAndBottom(false, &top, &bottom);<br>
+    stack->Unwind(max_depth, pc, bp, nullptr, top, bottom, true);<br>
+  } else<br>
+    stack->Unwind(max_depth, pc, bp, context, 0, 0, false);<br>
+}<br>
+<br>
 using namespace __ubsan;<br>
<br>
 extern "C" {<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>