[PATCH] D76733: New symbolizer option to print files relative to the compilation directory.
Sterling Augustine via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 26 14:42:13 PDT 2020
saugustine updated this revision to Diff 252980.
saugustine added a comment.
Add missing file.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D76733/new/
https://reviews.llvm.org/D76733
Files:
llvm/docs/CommandGuide/llvm-symbolizer.rst
llvm/test/tools/llvm-symbolizer/relativenames.s
llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp
Index: llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp
===================================================================
--- llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp
+++ llvm/tools/llvm-symbolizer/llvm-symbolizer.cpp
@@ -77,6 +77,11 @@
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 @@
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") {
Index: llvm/test/tools/llvm-symbolizer/relativenames.s
===================================================================
--- /dev/null
+++ llvm/test/tools/llvm-symbolizer/relativenames.s
@@ -0,0 +1,15 @@
+# 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 | FileCheck %s -DDIR=%p
+# Ensure last option wins.
+# RUN: llvm-symbolizer 0 --basenames --relativenames --obj=%t.o \
+# RUN: | FileCheck %s -DDIR=%p
+# RUN: llvm-symbolizer 0 --relativenames --basenames --obj=%t.o \
+# RUN: | FileCheck %s -DDIR=%p --check-prefix=BASENAMES
+
+# CHECK: [[DIR]]{{\\|/}}relativenames.s:4
+# BASENAMES: relativenames.s:4
Index: llvm/docs/CommandGuide/llvm-symbolizer.rst
===================================================================
--- llvm/docs/CommandGuide/llvm-symbolizer.rst
+++ llvm/docs/CommandGuide/llvm-symbolizer.rst
@@ -147,6 +147,28 @@
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 paths, 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 +180,15 @@
.. 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D76733.252980.patch
Type: text/x-patch
Size: 3441 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200326/3bddb59a/attachment.bin>
More information about the llvm-commits
mailing list