From 401df580641bd6be73d37a0dbb65e7348263fd8a Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Mon, 5 Feb 2018 10:50:38 +0000 Subject: Resolve binary symlinks before finding its separate .debug file I have found LLDB cannot find separate debug info of Fedora /usr/bin/gdb. It is because: lrwxrwxrwx 1 root root 14 Jan 25 20:41 /usr/bin/gdb -> ../libexec/gdb* -rwxr-xr-x 1 root root 10180296 Jan 25 20:41 /usr/libexec/gdb* ls: cannot access '/usr/lib/debug/usr/bin/gdb-8.0.1-35.fc27.x86_64.debug': No such file or directory -r--r--r-- 1 root root 29200464 Jan 25 20:41 /usr/lib/debug/usr/libexec/gdb-8.0.1-35.fc27.x86_64.debug FYI that -8.0.1-35.fc27.x86_64.debug may look confusing, it was always just .debug before. Why is /usr/bin/gdb a symlink is offtopic for this bugreport, Fedora has it so for some reasons. It is always safest to look at the .debug file only after resolving all symlinks on the binary file. Differential revision: https://reviews.llvm.org/D42853 llvm-svn: 324224 --- .../lldbsuite/test/linux/sepdebugsymlink/Makefile | 20 ++++++++++++++++++++ .../TestTargetSymbolsSepDebugSymlink.py | 22 ++++++++++++++++++++++ .../lldbsuite/test/linux/sepdebugsymlink/main.c | 3 +++ 3 files changed, 45 insertions(+) create mode 100644 lldb/packages/Python/lldbsuite/test/linux/sepdebugsymlink/Makefile create mode 100644 lldb/packages/Python/lldbsuite/test/linux/sepdebugsymlink/TestTargetSymbolsSepDebugSymlink.py create mode 100644 lldb/packages/Python/lldbsuite/test/linux/sepdebugsymlink/main.c (limited to 'lldb/packages/Python/lldbsuite/test/linux') diff --git a/lldb/packages/Python/lldbsuite/test/linux/sepdebugsymlink/Makefile b/lldb/packages/Python/lldbsuite/test/linux/sepdebugsymlink/Makefile new file mode 100644 index 00000000000..3fd14a74bf3 --- /dev/null +++ b/lldb/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 ../$