Imported Upstream version 6.10.0.49

Former-commit-id: 1d6753294b2993e1fbf92de9366bb9544db4189b
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2020-01-16 16:38:04 +00:00
parent d94e79959b
commit 468663ddbb
48518 changed files with 2789335 additions and 61176 deletions

View File

@ -0,0 +1,7 @@
script import os, sys
# So that ~/utils.py takes precedence.
script sys.path[:0] = [os.path.expanduser('~')]
script import utils
command alias pwd script print os.getcwd()
command script add -f utils.chdir cd
command script add -f utils.system system

View File

@ -0,0 +1,41 @@
Files in this directory:
o .lldbinit:
An example lldb init file that imports the utils.py module and adds the
following commands: 'pwd', 'cd', and 'system'.
o utils.py:
Python module which provides implementation for the 'cd' and 'system' commands.
o README:
The file you are reading now.
================================================================================
The following terminal output shows an interaction with lldb using the .lldbinit
and the utils.py files which are located in my HOME directory. The lldb init
file imports the utils Python module and adds the 'pwd', 'cd', and 'system'
commands.
Johnnys-MacBook-Pro:multiple_threads johnny$ pwd
/Volumes/data/lldb/svn/trunk/test/functionalities/watchpoint/multiple_threads
Johnnys-MacBook-Pro:multiple_threads johnny$ lldb
(lldb) pwd
/Volumes/data/lldb/svn/trunk/test/functionalities/watchpoint/multiple_threads
(lldb) cd ..
Current working directory: /Volumes/data/lldb/svn/trunk/test/functionalities/watchpoint
(lldb) help system
Execute the command (a string) in a subshell.
Syntax: system
(lldb) system ls -l
total 0
drwxr-xr-x 7 johnny admin 238 Oct 11 17:24 hello_watchlocation
drwxr-xr-x 7 johnny admin 238 Oct 11 17:24 hello_watchpoint
drwxr-xr-x 7 johnny admin 238 Oct 11 17:24 multiple_threads
drwxr-xr-x 7 johnny admin 238 Oct 11 17:24 watchpoint_commands
retcode: 0
(lldb)

View File

@ -0,0 +1,58 @@
"""Utility for changing directories and execution of commands in a subshell."""
import os
import shlex
import subprocess
# Store the previous working directory for the 'cd -' command.
class Holder:
"""Holds the _prev_dir_ class attribute for chdir() function."""
_prev_dir_ = None
@classmethod
def prev_dir(cls):
return cls._prev_dir_
@classmethod
def swap(cls, dir):
cls._prev_dir_ = dir
def chdir(debugger, args, result, dict):
"""Change the working directory, or cd to ${HOME}.
You can also issue 'cd -' to change to the previous working directory."""
new_dir = args.strip()
if not new_dir:
new_dir = os.path.expanduser('~')
elif new_dir == '-':
if not Holder.prev_dir():
# Bad directory, not changing.
print "bad directory, not changing"
return
else:
new_dir = Holder.prev_dir()
Holder.swap(os.getcwd())
os.chdir(new_dir)
print "Current working directory: %s" % os.getcwd()
def system(debugger, command_line, result, dict):
"""Execute the command (a string) in a subshell."""
args = shlex.split(command_line)
process = subprocess.Popen(
args,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
output, error = process.communicate()
retcode = process.poll()
if output and error:
print "stdout=>\n", output
print "stderr=>\n", error
elif output:
print output
elif error:
print error
print "retcode:", retcode