asan_stack.cc revision d865fecddccebf898ceed24d096fc58fb29a6e57
1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)//===-- asan_stack.cc -----------------------------------------------------===// 2f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// 3f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// The LLVM Compiler Infrastructure 4f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// This file is distributed under the University of Illinois Open Source 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// License. See LICENSE.TXT for details. 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch//===----------------------------------------------------------------------===// 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// This file is a part of AddressSanitizer, an address sanity checker. 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Code for ASan stack trace. 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)//===----------------------------------------------------------------------===// 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "asan_flags.h" 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "asan_stack.h" 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "sanitizer/asan_interface.h" 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace __asan { 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdochstatic __asan_symbolize_callback symbolize_callback; 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid PrintStack(StackTrace *stack) { 23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) stack->PrintStack(stack->trace, stack->size, flags()->symbolize, 24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) flags()->strip_path_prefix, symbolize_callback); 25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace __asan 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// ------------------ Interface -------------- {{{1 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)using namespace __asan; // NOLINT 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void NOINLINE __asan_set_symbolize_callback( 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch __asan_symbolize_callback callback) { 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch symbolize_callback = callback; 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch