]> granicus.if.org Git - llvm/commit
[DebugInfo] Fix /usr/lib/debug llvm-symbolizer lookup with relative paths
authorJordan Rupprecht <rupprecht@google.com>
Mon, 11 Feb 2019 18:05:48 +0000 (18:05 +0000)
committerJordan Rupprecht <rupprecht@google.com>
Mon, 11 Feb 2019 18:05:48 +0000 (18:05 +0000)
commitd3d623b47b69fd06656c2ae6c65e7f45b36759ad
treeae284076c52244652a3f043f12b0674b9101b9c0
parentb2b9806fed69015f45bb5cecd5d5aba361a954c8
[DebugInfo] Fix /usr/lib/debug llvm-symbolizer lookup with relative paths

Summary:
rL189250 added a realpath call, and rL352916 because realpath breaks assumptions with some build systems. However, the /usr/lib/debug case has been clarified, falling back to /usr/lib/debug is currently broken if the obj passed in is a relative path. Adding a call to use absolute paths when falling back to /usr/lib/debug fixes that while still not making any realpath assumptions.

This also adds a --fallback-debug-path command line flag for testing (since we probably can't write to /usr/lib/debug from buildbot environments), but was also verified manually:

```
$ rm -f path/to/dwarfdump-test.elf-x86-64
$ strace llvm-symbolizer --obj=relative/path/to/dwarfdump-test.elf-x86-64.debuglink 0x40113f |& grep dwarfdump
```

Lookups went to relative/path/to/dwarfdump-test.elf-x86-64, relative/path/to/.debug/dwarfdump-test.elf-x86-64, and then finally /usr/lib/debug/absolute/path/to/dwarfdump-test.elf-x86-64.

Reviewers: dblaikie, samsonov

Reviewed By: dblaikie

Subscribers: krytarowski, aprantl, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D57916

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353730 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/DebugInfo/Symbolize/Symbolize.h
lib/DebugInfo/Symbolize/Symbolize.cpp
test/DebugInfo/symbolize-gnu-debuglink-fallback.test [new file with mode: 0644]
tools/llvm-symbolizer/llvm-symbolizer.cpp