[Lldb-commits] [PATCH] D131110: [lldb] Make LLDB resilient against failing dyld introspection APIs

Adrian Prantl via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Wed Aug 3 13:23:35 PDT 2022


aprantl added a comment.

Nice.



================
Comment at: lldb/source/Host/macosx/objcxx/HostInfoMacOSX.mm:533
     if (dyld_process_create_for_current_task) {
-      auto dyld_process = dyld_process_create_for_current_task();
-      auto snapshot =
-          dyld_process_snapshot_create_for_process(dyld_process, nullptr);
-      auto shared_cache = dyld_process_snapshot_get_shared_cache(snapshot);
-      assert(dyld_process && snapshot && shared_cache);
-
-      dyld_shared_cache_for_each_image(shared_cache, ^(dyld_image_t image) {
-        __block uint64_t minVmAddr = UINT64_MAX;
-        __block uint64_t maxVmAddr = 0;
-        uuid_t uuidStore;
-        __block uuid_t *uuid = &uuidStore;
-
-        dyld_image_for_each_segment_info(image, ^(const char *segmentName,
-                                                  uint64_t vmAddr,
-                                                  uint64_t vmSize, int perm) {
-          minVmAddr = std::min(minVmAddr, vmAddr);
-          maxVmAddr = std::max(maxVmAddr, vmAddr + vmSize);
-          dyld_image_copy_uuid(image, uuid);
-        });
-        assert(minVmAddr != UINT_MAX);
-        assert(maxVmAddr != 0);
-        m_images[dyld_image_get_installname(image)] = SharedCacheImageInfo{
-            UUID::fromData(uuid, 16),
-            std::make_shared<DataBufferUnowned>((uint8_t *)minVmAddr,
-                                                maxVmAddr - minVmAddr)};
-      });
-      dyld_process_snapshot_dispose(snapshot);
-      return;
+      if (auto dyld_process = dyld_process_create_for_current_task()) {
+        if (auto snapshot = dyld_process_snapshot_create_for_process(
----------------
should this be `auto *`?


================
Comment at: lldb/source/Host/macosx/objcxx/HostInfoMacOSX.mm:534
+      if (auto dyld_process = dyld_process_create_for_current_task()) {
+        if (auto snapshot = dyld_process_snapshot_create_for_process(
+                dyld_process, nullptr)) {
----------------
```
auto *dyld_process = dyld_process_create_for_current_task());
if (!dyld_process)
  return;
```
?


================
Comment at: lldb/source/Host/macosx/objcxx/HostInfoMacOSX.mm:562
+                });
+            return;
+          }
----------------
is this redundant?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D131110/new/

https://reviews.llvm.org/D131110



More information about the lldb-commits mailing list