[Lldb-commits] [PATCH] D158583: Fix shared library loading when users define duplicate _r_debug structure.

David Spickett via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Wed Aug 23 01:51:25 PDT 2023

DavidSpickett added a comment.

I'm not familiar with this mechanism but just out of curiosity: `ld.so loads the main executable and any dependent shared libraries and wants to update the "_r_debug" structure, but it now finds "_r_debug" in the a.out program and updates the state in this other copy`

Is this some undefined behaviour or is there a good use case for this? From the program's point of view.

Comment at: lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DYLDRendezvous.cpp:260-266
+    // the dynamic loader. The problem happens as soon as the executable or
+    // shared library that exports another "_r_debug" is loaded by the dynamic
+    // loader due to the way symbols are found using the shared library search
+    // paths will mean that the new copy takes precedence over the one in the
+    // dynamic loader and the dynamic loader will be updating the other copy
+    // somewhere else that we won't find and that copy will have the
+    // eConsistent state.
Can we split this sentence just for readability? Bullet points of each step might be clearer.

Comment at: lldb/test/API/functionalities/dyld-multiple-rdebug/TestDyldWithMultupleRDebug.py:22
+    @no_debug_info_test
+    @skipIf(oslist=["linux"], archs=["arm"])
+    def test(self):
Any specific reason for this? Not that it really matters, it'll get plenty of testing elsewhere.

Comment at: lldb/test/API/functionalities/dyld-multiple-rdebug/TestDyldWithMultupleRDebug.py:28
+        exe = self.getBuildArtifact("a.out")
+        print(exe)
+        target = self.dbg.CreateTarget(exe)
Leftover debug print.

  rG LLVM Github Monorepo



More information about the lldb-commits mailing list