1ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner//===- clang/Basic/PrettyStackTrace.h - Pretty Crash Handling --*- C++ -*-===// 2ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner// 3ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner// The LLVM Compiler Infrastructure 4ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner// 5ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner// This file is distributed under the University of Illinois Open Source 6ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner// License. See LICENSE.TXT for details. 7ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner// 8ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner//===----------------------------------------------------------------------===// 92f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// 102f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// \file 112f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// \brief Defines the PrettyStackTraceEntry class, which is used to make 122f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// crashes give more contextual information about what the program was doing 132f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// when it crashed. 142f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett/// 15ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner//===----------------------------------------------------------------------===// 16ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner 17ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner#ifndef CLANG_BASIC_PRETTYSTACKTRACE_H 18ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner#define CLANG_BASIC_PRETTYSTACKTRACE_H 19ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner 20ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner#include "clang/Basic/SourceLocation.h" 21ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner#include "llvm/Support/PrettyStackTrace.h" 22ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner 23ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattnernamespace clang { 24ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner 25af50aab0c317462129d73ae8000c6394c718598dJames Dennett /// If a crash happens while one of these objects are live, the message 26af50aab0c317462129d73ae8000c6394c718598dJames Dennett /// is printed out along with the specified source location. 27ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner class PrettyStackTraceLoc : public llvm::PrettyStackTraceEntry { 28ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner SourceManager &SM; 29ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner SourceLocation Loc; 30ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner const char *Message; 31ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner public: 32ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner PrettyStackTraceLoc(SourceManager &sm, SourceLocation L, const char *Msg) 33ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner : SM(sm), Loc(L), Message(Msg) {} 348cc488fefb2fb04bc8d5398da29f0182f97934cfChris Lattner virtual void print(raw_ostream &OS) const; 35ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner }; 36ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner} 37ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner 38ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner#endif 39