labath added inline comments.

================
Comment at: 
lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DYLDRendezvous.cpp:571-579
+
+  // ld.so saves empty file name for the executable file in the link map.
+  // When argv[0] is ld.so, we need to be update executable path.
+  if (file_path.empty()) {
+    MemoryRegionInfo region;
+    Status region_status =
+        m_process->GetMemoryRegionInfo(entry.dyn_addr, region);
----------------
Setting this here defeats all the `if (!SOEntryIsMainExecutable(entry))` checks 
in this code, for the "normal" case of running the executable directly. I'm 
guessing that will result in multiple modules being added for the main 
executable.

I think it would be better to remove this logic from here (it seems a bit too 
fancy for a function called `ReadSOEntryFromMemory`), and then teach the higher 
levels that they ought to treat "" specially (in some circumstances).


================
Comment at: 
lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp:345-350
+      if (NameMatches(m_process->GetTarget()
+                          .GetExecutableModulePointer()
+                          ->GetFileSpec()
+                          .GetFilename()
+                          .GetCString(),
+                      NameMatch::StartsWith, "ld-")) {
----------------
This check is unnecessary. A statically linked executable can still contain the 
dynamic linker structures (even though it does not have an elf interpreter), if 
it contains runtime calls to dlopen. In this case the main executable will 
contain _dl_debug_state et al. through the inclusion of libdl.a, and omitting 
this check should make that case work too.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D108061

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to