mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
New symbolizer option to print files relative to the compilation directory.
Summary: New "--relative" option to allow printing files relative to the compilation directory. Reviewers: jhenderson Subscribers: MaskRay, rupprecht, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D76733
This commit is contained in:
parent
a25320d2b0
commit
be802cc337
@ -147,6 +147,27 @@ Example 4 - CODE and DATA prefixes:
|
||||
bar
|
||||
6295592 4
|
||||
|
||||
Example 5 - path-style options:
|
||||
|
||||
This example uses the same source file as above, but the source file's
|
||||
full path is /tmp/foo/test.cpp and is compiled as follows. The first case
|
||||
shows the default absolute path, the second --basenames, and the third
|
||||
shows --relativenames.
|
||||
|
||||
.. code-block:: console
|
||||
$ pwd
|
||||
/tmp
|
||||
$ clang -g foo/test.cpp -o test.elf
|
||||
$ llvm-symbolizer --obj=test.elf 0x4004a0
|
||||
main
|
||||
/tmp/foo/test.cpp:15:0
|
||||
$ llvm-symbolizer --obj=test.elf 0x4004a0 --basenames
|
||||
main
|
||||
test.cpp:15:0
|
||||
$ llvm-symbolizer --obj=test.elf 0x4004a0 --relativenames
|
||||
main
|
||||
foo/test.cpp:15:0
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
|
||||
@ -158,8 +179,15 @@ OPTIONS
|
||||
|
||||
.. option:: --basenames, -s
|
||||
|
||||
Strip directories when printing the file path.
|
||||
Print just the file's name without any directories, instead of the
|
||||
absolute path.
|
||||
|
||||
.. option:: --relativenames
|
||||
|
||||
Print the file's path relative to the compilation directory, instead
|
||||
of the absolute path. If the command-line to the compiler included
|
||||
the full path, this will be the same as the default.
|
||||
|
||||
.. _llvm-symbolizer-opt-C:
|
||||
|
||||
.. option:: --demangle, -C
|
||||
|
18
test/tools/llvm-symbolizer/relativenames.s
Normal file
18
test/tools/llvm-symbolizer/relativenames.s
Normal file
@ -0,0 +1,18 @@
|
||||
# REQUIRES: x86-registered-target
|
||||
|
||||
foo:
|
||||
nop
|
||||
|
||||
# RUN: llvm-mc --filetype=obj --triple=x86_64-pc-linux %s -o %t.o -g
|
||||
|
||||
# RUN: llvm-symbolizer 0 --relativenames --obj=%t.o \
|
||||
# RUN: | FileCheck %s -DDIR=%p --check-prefix=RELATIVENAMES
|
||||
|
||||
## Ensure last option wins.
|
||||
# RUN: llvm-symbolizer 0 --basenames --relativenames --obj=%t.o \
|
||||
# RUN: | FileCheck %s -DDIR=%p --check-prefix=RELATIVENAMES
|
||||
# RUN: llvm-symbolizer 0 --relativenames --basenames --obj=%t.o \
|
||||
# RUN: | FileCheck %s --check-prefix=BASENAMES
|
||||
|
||||
# RELATIVENAMES: [[DIR]]{{\\|/}}relativenames.s:4
|
||||
# BASENAMES: {{^}}relativenames.s:4
|
@ -77,6 +77,11 @@ static cl::opt<bool> ClBasenames("basenames", cl::init(false),
|
||||
static cl::alias ClBasenamesShort("s", cl::desc("Alias for -basenames"),
|
||||
cl::NotHidden, cl::aliasopt(ClBasenames));
|
||||
|
||||
// -relativenames
|
||||
static cl::opt<bool>
|
||||
ClRelativenames("relativenames", cl::init(false),
|
||||
cl::desc("Strip the compilation directory from paths"));
|
||||
|
||||
// -demangle, -C, -no-demangle
|
||||
static cl::opt<bool>
|
||||
ClDemangle("demangle", cl::init(true), cl::desc("Demangle function names"));
|
||||
@ -310,8 +315,12 @@ int main(int argc, char **argv) {
|
||||
Opts.DWPName = ClDwpName;
|
||||
Opts.DebugFileDirectory = ClDebugFileDirectory;
|
||||
Opts.PathStyle = DILineInfoSpecifier::FileLineInfoKind::AbsoluteFilePath;
|
||||
if (ClBasenames)
|
||||
// If both --basenames and --relativenames are specified then pick the last
|
||||
// one.
|
||||
if (ClBasenames.getPosition() > ClRelativenames.getPosition())
|
||||
Opts.PathStyle = DILineInfoSpecifier::FileLineInfoKind::BaseNameOnly;
|
||||
else if (ClRelativenames)
|
||||
Opts.PathStyle = DILineInfoSpecifier::FileLineInfoKind::RelativeFilePath;
|
||||
|
||||
for (const auto &hint : ClDsymHint) {
|
||||
if (sys::path::extension(hint) == ".dSYM") {
|
||||
|
Loading…
Reference in New Issue
Block a user