Skip to content

Commit

Permalink
Fix build failure on lldb-amd64-ninja-freebsd11 error caused by rL283474
Browse files Browse the repository at this point in the history
Differential Revision: https://reviews.llvm.org/D25362

llvm-svn: 283548
  • Loading branch information
Valentina Giusti committed Oct 7, 2016
1 parent de42b43 commit 1c2c728
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 9 deletions.
30 changes: 21 additions & 9 deletions lldb/source/Plugins/Process/POSIX/CrashReason.cpp
Expand Up @@ -136,27 +136,39 @@ CrashReason GetCrashReasonForSIGBUS(const siginfo_t &info) {
std::string GetCrashReasonString(CrashReason reason, const siginfo_t &info) {
std::string str;

// make sure that siginfo_t has the bound fields available.
#if defined(si_lower) && defined(si_upper)
if (reason == CrashReason::eBoundViolation) {
str = "signal SIGSEGV";
AppendBounds(str, reinterpret_cast<lldb::addr_t>(info.si_lower),
reinterpret_cast<lldb::addr_t>(info.si_upper),
reinterpret_cast<lldb::addr_t>(info.si_addr));
return str;
}
#endif

return GetCrashReasonString(reason,
reinterpret_cast<lldb::addr_t>(info.si_addr));
}

std::string GetCrashReasonString(CrashReason reason, lldb::addr_t fault_addr) {
std::string str;

switch (reason) {
default:
assert(false && "invalid CrashReason");
break;

case CrashReason::eInvalidAddress:
str = "signal SIGSEGV: invalid address";
AppendFaultAddr(str, reinterpret_cast<lldb::addr_t>(info.si_addr));
AppendFaultAddr(str, fault_addr);
break;
case CrashReason::ePrivilegedAddress:
str = "signal SIGSEGV: address access protected";
AppendFaultAddr(str, reinterpret_cast<lldb::addr_t>(info.si_addr));
AppendFaultAddr(str, fault_addr);
break;
case CrashReason::eBoundViolation:
str = "signal SIGSEGV";
// Make sure that siginfo_t has the bound fields available.
#if defined(si_lower) && defined(si_upper)
AppendBounds(str, reinterpret_cast<lldb::addr_t>(info.si_lower),
reinterpret_cast<lldb::addr_t>(info.si_upper),
reinterpret_cast<lldb::addr_t>(info.si_addr));
#endif
str = "signal SIGSEGV: bound violation";
break;
case CrashReason::eIllegalOpcode:
str = "signal SIGILL: illegal instruction";
Expand Down
1 change: 1 addition & 0 deletions lldb/source/Plugins/Process/POSIX/CrashReason.h
Expand Up @@ -50,6 +50,7 @@ enum class CrashReason {
eFloatSubscriptRange
};

std::string GetCrashReasonString(CrashReason reason, lldb::addr_t fault_addr);
std::string GetCrashReasonString(CrashReason reason, const siginfo_t &info);

const char *CrashReasonAsString(CrashReason reason);
Expand Down

0 comments on commit 1c2c728

Please sign in to comment.