summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChaoren Lin <chaorenl@google.com>2015-06-02 16:46:28 +0000
committerChaoren Lin <chaorenl@google.com>2015-06-02 16:46:28 +0000
commitf59d050968b91ced03d786a7e8ab77c0bba91f24 (patch)
tree82748c4b19815bb085e90979cd9d24e8ea7ca28d
parent7d76a13bf3e8da7887fb1a6e5fcc7eaf4e2af957 (diff)
downloadbcm5719-llvm-f59d050968b91ced03d786a7e8ab77c0bba91f24.tar.gz
bcm5719-llvm-f59d050968b91ced03d786a7e8ab77c0bba91f24.zip
Added utility function to get correct signal number from remote platform.
Summary: This change adds a utility that uses the `kill -l` command to get the correct signal number. Falls back to using `SBUnixSignals`, and finally `signal.SIG<signal>` if all else fails. Reviewers: tberghammer, clayborg, ovyalov Reviewed By: clayborg, ovyalov Subscribers: tberghammer, lldb-commits Differential Revision: http://reviews.llvm.org/D10171 llvm-svn: 238850
-rw-r--r--lldb/test/lldbutil.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/lldb/test/lldbutil.py b/lldb/test/lldbutil.py
index 71699826a1c..6951a33888e 100644
--- a/lldb/test/lldbutil.py
+++ b/lldb/test/lldbutil.py
@@ -922,3 +922,44 @@ def join_remote_paths(*paths):
def append_to_remote_wd(*paths):
return join_remote_paths(lldb.remote_platform.GetWorkingDirectory(), *paths)
+
+# ==================================================
+# Utility functions to get the correct signal number
+# ==================================================
+
+import signal
+
+def get_signal_number(signal_name):
+ platform = lldb.remote_platform
+ if platform:
+ if platform.GetName() == 'remote-linux':
+ command = lldb.SBPlatformShellCommand('kill -l %d' % signal_name)
+ if platform.Run(command).Success() and command.GetStatus() == 0:
+ try:
+ return int(command.GetOutput())
+ except ValueError:
+ pass
+ elif platform.GetName() == 'remote-android':
+ for signal_number in range(1, 65):
+ command = lldb.SBPlatformShellCommand('kill -l %d' % signal_number)
+ if platform.Run(command).Fail() or command.GetStatus() != 0:
+ continue
+ output = command.GetOutput().strip().upper()
+ if not output.startswith('SIG'):
+ output = 'SIG' + output
+ if output == signal_name:
+ return signal_number
+ for target_index in range(lldb.debugger.GetNumTargets()):
+ target = lldb.debugger.GetTargetAtIndex(target_index)
+ if not target.IsValid():
+ continue
+ process = target.GetProcess()
+ if not process.IsValid():
+ continue
+ signals = process.GetUnixSignals()
+ if not signals.IsValid():
+ continue
+ signal_number = signals.GetSignalNumberFromName(signal_name)
+ if signal_number > 0:
+ return signal_number
+ return getattr(signal, signal_name)
OpenPOWER on IntegriCloud