[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
Tue Mar 24 15:06:46 PDT 2020


saugustine created this revision.
Herald added subscribers: llvm-commits, rupprecht, MaskRay.
Herald added a reviewer: jhenderson.
Herald added a project: LLVM.

New "--relative" option to allow printing files relative to the compilation directory.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D76733

Files:
  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,12 @@
 static cl::alias ClBasenamesShort("s", cl::desc("Alias for -basenames"),
                                   cl::NotHidden, cl::aliasopt(ClBasenames));
 
+// -relativenames, -r
+static cl::opt<bool> ClRelativenames("relativenames", cl::init(false),
+                                     cl::desc("Strip the compilation directory from paths"));
+static cl::alias ClRelativenamesShort("r", cl::desc("Alias for -relativenames"),
+                                  cl::NotHidden, cl::aliasopt(ClRelativenames));
+
 // -demangle, -C, -no-demangle
 static cl::opt<bool>
 ClDemangle("demangle", cl::init(true), cl::desc("Demangle function names"));
@@ -310,8 +316,11 @@
   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,10 @@
+# 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
+# RUN: llvm-symbolizer 0 -r --obj=%t.o | FileCheck %s -DDIR=%p
+
+# CHECK: [[DIR]]{{\\|/}}relativenames.s:4


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D76733.252431.patch
Type: text/x-patch
Size: 2025 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200324/d1ea007c/attachment.bin>


More information about the llvm-commits mailing list