diff options
author | Valentina Giusti <valentina.giusti@intel.com> | 2016-10-07 13:21:59 +0000 |
---|---|---|
committer | Valentina Giusti <valentina.giusti@intel.com> | 2016-10-07 13:21:59 +0000 |
commit | 1c2c728ab15850333835d6fc32bc1a89c4ccb0b3 (patch) | |
tree | 8cf7411056c80d9fb2df6a9f9c9c488a27e3ede6 /lldb/source/Plugins/Process/POSIX/CrashReason.cpp | |
parent | de42b43de0127ccd2137aa65620e50495abb57fe (diff) | |
download | bcm5719-llvm-1c2c728ab15850333835d6fc32bc1a89c4ccb0b3.tar.gz bcm5719-llvm-1c2c728ab15850333835d6fc32bc1a89c4ccb0b3.zip |
Fix build failure on lldb-amd64-ninja-freebsd11 error caused by rL283474
Differential Revision: https://reviews.llvm.org/D25362
llvm-svn: 283548
Diffstat (limited to 'lldb/source/Plugins/Process/POSIX/CrashReason.cpp')
-rw-r--r-- | lldb/source/Plugins/Process/POSIX/CrashReason.cpp | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/lldb/source/Plugins/Process/POSIX/CrashReason.cpp b/lldb/source/Plugins/Process/POSIX/CrashReason.cpp index a7d36fc998e..debdd7808e6 100644 --- a/lldb/source/Plugins/Process/POSIX/CrashReason.cpp +++ b/lldb/source/Plugins/Process/POSIX/CrashReason.cpp @@ -136,6 +136,24 @@ 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"); @@ -143,20 +161,14 @@ std::string GetCrashReasonString(CrashReason reason, const siginfo_t &info) { 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"; |