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
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to