[PATCH] D85024: [llvm-objdump] Implement --prefix option
Vinicius Tinti via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sat Aug 1 12:27:27 PDT 2020
tinti updated this revision to Diff 282411.
tinti added a comment.
Make old test unsupported for Windows.
Add new test for Windows.
Reword --prefix help text.
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-windows.test
llvm/test/tools/llvm-objdump/X86/source-interleave-absolute-paths.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,11 @@
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 --source"),
+ cl::cat(ObjdumpCat));
+
enum DebugVarsFormat {
DVDisabled,
DVUnicode,
@@ -1026,6 +1031,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.test
===================================================================
--- /dev/null
+++ llvm/test/tools/llvm-objdump/X86/source-interleave-absolute-paths.test
@@ -0,0 +1,17 @@
+; Test --prefix option.
+
+; UNSUPPORTED: system-windows
+
+; 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
Index: llvm/test/tools/llvm-objdump/X86/source-interleave-absolute-paths-windows.test
===================================================================
--- /dev/null
+++ llvm/test/tools/llvm-objdump/X86/source-interleave-absolute-paths-windows.test
@@ -0,0 +1,17 @@
+; Test --prefix options on Windows.
+
+; REQUIRES: system-windows
+
+; 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.282411.patch
Type: text/x-patch
Size: 3473 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200801/66ec14b2/attachment.bin>
More information about the llvm-commits
mailing list