[Lldb-commits] [lldb] [lldb] Format Python files in scripts and utils (PR #66053)
via lldb-commits
lldb-commits at lists.llvm.org
Tue Sep 12 01:02:25 PDT 2023
llvmbot wrote:
@llvm/pr-subscribers-lldb
<details>
<summary>Changes</summary>
Using:
black --exclude "third_party/" ./lldb/
--
Patch is 108.25 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/66053.diff
17 Files Affected:
- (modified) lldb/scripts/analyze-project-deps.py (+42-24)
- (modified) lldb/scripts/android/host_art_bt.py (+146-83)
- (modified) lldb/scripts/install_custom_python.py (+72-74)
- (modified) lldb/scripts/reproducer-replay.py (+50-48)
- (modified) lldb/scripts/use_lldb_suite.py (+3-1)
- (modified) lldb/scripts/verify_api.py (+57-42)
- (modified) lldb/utils/lldb-repro/lldb-repro.py (+17-13)
- (modified) lldb/utils/lui/breakwin.py (+7-7)
- (modified) lldb/utils/lui/commandwin.py (+16-19)
- (modified) lldb/utils/lui/cui.py (+25-30)
- (modified) lldb/utils/lui/debuggerdriver.py (+40-36)
- (modified) lldb/utils/lui/eventwin.py (+1-2)
- (modified) lldb/utils/lui/lldbutil.py (+204-168)
- (modified) lldb/utils/lui/lui.py (+25-29)
- (modified) lldb/utils/lui/sandbox.py (+6-6)
- (modified) lldb/utils/lui/sourcewin.py (+37-25)
- (modified) lldb/utils/lui/statuswin.py (+6-6)
<pre>
diff --git a/lldb/scripts/analyze-project-deps.py b/lldb/scripts/analyze-project-deps.py
index 89da3dc9df7b3c6..4724367e2e722d0 100755
--- a/lldb/scripts/analyze-project-deps.py
+++ b/lldb/scripts/analyze-project-deps.py
@@ -10,12 +10,21 @@
from use_lldb_suite import lldb_root
parser = argparse.ArgumentParser(
- description='Analyze LLDB project #include dependencies.')
-parser.add_argument('--show-counts', default=False, action='store_true',
- help='When true, show the number of dependencies from each subproject')
-parser.add_argument('--discover-cycles', default=False, action='store_true',
- help='When true, find and display all project dependency cycles. Note,'
- 'this option is very slow')
+ description="Analyze LLDB project #include dependencies."
+)
+parser.add_argument(
+ "--show-counts",
+ default=False,
+ action="store_true",
+ help="When true, show the number of dependencies from each subproject",
+)
+parser.add_argument(
+ "--discover-cycles",
+ default=False,
+ action="store_true",
+ help="When true, find and display all project dependency cycles. Note,"
+ "this option is very slow",
+)
args = parser.parse_args()
@@ -24,12 +33,14 @@
src_map = {}
-include_regex = re.compile('#include \"((lldb|Plugins|clang)(.*/)+).*\"')
+include_regex = re.compile('#include "((lldb|Plugins|clang)(.*/)+).*"')
+
def is_sublist(small, big):
it = iter(big)
return all(c in it for c in small)
+
def normalize_host(str):
if str.startswith("lldb/Host"):
return "lldb/Host"
@@ -39,6 +50,7 @@ def normalize_host(str):
return str.replace("lldb/../../source", "lldb")
return str
+
def scan_deps(this_dir, file):
global src_map
deps = {}
@@ -62,7 +74,8 @@ def scan_deps(this_dir, file):
if this_dir not in src_map and len(deps) > 0:
src_map[this_dir] = deps
-for (base, dirs, files) in os.walk(inc_dir):
+
+for base, dirs, files in os.walk(inc_dir):
dir = os.path.basename(base)
relative = os.path.relpath(base, inc_dir)
inc_files = [x for x in files if os.path.splitext(x)[1] in [".h"]]
@@ -71,7 +84,7 @@ def scan_deps(this_dir, file):
inc_path = os.path.join(base, inc)
scan_deps(relative, inc_path)
-for (base, dirs, files) in os.walk(src_dir):
+for base, dirs, files in os.walk(src_dir):
dir = os.path.basename(base)
relative = os.path.relpath(base, src_dir)
src_files = [x for x in files if os.path.splitext(x)[1] in [".cpp", ".h", ".mm"]]
@@ -82,6 +95,7 @@ def scan_deps(this_dir, file):
scan_deps(norm_base_path, src_path)
pass
+
def is_existing_cycle(path, cycles):
# If we have a cycle like # A -> B -> C (with an implicit -> A at the end)
# then we don't just want to check for an occurrence of A -> B -> C in the
@@ -90,12 +104,13 @@ def is_existing_cycle(path, cycles):
# at the end), then A -> B -> C is also a cycle. This is an important
# optimization which reduces the search space by multiple orders of
# magnitude.
- for i in range(0,len(path)):
+ for i in range(0, len(path)):
if any(is_sublist(x, path) for x in cycles):
return True
path = [path[-1]] + path[0:-1]
return False
+
def expand(path_queue, path_lengths, cycles, src_map):
# We do a breadth first search, to make sure we visit all paths in order
# of ascending length. This is an important optimization to make sure that
@@ -127,54 +142,57 @@ def expand(path_queue, path_lengths, cycles, src_map):
path_queue.append(cur_path + [item])
pass
+
cycles = []
path_queue = [[x] for x in iter(src_map)]
path_lens = [1] * len(path_queue)
items = list(src_map.items())
-items.sort(key = lambda A : A[0])
+items.sort(key=lambda A: A[0])
-for (path, deps) in items:
+for path, deps in items:
print(path + ":")
sorted_deps = list(deps.items())
if args.show_counts:
- sorted_deps.sort(key = lambda A: (A[1], A[0]))
+ sorted_deps.sort(key=lambda A: (A[1], A[0]))
for dep in sorted_deps:
print("\t{} [{}]".format(dep[0], dep[1]))
else:
- sorted_deps.sort(key = lambda A: A[0])
+ sorted_deps.sort(key=lambda A: A[0])
for dep in sorted_deps:
print("\t{}".format(dep[0]))
+
def iter_cycles(cycles):
global src_map
for cycle in cycles:
cycle.append(cycle[0])
zipper = list(zip(cycle[0:-1], cycle[1:]))
- result = [(x, src_map[x][y], y) for (x,y) in zipper]
+ result = [(x, src_map[x][y], y) for (x, y) in zipper]
total = 0
smallest = result[0][1]
- for (first, value, last) in result:
+ for first, value, last in result:
total += value
smallest = min(smallest, value)
yield (total, smallest, result)
+
if args.discover_cycles:
print("Analyzing cycles...")
expand(path_queue, path_lens, cycles, src_map)
- average = sum([len(x)+1 for x in cycles]) / len(cycles)
+ average = sum([len(x) + 1 for x in cycles]) / len(cycles)
print("Found {} cycles. Average cycle length = {}.".format(len(cycles), average))
counted = list(iter_cycles(cycles))
if args.show_counts:
- counted.sort(key = lambda A: A[0])
- for (total, smallest, cycle) in counted:
+ counted.sort(key=lambda A: A[0])
+ for total, smallest, cycle in counted:
sys.stdout.write("{} deps to break: ".format(total))
sys.stdout.write(cycle[0][0])
- for (first, count, last) in cycle:
+ for first, count, last in cycle:
sys.stdout.write(" [{}->] {}".format(count, last))
sys.stdout.write("\n")
else:
@@ -186,8 +204,8 @@ def iter_cycles(cycles):
islands = []
outgoing_counts = defaultdict(int)
incoming_counts = defaultdict(int)
- for (total, smallest, cycle) in counted:
- for (first, count, last) in cycle:
+ for total, smallest, cycle in counted:
+ for first, count, last in cycle:
outgoing_counts[first] += count
incoming_counts[last] += count
for cycle in cycles:
@@ -201,8 +219,8 @@ def iter_cycles(cycles):
sorted = []
for node in island:
sorted.append((node, incoming_counts[node], outgoing_counts[node]))
- sorted.sort(key = lambda x: x[1]+x[2])
- for (node, inc, outg) in sorted:
+ sorted.sort(key=lambda x: x[1] + x[2])
+ for node, inc, outg in sorted:
print(" {} [{} in, {} out]".format(node, inc, outg))
sys.stdout.flush()
pass
diff --git a/lldb/scripts/android/host_art_bt.py b/lldb/scripts/android/host_art_bt.py
index 03797074aafdddd..d4c5af46d9e2f8e 100644
--- a/lldb/scripts/android/host_art_bt.py
+++ b/lldb/scripts/android/host_art_bt.py
@@ -20,45 +20,59 @@ def host_art_bt(debugger, command, result, internal_dict):
thread = process.GetSelectedThread()
while lldb_frame_index < thread.GetNumFrames():
frame = thread.GetFrameAtIndex(lldb_frame_index)
- if frame.GetModule() and re.match(r'JIT\(.*?\)',
- frame.GetModule().GetFileSpec().GetFilename()):
+ if frame.GetModule() and re.match(
+ r"JIT\(.*?\)", frame.GetModule().GetFileSpec().GetFilename()
+ ):
# Compiled Java frame
# Get function/filename/lineno from symbol context
symbol = frame.GetSymbol()
if not symbol:
- print('No symbol info for compiled Java frame: ', frame)
+ print("No symbol info for compiled Java frame: ", frame)
sys.exit(1)
line_entry = frame.GetLineEntry()
- prettified_frames.append({
- 'function': symbol.GetName(),
- 'file': str(line_entry.GetFileSpec()) if line_entry else None,
- 'line': line_entry.GetLine() if line_entry else -1
- })
+ prettified_frames.append(
+ {
+ "function": symbol.GetName(),
+ "file": str(line_entry.GetFileSpec()) if line_entry else None,
+ "line": line_entry.GetLine() if line_entry else -1,
+ }
+ )
# Skip art frames
while True:
art_stack_visitor = frame.EvaluateExpression(
- """struct GetStackVisitor : public StackVisitor { GetStackVisitor(int depth_) : StackVisitor(Thread::Current(), NULL), depth(depth_) {} bool VisitFrame() { if (cur_depth_ == depth) { return false; } else { return true; } } int depth; }; GetStackVisitor visitor(""" +
- str(art_frame_index) +
- """); visitor.WalkStack(true); visitor""")
+ """struct GetStackVisitor : public StackVisitor { GetStackVisitor(int depth_) : StackVisitor(Thread::Current(), NULL), depth(depth_) {} bool VisitFrame() { if (cur_depth_ == depth) { return false; } else { return true; } } int depth; }; GetStackVisitor visitor("""
+ + str(art_frame_index)
+ + """); visitor.WalkStack(true); visitor"""
+ )
art_method = frame.EvaluateExpression(
- art_stack_visitor.GetName() + """.GetMethod()""")
+ art_stack_visitor.GetName() + """.GetMethod()"""
+ )
if art_method.GetValueAsUnsigned() != 0:
art_method_name = frame.EvaluateExpression(
- """art::PrettyMethod(""" + art_method.GetName() + """, true)""")
+ """art::PrettyMethod(""" + art_method.GetName() + """, true)"""
+ )
art_method_name_data = frame.EvaluateExpression(
- art_method_name.GetName() + """.c_str()""").GetValueAsUnsigned()
+ art_method_name.GetName() + """.c_str()"""
+ ).GetValueAsUnsigned()
art_method_name_size = frame.EvaluateExpression(
- art_method_name.GetName() + """.length()""").GetValueAsUnsigned()
+ art_method_name.GetName() + """.length()"""
+ ).GetValueAsUnsigned()
error = lldb.SBError()
art_method_name = process.ReadCStringFromMemory(
- art_method_name_data, art_method_name_size + 1, error)
+ art_method_name_data, art_method_name_size + 1, error
+ )
if not error.Success:
- print('Failed to read method name')
+ print("Failed to read method name")
sys.exit(1)
if art_method_name != symbol.GetName():
- print('Function names in native symbol and art runtime stack do not match: ', symbol.GetName(), ' != ', art_method_name)
+ print(
+ "Function names in native symbol and art runtime stack do not match: ",
+ symbol.GetName(),
+ " != ",
+ art_method_name,
+ )
art_frame_index = art_frame_index + 1
break
art_frame_index = art_frame_index + 1
@@ -68,53 +82,69 @@ def host_art_bt(debugger, command, result, internal_dict):
if lldb_frame_index < thread.GetNumFrames():
frame = thread.GetFrameAtIndex(lldb_frame_index)
if frame.GetModule() and re.match(
- r'JIT\(.*?\)', frame.GetModule().GetFileSpec().GetFilename()):
+ r"JIT\(.*?\)", frame.GetModule().GetFileSpec().GetFilename()
+ ):
# Another compile Java frame
# Don't skip; leave it to the next iteration
continue
- elif frame.GetSymbol() and (frame.GetSymbol().GetName() == 'art_quick_invoke_stub' or frame.GetSymbol().GetName() == 'art_quick_invoke_static_stub'):
+ elif frame.GetSymbol() and (
+ frame.GetSymbol().GetName() == "art_quick_invoke_stub"
+ or frame.GetSymbol().GetName() == "art_quick_invoke_static_stub"
+ ):
# art_quick_invoke_stub / art_quick_invoke_static_stub
# Skip until we get past the next ArtMethod::Invoke()
while True:
lldb_frame_index = lldb_frame_index + 1
if lldb_frame_index >= thread.GetNumFrames():
- print('ArtMethod::Invoke not found below art_quick_invoke_stub/art_quick_invoke_static_stub')
+ print(
+ "ArtMethod::Invoke not found below art_quick_invoke_stub/art_quick_invoke_static_stub"
+ )
sys.exit(1)
frame = thread.GetFrameAtIndex(lldb_frame_index)
- if frame.GetSymbol() and frame.GetSymbol().GetName(
- ) == 'art::mirror::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)':
+ if (
+ frame.GetSymbol()
+ and frame.GetSymbol().GetName()
+ == "art::mirror::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)"
+ ):
lldb_frame_index = lldb_frame_index + 1
break
else:
- print('Invalid frame below compiled Java frame: ', frame)
- elif frame.GetSymbol() and frame.GetSymbol().GetName() == 'art_quick_generic_jni_trampoline':
+ print("Invalid frame below compiled Java frame: ", frame)
+ elif (
+ frame.GetSymbol()
+ and frame.GetSymbol().GetName() == "art_quick_generic_jni_trampoline"
+ ):
# Interpreted JNI frame for x86_64
# Skip art frames
while True:
art_stack_visitor = frame.EvaluateExpression(
- """struct GetStackVisitor : public StackVisitor { GetStackVisitor(int depth_) : StackVisitor(Thread::Current(), NULL), depth(depth_) {} bool VisitFrame() { if (cur_depth_ == depth) { return false; } else { return true; } } int depth; }; GetStackVisitor visitor(""" +
- str(art_frame_index) +
- """); visitor.WalkStack(true); visitor""")
+ """struct GetStackVisitor : public StackVisitor { GetStackVisitor(int depth_) : StackVisitor(Thread::Current(), NULL), depth(depth_) {} bool VisitFrame() { if (cur_depth_ == depth) { return false; } else { return true; } } int depth; }; GetStackVisitor visitor("""
+ + str(art_frame_index)
+ + """); visitor.WalkStack(true); visitor"""
+ )
art_method = frame.EvaluateExpression(
- art_stack_visitor.GetName() + """.GetMethod()""")
+ art_stack_visitor.GetName() + """.GetMethod()"""
+ )
if art_method.GetValueAsUnsigned() != 0:
# Get function/filename/lineno from ART runtime
art_method_name = frame.EvaluateExpression(
- """art::PrettyMethod(""" + art_method.GetName() + """, true)""")
+ """art::PrettyMethod(""" + art_method.GetName() + """, true)"""
+ )
art_method_name_data = frame.EvaluateExpression(
- art_method_name.GetName() + """.c_str()""").GetValueAsUnsigned()
+ art_method_name.GetName() + """.c_str()"""
+ ).GetValueAsUnsigned()
art_method_name_size = frame.EvaluateExpression(
- art_method_name.GetName() + """.length()""").GetValueAsUnsigned()
+ art_method_name.GetName() + """.length()"""
+ ).GetValueAsUnsigned()
error = lldb.SBError()
function = process.ReadCStringFromMemory(
- art_method_name_data, art_method_name_size + 1, error)
+ art_method_name_data, art_method_name_size + 1, error
+ )
- prettified_frames.append({
- 'function': function,
- 'file': None,
- 'line': -1
- })
+ prettified_frames.append(
+ {"function": function, "file": None, "line": -1}
+ )
art_frame_index = art_frame_index + 1
break
@@ -124,78 +154,98 @@ def host_art_bt(debugger, command, result, internal_dict):
lldb_frame_index = lldb_frame_index + 1
if lldb_frame_index < thread.GetNumFrames():
frame = thread.GetFrameAtIndex(lldb_frame_index)
- if frame.GetSymbol() and (frame.GetSymbol().GetName() ==
- 'art_quick_invoke_stub' or frame.GetSymbol().GetName() == 'art_quick_invoke_static_stub'):
+ if frame.GetSymbol() and (
+ frame.GetSymbol().GetName() == "art_quick_invoke_stub"
+ or frame.GetSymbol().GetName() == "art_quick_invoke_static_stub"
+ ):
# art_quick_invoke_stub / art_quick_invoke_static_stub
# Skip until we get past the next ArtMethod::Invoke()
while True:
lldb_frame_index = lldb_frame_index + 1
if lldb_frame_index >= thread.GetNumFrames():
- print('ArtMethod::Invoke not found below art_quick_invoke_stub/art_quick_invoke_static_stub')
+ print(
+ "ArtMethod::Invoke not found below art_quick_invoke_stub/art_quick_invoke_static_stub"
+ )
sys.exit(1)
frame = thread.GetFrameAtIndex(lldb_frame_index)
- if frame.GetSymbol() and frame.GetSymbol().GetName(
- ) == 'art::mirror::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)':
+ if (
+ frame.GetSymbol()
+ and frame.GetSymbol().GetName()
+ == "art::mirror::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)"
+ ):
lldb_frame_index = lldb_frame_index + 1
break
else:
- print('Invalid frame below compiled Java frame: ', frame)
- elif frame.GetSymbol() and re.search(r'art::interpreter::', frame.GetSymbol().GetName()):
+ print("Invalid frame below compiled Java frame: ", frame)
+ elif frame.GetSymbol() and re.search(
+ r"art::interpreter::", frame.GetSymbol().G...
<truncated>
</pre>
</details>
https://github.com/llvm/llvm-project/pull/66053
More information about the lldb-commits
mailing list