12341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen//===-- ProcessMessage.cpp --------------------------------------*- C++ -*-===//
22341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen//
32341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen//                     The LLVM Compiler Infrastructure
42341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen//
52341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen// This file is distributed under the University of Illinois Open Source
62341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen// License. See LICENSE.TXT for details.
72341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen//
82341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen//===----------------------------------------------------------------------===//
92341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
102341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#include "ProcessMessage.h"
112341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
12010a8d85100602eff09bd61a85987efd0001188aMatt Kopec#include <sstream>
13010a8d85100602eff09bd61a85987efd0001188aMatt Kopec
142341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chenusing namespace lldb_private;
152341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
16010a8d85100602eff09bd61a85987efd0001188aMatt Kopecnamespace {
17010a8d85100602eff09bd61a85987efd0001188aMatt Kopec
18010a8d85100602eff09bd61a85987efd0001188aMatt Kopecinline void AppendFaultAddr(std::string& str, lldb::addr_t addr)
19010a8d85100602eff09bd61a85987efd0001188aMatt Kopec{
20010a8d85100602eff09bd61a85987efd0001188aMatt Kopec    std::stringstream ss;
21010a8d85100602eff09bd61a85987efd0001188aMatt Kopec    ss << " (fault address: 0x" << std::hex << addr << ")";
22010a8d85100602eff09bd61a85987efd0001188aMatt Kopec    str += ss.str();
23010a8d85100602eff09bd61a85987efd0001188aMatt Kopec}
24010a8d85100602eff09bd61a85987efd0001188aMatt Kopec
25010a8d85100602eff09bd61a85987efd0001188aMatt Kopec}
26010a8d85100602eff09bd61a85987efd0001188aMatt Kopec
272341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chenconst char *
28010a8d85100602eff09bd61a85987efd0001188aMatt KopecProcessMessage::GetCrashReasonString(CrashReason reason, lldb::addr_t fault_addr)
292341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen{
30010a8d85100602eff09bd61a85987efd0001188aMatt Kopec    static std::string str;
312341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
322341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    switch (reason)
332341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    {
342341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    default:
352341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        assert(false && "invalid CrashReason");
362341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
372341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
382341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eInvalidAddress:
392341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "invalid address";
40010a8d85100602eff09bd61a85987efd0001188aMatt Kopec        AppendFaultAddr(str, fault_addr);
412341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
422341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case ePrivilegedAddress:
432341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "address access protected";
44010a8d85100602eff09bd61a85987efd0001188aMatt Kopec        AppendFaultAddr(str, fault_addr);
452341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
462341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eIllegalOpcode:
472341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "illegal instruction";
482341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
492341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eIllegalOperand:
502341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "illegal instruction operand";
512341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
522341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eIllegalAddressingMode:
532341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "illegal addressing mode";
542341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
552341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eIllegalTrap:
562341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "illegal trap";
572341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
582341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case ePrivilegedOpcode:
592341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "privileged instruction";
602341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
612341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case ePrivilegedRegister:
622341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "privileged register";
632341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
642341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eCoprocessorError:
652341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "coprocessor error";
662341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
672341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eInternalStackError:
682341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "internal stack error";
692341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
702341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eIllegalAlignment:
712341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "illegal alignment";
722341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
732341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eIllegalAddress:
742341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "illegal address";
752341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
762341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eHardwareError:
772341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "hardware error";
782341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
792341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eIntegerDivideByZero:
802341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "integer divide by zero";
812341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
822341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eIntegerOverflow:
832341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "integer overflow";
842341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
852341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eFloatDivideByZero:
862341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "floating point divide by zero";
872341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
882341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eFloatOverflow:
892341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "floating point overflow";
902341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
912341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eFloatUnderflow:
922341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "floating point underflow";
932341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
942341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eFloatInexactResult:
952341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "inexact floating point result";
962341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
972341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eFloatInvalidOperation:
982341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "invalid floating point operation";
992341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
1002341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eFloatSubscriptRange:
1012341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "invalid floating point subscript range";
1022341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
1032341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    }
1042341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
105010a8d85100602eff09bd61a85987efd0001188aMatt Kopec    return str.c_str();
1062341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen}
1072341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
1082341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chenconst char *
1092341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny ChenProcessMessage::PrintCrashReason(CrashReason reason)
1102341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen{
1112341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#ifdef LLDB_CONFIGURATION_BUILDANDINTEGRATION
1122341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    // Just return the code in asci for integration builds.
1132341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    chcar str[8];
1142341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    sprintf(str, "%d", reason);
1152341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#else
1162341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    const char *str = NULL;
1172341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
1182341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    switch (reason)
1192341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    {
1202341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case eInvalidCrashReason:
1212341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "eInvalidCrashReason";
1222341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1232341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
1242341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        // SIGSEGV crash reasons.
1252341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case eInvalidAddress:
1262341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "eInvalidAddress";
1272341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1282341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case ePrivilegedAddress:
1292341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "ePrivilegedAddress";
1302341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1312341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
1322341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        // SIGILL crash reasons.
1332341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case eIllegalOpcode:
1342341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "eIllegalOpcode";
1352341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1362341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case eIllegalOperand:
1372341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "eIllegalOperand";
1382341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1392341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case eIllegalAddressingMode:
1402341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "eIllegalAddressingMode";
1412341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1422341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case eIllegalTrap:
1432341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "eIllegalTrap";
1442341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1452341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case ePrivilegedOpcode:
1462341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "ePrivilegedOpcode";
1472341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1482341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case ePrivilegedRegister:
1492341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "ePrivilegedRegister";
1502341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1512341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case eCoprocessorError:
1522341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "eCoprocessorError";
1532341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1542341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case eInternalStackError:
1552341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "eInternalStackError";
1562341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1572341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
1582341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        // SIGBUS crash reasons:
1592341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case eIllegalAlignment:
1602341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "eIllegalAlignment";
1612341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1622341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case eIllegalAddress:
1632341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "eIllegalAddress";
1642341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1652341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case eHardwareError:
1662341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "eHardwareError";
1672341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1682341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
1692341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        // SIGFPE crash reasons:
1702341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case eIntegerDivideByZero:
1712341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "eIntegerDivideByZero";
1722341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1732341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case eIntegerOverflow:
1742341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "eIntegerOverflow";
1752341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1762341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case eFloatDivideByZero:
1772341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "eFloatDivideByZero";
1782341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1792341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case eFloatOverflow:
1802341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "eFloatOverflow";
1812341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1822341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case eFloatUnderflow:
1832341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "eFloatUnderflow";
1842341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1852341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case eFloatInexactResult:
1862341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "eFloatInexactResult";
1872341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1882341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case eFloatInvalidOperation:
1892341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "eFloatInvalidOperation";
1902341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1912341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        case eFloatSubscriptRange:
1922341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            str = "eFloatSubscriptRange";
1932341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen            break;
1942341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    }
1952341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#endif
1962341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
1972341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    return str;
1982341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen}
1992341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
2002341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chenconst char *
2012341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny ChenProcessMessage::PrintCrashReason() const
2022341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen{
2032341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    return PrintCrashReason(m_crash_reason);
2042341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen}
2052341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
2062341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chenconst char *
2072341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny ChenProcessMessage::PrintKind(Kind kind)
2082341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen{
2092341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#ifdef LLDB_CONFIGURATION_BUILDANDINTEGRATION
2102341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    // Just return the code in asci for integration builds.
2112341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    chcar str[8];
2122341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    sprintf(str, "%d", reason);
2132341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#else
2142341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    const char *str = NULL;
2152341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
2162341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    switch (kind)
2172341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    {
2182341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eInvalidMessage:
2192341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "eInvalidMessage";
2202341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
2212341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eExitMessage:
2222341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "eExitMessage";
2232341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
2242341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eLimboMessage:
2252341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "eLimboMessage";
2262341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
2272341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eSignalMessage:
2282341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "eSignalMessage";
2292341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
2302341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eSignalDeliveredMessage:
2312341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "eSignalDeliveredMessage";
2322341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
2332341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eTraceMessage:
2342341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "eTraceMessage";
2352341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
2362341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eBreakpointMessage:
2372341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "eBreakpointMessage";
2382341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
2393d4d51cd1bdef32ab61ba9e1de75d5a4f4c1dbedMatt Kopec    case eWatchpointMessage:
2403d4d51cd1bdef32ab61ba9e1de75d5a4f4c1dbedMatt Kopec        str = "eWatchpointMessage";
2413d4d51cd1bdef32ab61ba9e1de75d5a4f4c1dbedMatt Kopec        break;
2422341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    case eCrashMessage:
2432341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        str = "eCrashMessage";
2442341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen        break;
245f1fda3748c39c92d2e79aeba0715baffabd3286bMatt Kopec    case eNewThreadMessage:
246f1fda3748c39c92d2e79aeba0715baffabd3286bMatt Kopec        str = "eNewThreadMessage";
247f1fda3748c39c92d2e79aeba0715baffabd3286bMatt Kopec        break;
2482341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    }
2492341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen#endif
2502341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
2512341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    return str;
2522341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen}
2532341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen
2542341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chenconst char *
2552341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny ChenProcessMessage::PrintKind() const
2562341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen{
2572341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen    return PrintKind(m_kind);
2582341d35bc77ffa8597a85b1ffe50b5653a2ec46dJohnny Chen}
259