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