llvm-mirror/test/DebugInfo/symbolize-gnu-debuglink-fallback.test
Jordan Rupprecht f8f9fc6530 [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

llvm-svn: 353730
2019-02-11 18:05:48 +00:00

23 lines
822 B
Plaintext

# REQUIRES: shell
# Ensures that .debuglink can fallback to a separate location. This is normally
# /usr/lib/debug (or /usr/libdata/debug for NetBSD), but can be configured on
# the command line (mainly for testing).
RUN: rm -rf %t/foo %t/bar
RUN: mkdir -p %t/foo %t/bar/%t/foo
RUN: cp %p/Inputs/dwarfdump-test.elf-x86-64.debuglink %t/foo
RUN: llvm-symbolizer --obj=%t/foo/dwarfdump-test.elf-x86-64.debuglink 0x40113f \
RUN: --fallback-debug-path=%t/bar | FileCheck %s --check-prefix=UNKNOWN
UNKNOWN: main
UNKNOWN-NEXT: ??:0:0
RUN: cp %p/Inputs/dwarfdump-test.elf-x86-64 %t/bar/%t/foo
RUN: llvm-symbolizer --obj=%t/foo/dwarfdump-test.elf-x86-64.debuglink 0x40113f \
RUN: --fallback-debug-path=%t/bar | FileCheck %s --check-prefix=FOUND
FOUND: main
FOUND-NEXT: /tmp/dbginfo{{[/\\]}}dwarfdump-test.cc:16