mib updated this revision to Diff 524521.
mib added a comment.
More refactoring
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D151045/new/
https://reviews.llvm.org/D151045
Files:
lldb/examples/python/crashlog.py
lldb/examples/python/scripted_process/crashlog_scripted_process.py
lldb/examples/python/symbolication.py
Index: lldb/examples/python/symbolication.py
===================================================================
--- lldb/examples/python/symbolication.py
+++ lldb/examples/python/symbolication.py
@@ -368,7 +368,7 @@
else:
return 'error: no section infos'
- def add_module(self, target):
+ def add_module(self, target, obj_dir=None):
'''Add the Image described in this object to "target" and load the sections if "load" is True.'''
if target:
# Try and find using UUID only first so that paths need not match
@@ -384,7 +384,7 @@
resolved_path, None, uuid_str, self.symfile)
if not self.module and self.section_infos:
name = os.path.basename(self.path)
- with tempfile.NamedTemporaryFile(suffix='.' + name) as tf:
+ if obj_dir and os.path.isdir(obj_dir):
data = {
'triple': target.triple,
'uuid': uuid_str,
@@ -398,9 +398,10 @@
'size': section.end_addr - section.start_addr
})
data['symbols'] = list(self.symbols.values())
- with open(tf.name, 'w') as f:
+ obj_file = os.path.join(obj_dir, name)
+ with open(obj_file, "w") as f:
f.write(json.dumps(data, indent=4))
- self.module = target.AddModule(tf.name, None, uuid_str)
+ self.module = target.AddModule(obj_file, None, uuid_str)
if self.module:
# If we were able to add the module with inlined
# symbols, we should mark it as available so load_module
Index: lldb/examples/python/scripted_process/crashlog_scripted_process.py
===================================================================
--- lldb/examples/python/scripted_process/crashlog_scripted_process.py
+++ lldb/examples/python/scripted_process/crashlog_scripted_process.py
@@ -1,4 +1,4 @@
-import os,json,struct,signal,uuid
+import os, json, struct, signal, uuid, tempfile
from typing import Any, Dict
@@ -38,16 +38,17 @@
for image in self.crashlog.find_images_with_identifier(ident):
image.resolve = True
- for image in self.crashlog.images:
- if image not in self.loaded_images:
- if image.uuid == uuid.UUID(int=0):
- continue
- err = image.add_module(self.target)
- if err:
- # Append to SBCommandReturnObject
- print(err)
- else:
- self.loaded_images.append(image)
+ with tempfile.TemporaryDirectory() as obj_dir:
+ for image in self.crashlog.images:
+ if image not in self.loaded_images:
+ if image.uuid == uuid.UUID(int=0):
+ continue
+ err = image.add_module(self.target, obj_dir)
+ if err:
+ # Append to SBCommandReturnObject
+ print(err)
+ else:
+ self.loaded_images.append(image)
for thread in self.crashlog.threads:
if hasattr(thread, 'app_specific_backtrace') and thread.app_specific_backtrace:
Index: lldb/examples/python/crashlog.py
===================================================================
--- lldb/examples/python/crashlog.py
+++ lldb/examples/python/crashlog.py
@@ -40,6 +40,7 @@
import string
import subprocess
import sys
+import tempfile
import threading
import time
import uuid
@@ -1154,12 +1155,17 @@
futures = []
loaded_images = []
with concurrent.futures.ThreadPoolExecutor() as executor:
- def add_module(image, target):
- return image, image.add_module(target)
+ with tempfile.TemporaryDirectory() as obj_dir:
- for image in crash_log.images:
- futures.append(executor.submit(add_module, image=image, target=target))
+ def add_module(image, target, obj_dir):
+ return image, image.add_module(target, obj_dir)
+ for image in crash_log.images:
+ futures.append(
+ executor.submit(
+ add_module, image=image, target=target, obj_dir=obj_dir
+ )
+ )
for future in concurrent.futures.as_completed(futures):
image, err = future.result()
if err:
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits