[PATCH] D135039: [llvm-objdump] --no-leading-addr: hide inline relocation offsets
Fangrui Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sun Oct 2 11:31:13 PDT 2022
MaskRay created this revision.
MaskRay added reviewers: jhenderson, nickdesaulniers.
Herald added a subscriber: StephenFan.
Herald added a project: All.
MaskRay requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
It seems to make sense to omit offsets when --no-leading-addr is specified. The output is now closer
to objdump -dr --no-addresses (non-wide output).
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D135039
Files:
llvm/docs/CommandGuide/llvm-objdump.rst
llvm/test/tools/llvm-objdump/X86/elf-disassemble-relocs-exec.test
llvm/tools/llvm-objdump/ObjdumpOpts.td
llvm/tools/llvm-objdump/llvm-objdump.cpp
Index: llvm/tools/llvm-objdump/llvm-objdump.cpp
===================================================================
--- llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -458,13 +458,16 @@
static void printRelocation(formatted_raw_ostream &OS, StringRef FileName,
const RelocationRef &Rel, uint64_t Address,
bool Is64Bits) {
- StringRef Fmt = Is64Bits ? "\t\t%016" PRIx64 ": " : "\t\t\t%08" PRIx64 ": ";
+ StringRef Fmt = Is64Bits ? "%016" PRIx64 ": " : "%08" PRIx64 ": ";
SmallString<16> Name;
SmallString<32> Val;
Rel.getTypeName(Name);
if (Error E = getRelocationValueString(Rel, Val))
reportError(std::move(E), FileName);
- OS << format(Fmt.data(), Address) << Name << "\t" << Val;
+ OS << (Is64Bits || !LeadingAddr ? "\t\t" : "\t\t\t");
+ if (LeadingAddr)
+ OS << format(Fmt.data(), Address);
+ OS << Name << "\t" << Val;
}
static void AlignToInstStartColumn(size_t Start, const MCSubtargetInfo &STI,
Index: llvm/tools/llvm-objdump/ObjdumpOpts.td
===================================================================
--- llvm/tools/llvm-objdump/ObjdumpOpts.td
+++ llvm/tools/llvm-objdump/ObjdumpOpts.td
@@ -118,7 +118,7 @@
"do not print the instruction bytes.">;
def no_leading_addr : Flag<["--"], "no-leading-addr">,
- HelpText<"When disassembling, do not print leading addresses">;
+ HelpText<"When disassembling, do not print leading addresses for instructions and inline relocations">;
def raw_clang_ast : Flag<["--"], "raw-clang-ast">,
HelpText<"Dump the raw binary contents of the clang AST section">;
Index: llvm/test/tools/llvm-objdump/X86/elf-disassemble-relocs-exec.test
===================================================================
--- llvm/test/tools/llvm-objdump/X86/elf-disassemble-relocs-exec.test
+++ llvm/test/tools/llvm-objdump/X86/elf-disassemble-relocs-exec.test
@@ -1,18 +1,31 @@
## Check that 'llvm-objdump -dr' correctly prints relocations in executables.
# RUN: yaml2obj --docnum=1 %s -o %t
-# RUN: llvm-objdump -dr %t | FileCheck %s
+# RUN: llvm-objdump -dr %t | FileCheck %s --match-full-lines --strict-whitespace
+# RUN: llvm-objdump -dr --no-leading-addr %t | FileCheck %s --check-prefix=NOADDR --match-full-lines --strict-whitespace
-# CHECK: 400000: 90 nop
-# CHECK-NEXT: 400001: bf 10 00 40 00 movl $4194320, %edi
-# CHECK-NEXT: 0000000000400002: R_X86_64_32 .rodata
-# CHECK-NEXT: 400006: e8 fc fe ff ff callq 0x3fff07
-# CHECK-NEXT: 0000000000400007: R_X86_64_PLT32 puts-0x4
-# CHECK-NEXT: 40000b: 90 nop
+# RUN: yaml2obj -DBITS=32 %s -o %t.32
+# RUN: llvm-objdump -dr --no-leading-addr %t | FileCheck %s --check-prefix=NOADDR --match-full-lines --strict-whitespace
+
+# CHECK:0000000000400000 <.text>:
+# CHECK-NEXT: 400000: 90 nop
+# CHECK-NEXT: 400001: bf 10 00 40 00 movl $4194320, %edi # imm = 0x400010
+# CHECK-NEXT: 0000000000400002: R_X86_64_32 .rodata
+# CHECK-NEXT: 400006: e8 fc fe ff ff callq 0x3fff07 <puts+0x3fff07>
+# CHECK-NEXT: 0000000000400007: R_X86_64_PLT32 puts-0x4
+# CHECK-NEXT: 40000b: 90 nop
+
+# NOADDR:<.text>:
+# NOADDR-NEXT: 90 nop
+# NOADDR-NEXT: bf 10 00 40 00 movl $4194320, %edi # imm = 0x400010
+# NOADDR-NEXT: R_X86_64_32 .rodata
+# NOADDR-NEXT: e8 fc fe ff ff callq 0x3fff07 <puts+0x3fff07>
+# NOADDR-NEXT: R_X86_64_PLT32 puts-0x4
+# NOADDR-NEXT: 90 nop
--- !ELF
FileHeader:
- Class: ELFCLASS64
+ Class: ELFCLASS[[BITS=64]]
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_X86_64
Index: llvm/docs/CommandGuide/llvm-objdump.rst
===================================================================
--- llvm/docs/CommandGuide/llvm-objdump.rst
+++ llvm/docs/CommandGuide/llvm-objdump.rst
@@ -173,7 +173,8 @@
.. option:: --no-leading-addr
- When disassembling, do not print leading addresses.
+ When disassembling, do not print leading addresses for instructions and inline
+ relocations.
.. option:: --no-print-imm-hex
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D135039.464568.patch
Type: text/x-patch
Size: 4405 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221002/5ac64978/attachment.bin>
More information about the llvm-commits
mailing list