[PATCH] D85024: [llvm-objdump] Implement --prefix option
Vinicius Tinti via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 31 18:55:06 PDT 2020
tinti updated this revision to Diff 282363.
tinti added a comment.
Expected to fix failed test case on Windows.
Use `source-interleave-x86_64.test` as base implementation for the test case.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D85024/new/
https://reviews.llvm.org/D85024
Files:
llvm/test/tools/llvm-objdump/X86/source-interleave-absolute-paths-with-prefix.test
llvm/tools/llvm-objdump/llvm-objdump.cpp
llvm/tools/llvm-objdump/llvm-objdump.h
Index: llvm/tools/llvm-objdump/llvm-objdump.h
===================================================================
--- llvm/tools/llvm-objdump/llvm-objdump.h
+++ llvm/tools/llvm-objdump/llvm-objdump.h
@@ -48,6 +48,7 @@
extern cl::opt<bool> SymbolTable;
extern cl::opt<std::string> TripleName;
extern cl::opt<bool> UnwindInfo;
+extern cl::opt<std::string> Prefix;
extern StringSet<> FoundSectionSet;
Index: llvm/tools/llvm-objdump/llvm-objdump.cpp
===================================================================
--- llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -348,6 +348,10 @@
cl::cat(ObjdumpCat));
static cl::alias WideShort("w", cl::Grouping, cl::aliasopt(Wide));
+cl::opt<std::string>
+ objdump::Prefix("prefix", cl::desc("Add PREFIX to absolute paths for -S"),
+ cl::cat(ObjdumpCat));
+
enum DebugVarsFormat {
DVDisabled,
DVUnicode,
@@ -1026,6 +1030,18 @@
}
}
+ // GNU's objdump compatible `--prefix`
+ if (!Prefix.empty()) {
+ if (llvm::sys::path::is_absolute(LineInfo.FileName)) {
+ llvm::SmallString<128> FilePath(
+ llvm::sys::path::root_path(LineInfo.FileName));
+ llvm::sys::path::append(
+ FilePath, Prefix, llvm::sys::path::relative_path(LineInfo.FileName));
+
+ LineInfo.FileName = std::string(FilePath);
+ }
+ }
+
if (PrintLines)
printLines(OS, LineInfo, Delimiter, LVP);
if (PrintSource)
Index: llvm/test/tools/llvm-objdump/X86/source-interleave-absolute-paths-with-prefix.test
===================================================================
--- /dev/null
+++ llvm/test/tools/llvm-objdump/X86/source-interleave-absolute-paths-with-prefix.test
@@ -0,0 +1,13 @@
+# RUN: sed -e "s,SRC_COMPDIR,%/p/Inputs,g" %p/Inputs/source-interleave.ll > %t.ll
+# RUN: llc -o %t.o -filetype=obj -mtriple=x86_64-pc-linux %t.ll
+; RUN: llvm-objdump --source %t.o 2>&1 | FileCheck %s
+
+; CHECK: 0000000000000000 <foo>:
+; CHECK-NEXT: ; int foo() {
+; CHECK-NEXT: 0: 55 pushq %rbp
+
+; RUN: llvm-objdump --prefix myprefix --source %t.o 2>&1 | FileCheck %s --check-prefix CHECK-PREFIX
+
+; CHECK-PREFIX: 0000000000000000 <foo>:
+; CHECK-PREFIX-NEXT: warning: '{{.*}}.o': failed to find source /myprefix{{.*}}/source-interleave-x86_64.c
+; CHECK-PREFIX-NEXT: 0: 55 pushq %rbp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D85024.282363.patch
Type: text/x-patch
Size: 2403 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200801/07a9cbb4/attachment.bin>
More information about the llvm-commits
mailing list