[Lldb-commits] [PATCH] D42853: Resolve binary symlinks before finding its separate .debug file
Jan Kratochvil via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Mon Feb 5 02:52:34 PST 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL324224: Resolve binary symlinks before finding its separate .debug file (authored by jankratochvil, committed by ).
Herald added a subscriber: llvm-commits.
Changed prior to commit:
https://reviews.llvm.org/D42853?vs=132670&id=132798#toc
Repository:
rL LLVM
https://reviews.llvm.org/D42853
Files:
lldb/trunk/packages/Python/lldbsuite/test/linux/sepdebugsymlink/Makefile
lldb/trunk/packages/Python/lldbsuite/test/linux/sepdebugsymlink/TestTargetSymbolsSepDebugSymlink.py
lldb/trunk/packages/Python/lldbsuite/test/linux/sepdebugsymlink/main.c
lldb/trunk/source/Host/common/Symbols.cpp
Index: lldb/trunk/packages/Python/lldbsuite/test/linux/sepdebugsymlink/Makefile
===================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/linux/sepdebugsymlink/Makefile
+++ lldb/trunk/packages/Python/lldbsuite/test/linux/sepdebugsymlink/Makefile
@@ -0,0 +1,20 @@
+LEVEL = ../../make
+C_SOURCES := main.c
+
+all: dirsymlink
+
+dirreal: a.out
+ $(RM) -r $@
+ mkdir $@
+ $(OBJCOPY) --only-keep-debug $< $@/stripped.debug
+ $(OBJCOPY) --strip-all --add-gnu-debuglink=$@/stripped.debug $< $@/stripped.out
+
+dirsymlink: dirreal
+ $(RM) -r $@
+ mkdir $@
+ ln -s ../$</stripped.out $@/stripped.symlink
+
+clean::
+ $(RM) -r dirreal dirsymlink
+
+include $(LEVEL)/Makefile.rules
Index: lldb/trunk/packages/Python/lldbsuite/test/linux/sepdebugsymlink/TestTargetSymbolsSepDebugSymlink.py
===================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/linux/sepdebugsymlink/TestTargetSymbolsSepDebugSymlink.py
+++ lldb/trunk/packages/Python/lldbsuite/test/linux/sepdebugsymlink/TestTargetSymbolsSepDebugSymlink.py
@@ -0,0 +1,22 @@
+""" Testing separate debug info loading for base binary with a symlink. """
+import os
+import time
+import lldb
+import sys
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+
+class TestTargetSymbolsSepDebugSymlink(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ @no_debug_info_test # Prevent the genaration of the dwarf version of this test
+ @skipUnlessPlatform(['linux'])
+ @skipIf(hostoslist=["windows"])
+ def test_target_symbols_sepdebug_symlink_case(self):
+ self.build(clean=True)
+ exe = self.getBuildArtifact("dirsymlink/stripped.symlink")
+
+ lldbutil.run_to_name_breakpoint(self, "main", exe_name = exe)
Index: lldb/trunk/packages/Python/lldbsuite/test/linux/sepdebugsymlink/main.c
===================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/linux/sepdebugsymlink/main.c
+++ lldb/trunk/packages/Python/lldbsuite/test/linux/sepdebugsymlink/main.c
@@ -0,0 +1,3 @@
+int main() {
+ return 0;
+}
Index: lldb/trunk/source/Host/common/Symbols.cpp
===================================================================
--- lldb/trunk/source/Host/common/Symbols.cpp
+++ lldb/trunk/source/Host/common/Symbols.cpp
@@ -9,6 +9,7 @@
#include "lldb/Host/Symbols.h"
#include "lldb/Core/ModuleSpec.h"
+#include "lldb/Host/FileSystem.h"
#include "lldb/Symbol/ObjectFile.h"
#include "lldb/Target/Target.h"
#include "lldb/Utility/ArchSpec.h"
@@ -221,7 +222,11 @@
Target::GetDefaultDebugFileSearchPaths());
// Add module directory.
- const ConstString &file_dir = module_spec.GetFileSpec().GetDirectory();
+ FileSpec module_file_spec = module_spec.GetFileSpec();
+ // We keep the unresolved pathname if it fails.
+ FileSystem::ResolveSymbolicLink(module_file_spec, module_file_spec);
+
+ const ConstString &file_dir = module_file_spec.GetDirectory();
debug_file_search_paths.AppendIfUnique(
FileSpec(file_dir.AsCString("."), true));
@@ -276,7 +281,7 @@
FileSpec file_spec(filename, true);
if (llvm::sys::fs::equivalent(file_spec.GetPath(),
- module_spec.GetFileSpec().GetPath()))
+ module_file_spec.GetPath()))
continue;
if (file_spec.Exists()) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D42853.132798.patch
Type: text/x-patch
Size: 3508 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20180205/ef77bf0a/attachment-0001.bin>
More information about the lldb-commits
mailing list