diff options
author | Jordan Rupprecht <rupprecht@google.com> | 2018-11-12 18:02:38 +0000 |
---|---|---|
committer | Jordan Rupprecht <rupprecht@google.com> | 2018-11-12 18:02:38 +0000 |
commit | dbf552c40f3916d1ec0deca11bc432b91b8ea17a (patch) | |
tree | d9a3e9c0c9bf599a74a0a83c8013fbabed5ec37f /llvm/tools/llvm-readobj/ELFDumper.cpp | |
parent | ec3c0854ecaf85d878342f252ab877b53cfeae68 (diff) | |
download | bcm5719-llvm-dbf552c40f3916d1ec0deca11bc432b91b8ea17a.tar.gz bcm5719-llvm-dbf552c40f3916d1ec0deca11bc432b91b8ea17a.zip |
[llvm-readelf] Make llvm-readelf more compatible with GNU readelf.
Summary:
This change adds a bunch of options that GNU readelf supports. There is one breaking change when invoked as `llvm-readobj`, and three breaking changes when invoked as `llvm-readelf`:
- Add --all (implies --file-header, --program-headers, etc.)
- [Breaking] -a is --all instead of --arm-attributes
- Add --file-header as an alias for --file-headers
- Replace --sections with --sections-headers, keeping --sections as an alias for it
- Add --relocs as an alias for --relocations
- Add --dynamic as an alias for --dynamic-table
- Add --segments as an alias for --program-headers
- Add --section-groups as an alias for --elf-section-groups
- Add --dyn-syms as an alias for --dyn-symbols
- Add --syms as an alias for --symbols
- Add --histogram as an alias for --elf-hash-histogram
- [Breaking] When invoked as `llvm-readelf`, -s is --symbols instead of --sections
- [Breaking] When invoked as `llvm-readelf`, -t is no longer an alias for --symbols
Reviewers: MaskRay, phosek, mcgrathr, jhenderson
Reviewed By: MaskRay, jhenderson
Subscribers: sbc100, aheejin, edd, jhenderson, silvas, echristo, compnerd, kristina, javed.absar, kristof.beyls, llvm-commits, Bigcheese
Differential Revision: https://reviews.llvm.org/D54124
llvm-svn: 346685
Diffstat (limited to 'llvm/tools/llvm-readobj/ELFDumper.cpp')
-rw-r--r-- | llvm/tools/llvm-readobj/ELFDumper.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp index c91d2c548bf..16a0f0d2e31 100644 --- a/llvm/tools/llvm-readobj/ELFDumper.cpp +++ b/llvm/tools/llvm-readobj/ELFDumper.cpp @@ -143,7 +143,7 @@ public: ELFDumper(const ELFFile<ELFT> *Obj, ScopedPrinter &Writer); void printFileHeaders() override; - void printSections() override; + void printSectionHeaders() override; void printRelocations() override; void printDynamicRelocations() override; void printSymbols() override; @@ -324,7 +324,7 @@ public: virtual void printFileHeaders(const ELFFile<ELFT> *Obj) = 0; virtual void printGroupSections(const ELFFile<ELFT> *Obj) = 0; virtual void printRelocations(const ELFFile<ELFT> *Obj) = 0; - virtual void printSections(const ELFFile<ELFT> *Obj) = 0; + virtual void printSectionHeaders(const ELFFile<ELFT> *Obj) = 0; virtual void printSymbols(const ELFFile<ELFT> *Obj) = 0; virtual void printDynamicSymbols(const ELFFile<ELFT> *Obj) = 0; virtual void printDynamicRelocations(const ELFFile<ELFT> *Obj) = 0; @@ -359,7 +359,7 @@ public: void printFileHeaders(const ELFO *Obj) override; void printGroupSections(const ELFFile<ELFT> *Obj) override; void printRelocations(const ELFO *Obj) override; - void printSections(const ELFO *Obj) override; + void printSectionHeaders(const ELFO *Obj) override; void printSymbols(const ELFO *Obj) override; void printDynamicSymbols(const ELFO *Obj) override; void printDynamicRelocations(const ELFO *Obj) override; @@ -452,7 +452,7 @@ public: void printGroupSections(const ELFFile<ELFT> *Obj) override; void printRelocations(const ELFO *Obj) override; void printRelocations(const Elf_Shdr *Sec, const ELFO *Obj); - void printSections(const ELFO *Obj) override; + void printSectionHeaders(const ELFO *Obj) override; void printSymbols(const ELFO *Obj) override; void printDynamicSymbols(const ELFO *Obj) override; void printDynamicRelocations(const ELFO *Obj) override; @@ -1592,9 +1592,8 @@ void ELFDumper<ELFT>::printFileHeaders() { ELFDumperStyle->printFileHeaders(Obj); } -template<class ELFT> -void ELFDumper<ELFT>::printSections() { - ELFDumperStyle->printSections(Obj); +template <class ELFT> void ELFDumper<ELFT>::printSectionHeaders() { + ELFDumperStyle->printSectionHeaders(Obj); } template<class ELFT> @@ -2920,7 +2919,8 @@ std::string getSectionTypeString(unsigned Arch, unsigned Type) { return ""; } -template <class ELFT> void GNUStyle<ELFT>::printSections(const ELFO *Obj) { +template <class ELFT> +void GNUStyle<ELFT>::printSectionHeaders(const ELFO *Obj) { size_t SectionIndex = 0; std::string Number, Type, Size, Address, Offset, Flags, Link, Info, EntrySize, Alignment; @@ -4213,7 +4213,8 @@ void LLVMStyle<ELFT>::printRelocation(const ELFO *Obj, Elf_Rela Rel, } } -template <class ELFT> void LLVMStyle<ELFT>::printSections(const ELFO *Obj) { +template <class ELFT> +void LLVMStyle<ELFT>::printSectionHeaders(const ELFO *Obj) { ListScope SectionsD(W, "Sections"); int SectionIndex = -1; |