[Lldb-commits] [PATCH] D77529: Prefer executable files from sysroot over files from local filesystem

Yuri Per via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Mon Apr 6 01:03:47 PDT 2020


yuri created this revision.
yuri added reviewers: labath, clayborg, EugeneBi.
yuri added a project: LLDB.
Herald added a subscriber: lldb-commits.

In D49685 <https://reviews.llvm.org/D49685> sysroot behaviour was partially fixed. But files from local filesystem with same path still has priority over files from sysroot.

This patch fixes it by removing fallback to local filesystem from RemoteAwarePlatform::GetModuleSpec(). It is not actually required because higher level code do such fallback itself. See, for example, resolver in Platform::GetSharedModule().


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D77529

Files:
  lldb/source/Target/RemoteAwarePlatform.cpp
  lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py
  lldb/test/API/functionalities/postmortem/elf-core/linux-x86_64-bin_sh.core


Index: lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py
===================================================================
--- lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py
+++ lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py
@@ -209,6 +209,33 @@
 
         self.dbg.DeleteTarget(target)
 
+    @skipIf(triple='^mips')
+    @skipIfLLVMTargetMissing("X86")
+    def test_x86_64_sysroot(self):
+        """Test that sysroot has more priority then local filesystem."""
+
+        # linux-x86_64-bin_sh.core is a copy of linux-x86_64.core with executable file path patched to /bin/sh:
+        # sed 's/\/home\/labath\/test\/a\.out/\/bin\/sh\c@\c@\c@\c@\c@\c@\c@\c@\c@\c@\c@\c@\c@\c@\c@\c@/g;s/a\.out/sh\c@\c@\c@/g' < linux-x86_64.core > linux-x86_64-bin_sh.core
+
+        # Copy linux-x86_64.out to tmp_sysroot/bin/sh
+        tmp_sysroot = os.path.join(self.getBuildDir(), "lldb_x86_64_mock_sysroot")
+        executable = os.path.join(tmp_sysroot, "bin", "sh")
+        lldbutil.mkdir_p(os.path.dirname(executable))
+        shutil.copyfile("linux-x86_64.out", executable)
+
+        # Set sysroot and load core
+        self.runCmd("platform select remote-linux --sysroot '%s'" % tmp_sysroot)
+        target = self.dbg.CreateTarget(None)
+        self.assertTrue(target, VALID_TARGET)
+        process = target.LoadCore("linux-x86_64-bin_sh.core")
+
+        # Check that we found executable from the sysroot
+        mod_path = str(target.GetModuleAtIndex(0).GetFileSpec())
+        self.assertEqual(mod_path, executable)
+        self.check_all(process, self._x86_64_pid, self._x86_64_regions, "sh")
+
+        self.dbg.DeleteTarget(target)
+
     @skipIf(triple='^mips')
     @skipIfLLVMTargetMissing("ARM")
     def test_arm_core(self):
Index: lldb/source/Target/RemoteAwarePlatform.cpp
===================================================================
--- lldb/source/Target/RemoteAwarePlatform.cpp
+++ lldb/source/Target/RemoteAwarePlatform.cpp
@@ -21,7 +21,7 @@
     return m_remote_platform_sp->GetModuleSpec(module_file_spec, arch,
                                                module_spec);
 
-  return Platform::GetModuleSpec(module_file_spec, arch, module_spec);
+  return false;
 }
 
 Status RemoteAwarePlatform::RunShellCommand(


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D77529.255242.patch
Type: text/x-patch
Size: 2307 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20200406/398d6df4/attachment.bin>


More information about the lldb-commits mailing list