[llvm-objdump] Create ObjectFile specific dumpers
authorFangrui Song <i@maskray.me>
Fri, 14 Jul 2023 19:44:41 +0000 (12:44 -0700)
committerFangrui Song <i@maskray.me>
Fri, 14 Jul 2023 19:44:41 +0000 (12:44 -0700)
commit0af663f80da0009f6fd879cf4d41743d4c88a2db
treeda617484204f75590d8fc2155d1959312f65c0b7
parent21ca892f698ac59e86ede6e4a2d4d747b0a36ae8
[llvm-objdump] Create ObjectFile specific dumpers

We pay the one-off boilerplate overhead to create `*Dumper` classes that derive
from objdump::Dumper a la llvm-readobj. This has two primary advantages.

First, a lot object file format specific code can be moved from
llvm-objdump.cpp to *Dump.cpp files. Refactor `printPrivateHeaders` as
an example.

Second, with the introduction of ELFDumper<ELFT>, we can simplify
a few dispatch functions in ELFDump.cpp.

In addition, the ObjectFile specific dumpers contains a ObjectFile specific
reference so that we can remove a lot of `cast<*ObjectFile>(Obj)`.

Reviewed By: mtrofin

Differential Revision: https://reviews.llvm.org/D155045
llvm/tools/llvm-objdump/COFFDump.cpp
llvm/tools/llvm-objdump/ELFDump.cpp
llvm/tools/llvm-objdump/ELFDump.h
llvm/tools/llvm-objdump/MachODump.cpp
llvm/tools/llvm-objdump/WasmDump.cpp
llvm/tools/llvm-objdump/XCOFFDump.cpp
llvm/tools/llvm-objdump/llvm-objdump.cpp
llvm/tools/llvm-objdump/llvm-objdump.h