[llvm] 33b3c86 - Revert "[llvm-readobj][MachO] Add option to sort the symbol table before dumping (MachO only, for now)."
Vy Nguyen via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 31 06:33:44 PDT 2022
Author: Vy Nguyen
Date: 2022-03-31T09:33:32-04:00
New Revision: 33b3c86afab06ad61d46456c85c0b565cfff8287
URL: https://github.com/llvm/llvm-project/commit/33b3c86afab06ad61d46456c85c0b565cfff8287
DIFF: https://github.com/llvm/llvm-project/commit/33b3c86afab06ad61d46456c85c0b565cfff8287.diff
LOG: Revert "[llvm-readobj][MachO] Add option to sort the symbol table before dumping (MachO only, for now)."
This reverts commit ea9cf2dc96c765773ee574a9189d529175a57751.
Broke LLDB - reverting to investigage
Added:
Modified:
llvm/docs/CommandGuide/llvm-readobj.rst
llvm/tools/llvm-readobj/MachODumper.cpp
llvm/tools/llvm-readobj/ObjDumper.h
llvm/tools/llvm-readobj/Opts.td
llvm/tools/llvm-readobj/llvm-readobj.cpp
llvm/tools/llvm-readobj/llvm-readobj.h
Removed:
llvm/test/tools/llvm-readobj/MachO/stabs-sorted.yaml
llvm/test/tools/llvm-readobj/sort-symbols.test
################################################################################
diff --git a/llvm/docs/CommandGuide/llvm-readobj.rst b/llvm/docs/CommandGuide/llvm-readobj.rst
index b33e722403468..ef2ea3eb0e587 100644
--- a/llvm/docs/CommandGuide/llvm-readobj.rst
+++ b/llvm/docs/CommandGuide/llvm-readobj.rst
@@ -106,10 +106,6 @@ file formats.
When used with :option:`--sections`, display symbols for each section shown.
This option has no effect for GNU style output.
-.. option:: --sort-symbols=<sort_key[,sort_key]>
-
- Specify the keys to sort symbols before displaying symtab.
- Valid values for sort_key are ``name`` and ``type``.
.. option:: --stackmap
Display contents of the stackmap section.
diff --git a/llvm/test/tools/llvm-readobj/MachO/stabs-sorted.yaml b/llvm/test/tools/llvm-readobj/MachO/stabs-sorted.yaml
deleted file mode 100644
index 496fadb1681fc..0000000000000
--- a/llvm/test/tools/llvm-readobj/MachO/stabs-sorted.yaml
+++ /dev/null
@@ -1,230 +0,0 @@
-## Verify that llvm-readobj can dump files with stabs symbols in a sorted order.
-
-# RUN: yaml2obj --docnum=1 %s -o %t
-
-# RUN: not llvm-readobj --syms --sort-symbols=foo %t 2>&1 | FileCheck %s --check-prefix ERR-KEY
-# RUN: not llvm-readobj --syms --sort-symbols=,, %t 2>&1 | FileCheck %s --check-prefix ERR-KEY-EMPT
-
-# RUN: llvm-readobj --syms --sort-symbols=type,name %t | FileCheck %s --check-prefix TYPE-NAME
-# RUN: llvm-readobj --syms --sort-symbols=name,type %t | FileCheck %s --check-prefix NAME-TYPE
-# RUN: llvm-readobj --syms --sort-symbols=type %t | FileCheck %s --check-prefix TYPE-ONLY
-
-# TYPE-NAME: Name: _a (19)
-# TYPE-NAME-NEXT: Type: Section (0xE)
-# TYPE-NAME: Name: _d (10)
-# TYPE-NAME-NEXT: Type: Section (0xE)
-# TYPE-NAME: Name: _f (7)
-# TYPE-NAME-NEXT: Type: SymDebugTable (0x2E)
-# TYPE-NAME: Name: _z (1)
-# TYPE-NAME-NEXT: Type: SymDebugTable (0x2E)
-# TYPE-NAME: Name: _c (13)
-# TYPE-NAME-NEXT: Type: SymDebugTable (0x64)
-# TYPE-NAME: Name: _g (4)
-# TYPE-NAME-NEXT: Type: SymDebugTable (0x64)
-# TYPE-NAME: Name: _b (16)
-# TYPE-NAME-NEXT: Type: SymDebugTable (0x66)
-# TYPE-NAME: Name: _d2 (22)
-# TYPE-NAME-NEXT: Type: SymDebugTable (0x66)
-
-# NAME-TYPE: Name: _a (19)
-# NAME-TYPE-NEXT: Type: Section (0xE)
-# NAME-TYPE: Name: _b (16)
-# NAME-TYPE-NEXT: Type: SymDebugTable (0x66)
-# NAME-TYPE: Name: _c (13)
-# NAME-TYPE-NEXT: Type: SymDebugTable (0x64)
-# NAME-TYPE: Name: _d (10)
-# NAME-TYPE-NEXT: Type: Section (0xE)
-# NAME-TYPE: Name: _d2 (22)
-# NAME-TYPE-NEXT: Type: SymDebugTable (0x66)
-# NAME-TYPE: Name: _f (7)
-# NAME-TYPE-NEXT: Type: SymDebugTable (0x2E)
-# NAME-TYPE: Name: _g (4)
-# NAME-TYPE-NEXT: Type: SymDebugTable (0x64)
-# NAME-TYPE: Name: _z (1)
-# NAME-TYPE-NEXT: Type: SymDebugTable (0x2E)
-
-# TYPE-ONLY: Name: _d (10)
-# TYPE-ONLY-NEXT: Type: Section (0xE)
-# TYPE-ONLY: Name: _a (19)
-# TYPE-ONLY-NEXT: Type: Section (0xE)
-# TYPE-ONLY: Name: _f (7)
-# TYPE-ONLY-NEXT: Type: SymDebugTable (0x2E)
-# TYPE-ONLY: Name: _z (1)
-# TYPE-ONLY-NEXT: Type: SymDebugTable (0x2E)
-# TYPE-ONLY: Name: _g (4)
-# TYPE-ONLY-NEXT: Type: SymDebugTable (0x64)
-# TYPE-ONLY: Name: _c (13)
-# TYPE-ONLY-NEXT: Type: SymDebugTable (0x64)
-# TYPE-ONLY: Name: _d2 (22)
-# TYPE-ONLY-NEXT: Type: SymDebugTable (0x66)
-# TYPE-ONLY: Name: _b (16)
-# TYPE-ONLY-NEXT: Type: SymDebugTable (0x66)
-
---- !mach-o
-FileHeader:
- magic: 0xFEEDFACF
- cputype: 0x1000007
- cpusubtype: 0x3
- filetype: 0x1
- ncmds: 3
- sizeofcmds: 496
- flags: 0x2000
- reserved: 0x0
-LoadCommands:
- - cmd: LC_SEGMENT_64
- cmdsize: 392
- segname: ''
- vmaddr: 0
- vmsize: 32
- fileoff: 528
- filesize: 28
- maxprot: 7
- initprot: 7
- nsects: 4
- flags: 0
- Sections:
- - sectname: __text
- segname: __TEXT
- addr: 0x0
- size: 9
- offset: 0x210
- align: 0
- reloff: 0x230
- nreloc: 1
- flags: 0x80000000
- reserved1: 0x0
- reserved2: 0x0
- reserved3: 0x0
- content: '000000000000000000'
- relocations:
- - address: 0x0
- symbolnum: 7
- pcrel: false
- length: 3
- extern: true
- type: 0
- scattered: false
- value: 0
- - sectname: more_data
- segname: __DATA
- addr: 0x9
- size: 8
- offset: 0x219
- align: 0
- reloff: 0x0
- nreloc: 0
- flags: 0x0
- reserved1: 0x0
- reserved2: 0x0
- reserved3: 0x0
- content: 7B00000000000000
- - sectname: __data
- segname: __DATA
- addr: 0x11
- size: 11
- offset: 0x221
- align: 0
- reloff: 0x0
- nreloc: 0
- flags: 0x0
- reserved1: 0x0
- reserved2: 0x0
- reserved3: 0x0
- content: 7B00000000000000000000
- - sectname: __common
- segname: __DATA
- addr: 0x1C
- size: 4
- offset: 0x0
- align: 2
- reloff: 0x0
- nreloc: 0
- flags: 0x1
- reserved1: 0x0
- reserved2: 0x0
- reserved3: 0x0
- - cmd: LC_SYMTAB
- cmdsize: 24
- symoff: 568
- nsyms: 8
- stroff: 696
- strsize: 32
- - cmd: LC_DYSYMTAB
- cmdsize: 80
- ilocalsym: 0
- nlocalsym: 7
- iextdefsym: 7
- nextdefsym: 0
- iundefsym: 7
- nundefsym: 1
- tocoff: 0
- ntoc: 0
- modtaboff: 0
- nmodtab: 0
- extrefsymoff: 0
- nextrefsyms: 0
- indirectsymoff: 0
- nindirectsyms: 0
- extreloff: 0
- nextrel: 0
- locreloff: 0
- nlocrel: 0
-LinkEditData:
- NameList:
- - n_strx: 4
- n_type: 0x64
- n_sect: 1
- n_desc: 0
- n_value: 0
- - n_strx: 10
- n_type: 0xE
- n_sect: 1
- n_desc: 0
- n_value: 8
- - n_strx: 22
- n_type: 0x66
- n_sect: 1
- n_desc: 0
- n_value: 8
- - n_strx: 16
- n_type: 0x66
- n_sect: 2
- n_desc: 0
- n_value: 9
- - n_strx: 19
- n_type: 0xE
- n_sect: 3
- n_desc: 0
- n_value: 17
- - n_strx: 13
- n_type: 0x64
- n_sect: 4
- n_desc: 0
- n_value: 28
- - n_strx: 7
- n_type: 0x2E
- n_sect: 3
- n_desc: 0
- n_value: 25
- - n_strx: 1
- n_type: 0x2E
- n_sect: 0
- n_desc: 0
- n_value: 0
- StringTable:
- - ''
- - _z
- - _g
- - _f
- - _d
- - _c
- - _b
- - _a
- - _d2
- - ''
- - ''
- - ''
- - ''
- - ''
- - ''
-...
diff --git a/llvm/test/tools/llvm-readobj/sort-symbols.test b/llvm/test/tools/llvm-readobj/sort-symbols.test
deleted file mode 100644
index 0d01c9b5d85cb..0000000000000
--- a/llvm/test/tools/llvm-readobj/sort-symbols.test
+++ /dev/null
@@ -1,68 +0,0 @@
-## Test that we print a warning for ELF, WASM, and COFF but still dump the contents for all.
-
-# RUN: yaml2obj --docnum=1 %s -o %t_macho
-# RUN: yaml2obj --docnum=2 %s -o %t_coff
-# RUN: yaml2obj --docnum=3 %s -o %t_elf
-# RUN: yaml2obj --docnum=4 %s -o %t_wasm
-# RUN: yaml2obj --docnum=5 %s -o %t_xcoff
-
-# RUN: llvm-readobj --syms --sort-symbols=type,name \
-# RUN: %t_coff %t_elf %t_wasm %t_xcoff %t_macho 2>&1 | FileCheck %s \
-# RUN: -DMSG="--sort-symbols is not supported yet for this format"
-
-# CHECK: warning: '{{.+}}_coff': [[MSG]]
-# CHECK: Format: COFF-ARM
-# CHECK: warning: '{{.+}}_elf': [[MSG]]
-# CHECK: Format: elf64-unknown
-# CHECK: warning: '{{.+}}_wasm': [[MSG]]
-# CHECK: Format: WASM
-# CHECK: warning: '{{.+}}_xcoff': [[MSG]]
-# CHECK: Format: aixcoff-rs6000
-# CHECK-NOT: warning '{{.+}}_macho': [[MSG]]
-# CHECK: Format: Mach-O 64-bit x86-64
-
---- !mach-o
-FileHeader:
- magic: 0xFEEDFACF
- cputype: 0x1000007
- cpusubtype: 0x3
- filetype: 0x1
- ncmds: 0
- sizeofcmds: 0
- flags: 0x2000
- reserved: 0x0
-...
---- !COFF
-header:
- Machine: IMAGE_FILE_MACHINE_ARMNT
- Characteristics: [ ]
-sections:
-symbols:
---- !ELF
-FileHeader:
- Class: ELFCLASS64
- Data: ELFDATA2LSB
- Type: ET_EXEC
-Sections:
- - Name: .gnu.version
- Type: SHT_GNU_versym
-...
---- !WASM
-FileHeader:
- Version: 0x00000001
-Sections:
- - Type: DATA
- Segments:
- - SectionOffset: 6
- InitFlags: 0
- Offset:
- Opcode: GLOBAL_GET
- Index: 1
- Content: '64'
-...
---- !XCOFF
-FileHeader:
- MagicNumber: 0x01DF
- CreationTime: 1
- EntriesInSymbolTable: 1
-...
diff --git a/llvm/tools/llvm-readobj/MachODumper.cpp b/llvm/tools/llvm-readobj/MachODumper.cpp
index 5d474021cba82..599b0355917e9 100644
--- a/llvm/tools/llvm-readobj/MachODumper.cpp
+++ b/llvm/tools/llvm-readobj/MachODumper.cpp
@@ -13,7 +13,6 @@
#include "ObjDumper.h"
#include "StackMapPrinter.h"
#include "llvm-readobj.h"
-#include "llvm/ADT/Optional.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Object/MachO.h"
@@ -40,11 +39,6 @@ class MachODumper : public ObjDumper {
void printNeededLibraries() override;
- bool canCompareSymbols() const override { return true; }
- bool compareSymbolsByName(object::SymbolRef LHS,
- object::SymbolRef RHS) const override;
- bool compareSymbolsByType(object::SymbolRef LHS,
- object::SymbolRef RHS) const override;
// MachO-specific.
void printMachODataInCode() override;
void printMachOVersionMin() override;
@@ -57,12 +51,10 @@ class MachODumper : public ObjDumper {
template<class MachHeader>
void printFileHeaders(const MachHeader &Header);
- StringRef getSymbolName(const SymbolRef &Symbol) const;
- uint8_t getSymbolType(const SymbolRef &Symbol) const;
+ StringRef getSymbolName(const SymbolRef &Symbol);
- void printSymbols(Optional<SymbolComparator> SymComp) override;
- void printDynamicSymbols(Optional<SymbolComparator> SymComp) override;
- void printSymbol(const SymbolRef &Symbol, ScopedPrinter &W);
+ void printSymbols() override;
+ void printDynamicSymbols() override;
void printSymbol(const SymbolRef &Symbol);
void printRelocation(const RelocationRef &Reloc);
@@ -610,7 +602,7 @@ void MachODumper::printRelocation(const MachOObjectFile *Obj,
}
}
-StringRef MachODumper::getSymbolName(const SymbolRef &Symbol) const {
+StringRef MachODumper::getSymbolName(const SymbolRef &Symbol) {
Expected<StringRef> SymbolNameOrErr = Symbol.getName();
if (!SymbolNameOrErr) {
reportError(SymbolNameOrErr.takeError(), Obj->getFileName());
@@ -618,42 +610,19 @@ StringRef MachODumper::getSymbolName(const SymbolRef &Symbol) const {
return *SymbolNameOrErr;
}
-uint8_t MachODumper::getSymbolType(const SymbolRef &Symbol) const {
- return Obj->getSymbol64TableEntry(Symbol.getRawDataRefImpl()).n_type;
-}
-
-bool MachODumper::compareSymbolsByName(SymbolRef LHS, SymbolRef RHS) const {
- return getSymbolName(LHS).str().compare(getSymbolName(RHS).str()) < 0;
-}
-
-bool MachODumper::compareSymbolsByType(SymbolRef LHS, SymbolRef RHS) const {
- return getSymbolType(LHS) < getSymbolType(RHS);
-}
+void MachODumper::printSymbols() {
+ ListScope Group(W, "Symbols");
-void MachODumper::printSymbols(Optional<SymbolComparator> SymComp) {
- if (SymComp) {
- auto SymbolRange = Obj->symbols();
- std::vector<SymbolRef> SortedSymbols(SymbolRange.begin(),
- SymbolRange.end());
- llvm::stable_sort(SortedSymbols, *SymComp);
- for (SymbolRef Symbol : SortedSymbols)
- printSymbol(Symbol);
- } else {
- for (const SymbolRef &Symbol : Obj->symbols()) {
- printSymbol(Symbol);
- }
+ for (const SymbolRef &Symbol : Obj->symbols()) {
+ printSymbol(Symbol);
}
}
-void MachODumper::printDynamicSymbols(Optional<SymbolComparator> SymComp) {
+void MachODumper::printDynamicSymbols() {
ListScope Group(W, "DynamicSymbols");
}
void MachODumper::printSymbol(const SymbolRef &Symbol) {
- printSymbol(Symbol, W);
-}
-
-void MachODumper::printSymbol(const SymbolRef &Symbol, ScopedPrinter &W) {
StringRef SymbolName = getSymbolName(Symbol);
MachOSymbol MOSymbol;
diff --git a/llvm/tools/llvm-readobj/ObjDumper.h b/llvm/tools/llvm-readobj/ObjDumper.h
index 46750c099dbac..a09a243d381ec 100644
--- a/llvm/tools/llvm-readobj/ObjDumper.h
+++ b/llvm/tools/llvm-readobj/ObjDumper.h
@@ -12,10 +12,6 @@
#include <memory>
#include <system_error>
-#include "llvm/ADT/Optional.h"
-#include "llvm/ADT/STLFunctionalExtras.h"
-#include "llvm/ADT/SmallVector.h"
-#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Object/ObjectFile.h"
#include "llvm/Support/CommandLine.h"
@@ -29,7 +25,7 @@ class COFFImportFile;
class ObjectFile;
class XCOFFObjectFile;
class ELFObjectFileBase;
-} // namespace object
+}
namespace codeview {
class GlobalTypeTableBuilder;
class MergingTypeTableBuilder;
@@ -37,33 +33,6 @@ class MergingTypeTableBuilder;
class ScopedPrinter;
-// Comparator to compare symbols.
-// Usage: the caller registers predicates (i.e., how to compare the symbols) by
-// calling addPredicate(). The order in which predicates are registered is also
-// their priority.
-class SymbolComparator {
-public:
- using CompPredicate =
- function_ref<bool(object::SymbolRef, object::SymbolRef)>;
-
- // Each Obj format has a slightly
diff erent way of retrieving a symbol's info
- // So we defer the predicate's impl to each format.
- void addPredicate(CompPredicate Pred) { Predicates.push_back(Pred); }
-
- bool operator()(object::SymbolRef LHS, object::SymbolRef RHS) {
- for (CompPredicate Pred : Predicates) {
- if (Pred(LHS, RHS))
- return true;
- if (Pred(RHS, LHS))
- return false;
- }
- return false;
- }
-
-private:
- SmallVector<CompPredicate, 2> Predicates;
-};
-
class ObjDumper {
public:
ObjDumper(ScopedPrinter &Writer, StringRef ObjName);
@@ -78,14 +47,10 @@ class ObjDumper {
virtual void printSectionHeaders() = 0;
virtual void printRelocations() = 0;
virtual void printSymbols(bool PrintSymbols, bool PrintDynamicSymbols) {
- printSymbols(PrintSymbols, PrintDynamicSymbols, llvm::None);
- }
- virtual void printSymbols(bool PrintSymbols, bool PrintDynamicSymbols,
- llvm::Optional<SymbolComparator> SymComp) {
if (PrintSymbols)
- printSymbols(SymComp);
+ printSymbols();
if (PrintDynamicSymbols)
- printDynamicSymbols(SymComp);
+ printDynamicSymbols();
}
virtual void printProgramHeaders(bool PrintProgramHeaders,
cl::boolOrDefault PrintSectionMapping) {
@@ -97,17 +62,6 @@ class ObjDumper {
virtual void printUnwindInfo() = 0;
- // Symbol comparison functions.
- virtual bool canCompareSymbols() const { return false; }
- virtual bool compareSymbolsByName(object::SymbolRef LHS,
- object::SymbolRef RHS) const {
- return true;
- }
- virtual bool compareSymbolsByType(object::SymbolRef LHS,
- object::SymbolRef RHS) const {
- return true;
- }
-
// Only implemented for ELF at this time.
virtual void printDependentLibs() {}
virtual void printDynamicRelocations() { }
@@ -178,10 +132,8 @@ class ObjDumper {
ScopedPrinter &W;
private:
- virtual void printSymbols() { printSymbols(llvm::None); }
- virtual void printSymbols(llvm::Optional<SymbolComparator> Comp) {}
- virtual void printDynamicSymbols() { printDynamicSymbols(llvm::None); }
- virtual void printDynamicSymbols(llvm::Optional<SymbolComparator> Comp) {}
+ virtual void printSymbols() {}
+ virtual void printDynamicSymbols() {}
virtual void printProgramHeaders() {}
virtual void printSectionMapping() {}
diff --git a/llvm/tools/llvm-readobj/Opts.td b/llvm/tools/llvm-readobj/Opts.td
index 4687fc71245f8..528c7f64e2234 100644
--- a/llvm/tools/llvm-readobj/Opts.td
+++ b/llvm/tools/llvm-readobj/Opts.td
@@ -37,7 +37,6 @@ def section_mapping : FF<"section-mapping", "Display the section to segment mapp
def section_mapping_EQ_false : FF<"section-mapping=false", "Don't display the section to segment mapping">, Flags<[HelpHidden]>;
def section_relocations : FF<"section-relocations", "Display relocations for each section shown. This option has no effect for GNU style output">;
def section_symbols : FF<"section-symbols", "Display symbols for each section shown. This option has no effect for GNU style output">;
-defm sort_symbols : Eq<"sort-symbols", "Specify the keys to sort the symbols before displaying symtab">;
def stack_sizes : FF<"stack-sizes", "Display contents of all stack sizes sections. This option has no effect for GNU style output">;
def stackmap : FF<"stackmap", "Display contents of stackmap section">;
defm string_dump : Eq<"string-dump", "Display the specified section(s) as a list of strings">, MetaVarName<"<name or index>">;
diff --git a/llvm/tools/llvm-readobj/llvm-readobj.cpp b/llvm/tools/llvm-readobj/llvm-readobj.cpp
index e1ebbeb41f28b..543b0de82cdf6 100644
--- a/llvm/tools/llvm-readobj/llvm-readobj.cpp
+++ b/llvm/tools/llvm-readobj/llvm-readobj.cpp
@@ -21,7 +21,6 @@
#include "llvm-readobj.h"
#include "ObjDumper.h"
#include "WindowsResourceDumper.h"
-#include "llvm/ADT/Optional.h"
#include "llvm/DebugInfo/CodeView/GlobalTypeTableBuilder.h"
#include "llvm/DebugInfo/CodeView/MergingTypeTableBuilder.h"
#include "llvm/MC/TargetRegistry.h"
@@ -84,14 +83,6 @@ class ReadobjOptTable : public opt::OptTable {
};
enum OutputFormatTy { bsd, sysv, posix, darwin, just_symbols };
-
-enum SortSymbolKeyTy {
- NAME = 0,
- TYPE = 1,
- UNKNOWN = 100,
- // TODO: add ADDRESS, SIZE as needed.
-};
-
} // namespace
namespace opts {
@@ -122,7 +113,6 @@ static bool StringTable;
static bool Symbols;
static bool UnwindInfo;
static cl::boolOrDefault SectionMapping;
-static SmallVector<SortSymbolKeyTy> SortKeys;
// ELF specific options.
static bool DynamicTable;
@@ -263,19 +253,6 @@ static void parseOptions(const opt::InputArgList &Args) {
opts::ProgramHeaders = Args.hasArg(OPT_program_headers);
opts::RawRelr = Args.hasArg(OPT_raw_relr);
opts::SectionGroups = Args.hasArg(OPT_section_groups);
- if (Arg *A = Args.getLastArg(OPT_sort_symbols_EQ)) {
- std::string SortKeysString = A->getValue();
- for (StringRef KeyStr : llvm::split(A->getValue(), ",")) {
- SortSymbolKeyTy KeyType = StringSwitch<SortSymbolKeyTy>(KeyStr)
- .Case("name", SortSymbolKeyTy::NAME)
- .Case("type", SortSymbolKeyTy::TYPE)
- .Default(SortSymbolKeyTy::UNKNOWN);
- if (KeyType == SortSymbolKeyTy::UNKNOWN)
- error("--sort-symbols value should be 'name' or 'type', but was '" +
- Twine(KeyStr) + "'");
- opts::SortKeys.push_back(KeyType);
- }
- }
opts::VersionInfo = Args.hasArg(OPT_version_info);
// Mach-O specific options.
@@ -357,39 +334,11 @@ static void dumpObject(ObjectFile &Obj, ScopedPrinter &Writer,
toString(std::move(ContentErr));
ObjDumper *Dumper;
- Optional<SymbolComparator> SymComp;
Expected<std::unique_ptr<ObjDumper>> DumperOrErr = createDumper(Obj, Writer);
if (!DumperOrErr)
reportError(DumperOrErr.takeError(), FileStr);
Dumper = (*DumperOrErr).get();
- if (!opts::SortKeys.empty()) {
- if (Dumper->canCompareSymbols()) {
- SymComp = SymbolComparator();
- for (SortSymbolKeyTy Key : opts::SortKeys) {
- switch (Key) {
- case NAME:
- SymComp->addPredicate([Dumper](SymbolRef LHS, SymbolRef RHS) {
- return Dumper->compareSymbolsByName(LHS, RHS);
- });
- break;
- case TYPE:
- SymComp->addPredicate([Dumper](SymbolRef LHS, SymbolRef RHS) {
- return Dumper->compareSymbolsByType(LHS, RHS);
- });
- break;
- case UNKNOWN:
- llvm_unreachable("Unsupported sort key");
- }
- }
-
- } else {
- reportWarning(createStringError(
- errc::invalid_argument,
- "--sort-symbols is not supported yet for this format"),
- FileStr);
- }
- }
Dumper->printFileSummary(FileStr, Obj, opts::InputFilenames, A);
if (opts::FileHeaders)
@@ -425,7 +374,7 @@ static void dumpObject(ObjectFile &Obj, ScopedPrinter &Writer,
if (opts::UnwindInfo)
Dumper->printUnwindInfo();
if (opts::Symbols || opts::DynamicSymbols)
- Dumper->printSymbols(opts::Symbols, opts::DynamicSymbols, SymComp);
+ Dumper->printSymbols(opts::Symbols, opts::DynamicSymbols);
if (!opts::StringDump.empty())
Dumper->printSectionsAsString(Obj, opts::StringDump);
if (!opts::HexDump.empty())
diff --git a/llvm/tools/llvm-readobj/llvm-readobj.h b/llvm/tools/llvm-readobj/llvm-readobj.h
index 989cd0aba6c01..0ea695d1673d1 100644
--- a/llvm/tools/llvm-readobj/llvm-readobj.h
+++ b/llvm/tools/llvm-readobj/llvm-readobj.h
@@ -9,13 +9,10 @@
#ifndef LLVM_TOOLS_LLVM_READOBJ_LLVM_READOBJ_H
#define LLVM_TOOLS_LLVM_READOBJ_LLVM_READOBJ_H
-#include "ObjDumper.h"
-
-#include "llvm/ADT/SmallVector.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Compiler.h"
-#include "llvm/Support/Error.h"
#include "llvm/Support/ErrorOr.h"
+#include "llvm/Support/Error.h"
#include <string>
namespace llvm {
More information about the llvm-commits
mailing list