diff options
| author | Jim Ingham <jingham@apple.com> | 2022-05-18 14:39:03 -0700 |
|---|---|---|
| committer | Jim Ingham <jingham@apple.com> | 2022-05-26 14:50:33 -0700 |
| commit | 134d7f9a4b97e9035150d970bd9e376043c4577e (patch) | |
| tree | 8ecfa87e6639f75e740c5b9458100d846f18712e /lldb/source/Target/UnixSignals.cpp | |
| parent | e267df8ce8d86ba14187b316ad2495afaebe9a44 (diff) | |
| download | llvm-134d7f9a4b97e9035150d970bd9e376043c4577e.zip llvm-134d7f9a4b97e9035150d970bd9e376043c4577e.tar.gz llvm-134d7f9a4b97e9035150d970bd9e376043c4577e.tar.bz2 | |
Store a by name list of signals with their actions in the Target
so that they can be used to prime new Process runs. "process handle"
was also changed to populate the dummy target if there's no selected
target, so that the settings will get copied into new targets.
Differential Revision: https://reviews.llvm.org/D126259
Diffstat (limited to 'lldb/source/Target/UnixSignals.cpp')
| -rw-r--r-- | lldb/source/Target/UnixSignals.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/lldb/source/Target/UnixSignals.cpp b/lldb/source/Target/UnixSignals.cpp index 26ff0bb..de1fdb8 100644 --- a/lldb/source/Target/UnixSignals.cpp +++ b/lldb/source/Target/UnixSignals.cpp @@ -22,7 +22,9 @@ UnixSignals::Signal::Signal(const char *name, bool default_suppress, const char *description, const char *alias) : m_name(name), m_alias(alias), m_description(), m_suppress(default_suppress), m_stop(default_stop), - m_notify(default_notify) { + m_notify(default_notify), + m_default_suppress(default_suppress), m_default_stop(default_stop), + m_default_notify(default_notify) { if (description) m_description.assign(description); } @@ -330,3 +332,23 @@ json::Value UnixSignals::GetHitCountStatistics() const { } return std::move(json_signals); } + +void UnixSignals::Signal::Reset(bool reset_stop, bool reset_notify, + bool reset_suppress) { + if (reset_stop) + m_stop = m_default_stop; + if (reset_notify) + m_notify = m_default_notify; + if (reset_suppress) + m_suppress = m_default_suppress; +} + +bool UnixSignals::ResetSignal(int32_t signo, bool reset_stop, + bool reset_notify, bool reset_suppress) { + auto elem = m_signals.find(signo); + if (elem == m_signals.end()) + return false; + (*elem).second.Reset(reset_stop, reset_notify, reset_suppress); + return true; +} + |
