diff options
Diffstat (limited to 'contrib/llvm/tools/lldb/source/API/SBUnixSignals.cpp')
-rw-r--r-- | contrib/llvm/tools/lldb/source/API/SBUnixSignals.cpp | 105 |
1 files changed, 51 insertions, 54 deletions
diff --git a/contrib/llvm/tools/lldb/source/API/SBUnixSignals.cpp b/contrib/llvm/tools/lldb/source/API/SBUnixSignals.cpp index ca321d8..531c978 100644 --- a/contrib/llvm/tools/lldb/source/API/SBUnixSignals.cpp +++ b/contrib/llvm/tools/lldb/source/API/SBUnixSignals.cpp @@ -9,6 +9,7 @@ #include "lldb/lldb-defines.h" #include "lldb/Target/Process.h" +#include "lldb/Target/Platform.h" #include "lldb/Target/UnixSignals.h" #include "lldb/Core/Log.h" @@ -25,8 +26,13 @@ SBUnixSignals::SBUnixSignals (const SBUnixSignals &rhs) : { } -SBUnixSignals::SBUnixSignals (ProcessSP &process_sp) : - m_opaque_wp(process_sp) +SBUnixSignals::SBUnixSignals(ProcessSP &process_sp) : + m_opaque_wp(process_sp ? process_sp->GetUnixSignals() : nullptr) +{ +} + +SBUnixSignals::SBUnixSignals(PlatformSP &platform_sp) : + m_opaque_wp(platform_sp ? platform_sp->GetUnixSignals() : nullptr) { } @@ -42,16 +48,16 @@ SBUnixSignals::~SBUnixSignals() { } -ProcessSP +UnixSignalsSP SBUnixSignals::GetSP() const { return m_opaque_wp.lock(); } void -SBUnixSignals::SetSP (const ProcessSP &process_sp) +SBUnixSignals::SetSP(const UnixSignalsSP &signals_sp) { - m_opaque_wp = process_sp; + m_opaque_wp = signals_sp; } void @@ -63,30 +69,33 @@ SBUnixSignals::Clear () bool SBUnixSignals::IsValid() const { - return (bool) GetSP(); + return static_cast<bool>(GetSP()); } const char * SBUnixSignals::GetSignalAsCString (int32_t signo) const { - ProcessSP process_sp(GetSP()); - if (process_sp) return process_sp->GetUnixSignals().GetSignalAsCString(signo); - return NULL; + if (auto signals_sp = GetSP()) + return signals_sp->GetSignalAsCString(signo); + + return nullptr; } int32_t SBUnixSignals::GetSignalNumberFromName (const char *name) const { - ProcessSP process_sp(GetSP()); - if (process_sp) return process_sp->GetUnixSignals().GetSignalNumberFromName(name); - return -1; + if (auto signals_sp = GetSP()) + return signals_sp->GetSignalNumberFromName(name); + + return LLDB_INVALID_SIGNAL_NUMBER; } bool SBUnixSignals::GetShouldSuppress (int32_t signo) const { - ProcessSP process_sp(GetSP()); - if (process_sp) return process_sp->GetUnixSignals().GetShouldSuppress(signo); + if (auto signals_sp = GetSP()) + return signals_sp->GetShouldSuppress(signo); + return false; } @@ -94,25 +103,28 @@ bool SBUnixSignals::SetShouldSuppress (int32_t signo, bool value) { Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); - ProcessSP process_sp(GetSP()); + auto signals_sp = GetSP(); if (log) { log->Printf ("SBUnixSignals(%p)::SetShouldSuppress (signo=%d, value=%d)", - static_cast<void*>(process_sp.get()), + static_cast<void*>(signals_sp.get()), signo, value); } - if (process_sp) return process_sp->GetUnixSignals().SetShouldSuppress(signo, value); + if (signals_sp) + return signals_sp->SetShouldSuppress(signo, value); + return false; } bool SBUnixSignals::GetShouldStop (int32_t signo) const { - ProcessSP process_sp(GetSP()); - if (process_sp) return process_sp->GetUnixSignals().GetShouldStop(signo); + if (auto signals_sp = GetSP()) + return signals_sp->GetShouldStop(signo); + return false; } @@ -120,25 +132,28 @@ bool SBUnixSignals::SetShouldStop (int32_t signo, bool value) { Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); - ProcessSP process_sp(GetSP()); + auto signals_sp = GetSP(); if (log) { log->Printf ("SBUnixSignals(%p)::SetShouldStop (signo=%d, value=%d)", - static_cast<void*>(process_sp.get()), + static_cast<void*>(signals_sp.get()), signo, value); } - if (process_sp) return process_sp->GetUnixSignals().SetShouldStop(signo, value); + if (signals_sp) + return signals_sp->SetShouldStop(signo, value); + return false; } bool SBUnixSignals::GetShouldNotify (int32_t signo) const { - ProcessSP process_sp(GetSP()); - if (process_sp) return process_sp->GetUnixSignals().GetShouldNotify(signo); + if (auto signals_sp = GetSP()) + return signals_sp->GetShouldNotify(signo); + return false; } @@ -146,54 +161,36 @@ bool SBUnixSignals::SetShouldNotify (int32_t signo, bool value) { Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); - ProcessSP process_sp(GetSP()); + auto signals_sp = GetSP(); if (log) { log->Printf ("SBUnixSignals(%p)::SetShouldNotify (signo=%d, value=%d)", - static_cast<void*>(process_sp.get()), + static_cast<void*>(signals_sp.get()), signo, value); } - if (process_sp) return process_sp->GetUnixSignals().SetShouldNotify(signo, value); + if (signals_sp) + return signals_sp->SetShouldNotify(signo, value); + return false; } int32_t SBUnixSignals::GetNumSignals () const { - if (auto process_sp = GetSP()) - { - // only valid while we hold process_sp - UnixSignals *unix_signals_ptr = &process_sp->GetUnixSignals(); - int32_t num_signals = 0; - for (int32_t signo = unix_signals_ptr->GetFirstSignalNumber(); - signo != LLDB_INVALID_SIGNAL_NUMBER; - signo = unix_signals_ptr->GetNextSignalNumber(signo)) - { - num_signals++; - } - return num_signals; - } - return LLDB_INVALID_SIGNAL_NUMBER; + if (auto signals_sp = GetSP()) + return signals_sp->GetNumSignals(); + + return -1; } int32_t SBUnixSignals::GetSignalAtIndex (int32_t index) const { - if (auto process_sp = GetSP()) - { - // only valid while we hold process_sp - UnixSignals *unix_signals_ptr = &process_sp->GetUnixSignals(); - int32_t idx = 0; - for (int32_t signo = unix_signals_ptr->GetFirstSignalNumber(); - signo != LLDB_INVALID_SIGNAL_NUMBER; - signo = unix_signals_ptr->GetNextSignalNumber(signo)) - { - if (index == idx) return signo; - idx++; - } - } + if (auto signals_sp = GetSP()) + return signals_sp->GetSignalAtIndex(index); + return LLDB_INVALID_SIGNAL_NUMBER; } |