Skip to content

Commit 83d1609

Browse files
committed
[Comgr] Nest comgr-objdump under COMGR namespace
Previously, much of the comgr-objdump functionality was defined under the llvm namespace. With this update, we transition that to be under the COMGR namespace. We also remove some unused code in comgr-objdump, and refactor as much as possible into an anonymous namespace Change-Id: I7e6f5d32051e10d4a5c0b78d65aa4cd301545551
1 parent 549f87c commit 83d1609

File tree

3 files changed

+42
-213
lines changed

3 files changed

+42
-213
lines changed

amd/comgr/src/comgr-elfdump.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444

4545
using namespace llvm;
4646
using namespace llvm::object;
47-
using llvm::DisassemHelper;
47+
using COMGR::DisassemHelper;
4848

4949
template <class ELFT>
5050
void printProgramHeaders(const ELFFile<ELFT> &ELF, raw_ostream &OS) {
@@ -112,7 +112,7 @@ void printProgramHeaders(const ELFFile<ELFT> &ELF, raw_ostream &OS) {
112112
OS << "\n";
113113
}
114114

115-
void llvm::DisassemHelper::printELFFileHeader(const object::ObjectFile *Obj) {
115+
void COMGR::DisassemHelper::printELFFileHeader(const object::ObjectFile *Obj) {
116116
// Little-endian 32-bit
117117
if (const ELF32LEObjectFile *ELFObj = dyn_cast<ELF32LEObjectFile>(Obj)) {
118118
printProgramHeaders(ELFObj->getELFFile(), OutS);

amd/comgr/src/comgr-objdump.cpp

Lines changed: 14 additions & 184 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@
9292
using namespace llvm;
9393
using namespace object;
9494

95+
namespace {
9596
cl::opt<bool> Disassemble(
9697
"disassemble",
9798
cl::desc("Display assembler mnemonics for the machine instructions"));
@@ -136,19 +137,6 @@ cl::opt<bool> SymbolTable("syms", cl::desc("Display the symbol table"));
136137
static cl::alias SymbolTableShort("t", cl::desc("Alias for --syms"),
137138
cl::NotHidden, cl::aliasopt(SymbolTable));
138139

139-
cl::opt<bool> ExportsTrie("exports-trie",
140-
cl::desc("Display mach-o exported symbols"));
141-
142-
cl::opt<bool> Rebase("rebase", cl::desc("Display mach-o rebasing info"));
143-
144-
cl::opt<bool> Bind("bind", cl::desc("Display mach-o binding info"));
145-
146-
cl::opt<bool> LazyBind("lazy-bind",
147-
cl::desc("Display mach-o lazy binding info"));
148-
149-
cl::opt<bool> WeakBind("weak-bind",
150-
cl::desc("Display mach-o weak binding info"));
151-
152140
cl::opt<bool> RawClangAST(
153141
"raw-clang-ast",
154142
cl::desc("Dump the raw binary contents of the clang AST section"));
@@ -192,11 +180,6 @@ cl::opt<bool> NoShowRawInsn("no-show-raw-insn",
192180
cl::opt<bool> NoLeadingAddr("no-leading-addr",
193181
cl::desc("Print no leading address"));
194182

195-
cl::opt<bool> UnwindInfo("unwind-info", cl::desc("Display unwind information"));
196-
197-
static cl::alias UnwindInfoShort("u", cl::desc("Alias for --unwind-info"),
198-
cl::aliasopt(UnwindInfo));
199-
200183
cl::opt<bool> PrivateHeaders("private-headers",
201184
cl::desc("Display format specific file headers"));
202185

@@ -256,7 +239,6 @@ cl::opt<unsigned long long> StopAddress("stop-address",
256239
cl::init(UINT64_MAX));
257240
static StringRef ToolName = "DisassemblerAction";
258241

259-
namespace {
260242
typedef std::function<bool(llvm::object::SectionRef const &)> FilterPredicate;
261243

262244
class SectionFilterIterator {
@@ -322,7 +304,6 @@ SectionFilter toolSectionFilter(llvm::object::ObjectFile const &O) {
322304
},
323305
O);
324306
}
325-
} // namespace
326307

327308
static void error(std::error_code EC) {
328309
if (!EC) {
@@ -449,7 +430,6 @@ static bool relocAddressLess(RelocationRef A, RelocationRef B) {
449430
return A.getOffset() < B.getOffset();
450431
}
451432

452-
namespace {
453433
class SourcePrinter {
454434
protected:
455435
DILineInfo OldLineInfo;
@@ -722,7 +702,6 @@ PrettyPrinter &selectPrettyPrinter(Triple const &Triple) {
722702
return BPFPrettyPrinterInst;
723703
}
724704
}
725-
} // namespace
726705

727706
template <class ELFT>
728707
static std::error_code getRelocationValueString(const ELFObjectFile<ELFT> *Obj,
@@ -1259,8 +1238,9 @@ addDynamicElfSymbols(const ObjectFile *Obj,
12591238
llvm_unreachable("Unsupported binary format");
12601239
}
12611240
}
1241+
} // end anonymous namespace
12621242

1263-
void llvm::DisassemHelper::DisassembleObject(const ObjectFile *Obj,
1243+
void COMGR::DisassemHelper::DisassembleObject(const ObjectFile *Obj,
12641244
bool InlineRelocs) {
12651245
if (StartAddress > StopAddress) {
12661246
error("Start address should be less than stop address");
@@ -1812,7 +1792,7 @@ void llvm::DisassemHelper::DisassembleObject(const ObjectFile *Obj,
18121792
}
18131793
}
18141794

1815-
void llvm::DisassemHelper::PrintRelocations(const ObjectFile *Obj) {
1795+
void COMGR::DisassemHelper::PrintRelocations(const ObjectFile *Obj) {
18161796
StringRef Fmt = Obj->getBytesInAddress() > 4 ? "%016" PRIx64 : "%08" PRIx64;
18171797
// Regular objdump doesn't print relocations in non-relocatable object
18181798
// files.
@@ -1843,7 +1823,7 @@ void llvm::DisassemHelper::PrintRelocations(const ObjectFile *Obj) {
18431823
}
18441824
}
18451825

1846-
void llvm::DisassemHelper::PrintSectionHeaders(const ObjectFile *Obj) {
1826+
void COMGR::DisassemHelper::PrintSectionHeaders(const ObjectFile *Obj) {
18471827
OutS << "Sections:\n"
18481828
"Idx Name Size Address Type\n";
18491829
unsigned I = 0;
@@ -1862,7 +1842,7 @@ void llvm::DisassemHelper::PrintSectionHeaders(const ObjectFile *Obj) {
18621842
}
18631843
}
18641844

1865-
void llvm::DisassemHelper::PrintSectionContents(const ObjectFile *Obj) {
1845+
void COMGR::DisassemHelper::PrintSectionContents(const ObjectFile *Obj) {
18661846
std::error_code EC;
18671847
for (const SectionRef &Section : toolSectionFilter(*Obj)) {
18681848
StringRef Contents;
@@ -1918,17 +1898,11 @@ void llvm::DisassemHelper::PrintSectionContents(const ObjectFile *Obj) {
19181898
}
19191899
}
19201900

1921-
void llvm::DisassemHelper::PrintSymbolTable(const ObjectFile *O,
1901+
void COMGR::DisassemHelper::PrintSymbolTable(const ObjectFile *O,
19221902
StringRef ArchiveName,
19231903
StringRef ArchitectureName) {
19241904
OutS << "SYMBOL TABLE:\n";
19251905

1926-
#ifdef NOT_LIBCOMGR
1927-
if (const COFFObjectFile *coff = dyn_cast<const COFFObjectFile>(o)) {
1928-
printCOFFSymbolTable(coff);
1929-
return;
1930-
}
1931-
#endif
19321906
for (const SymbolRef &Symbol : O->symbols()) {
19331907
Expected<uint64_t> AddressOrError = Symbol.getAddress();
19341908
if (!AddressOrError) {
@@ -2034,103 +2008,9 @@ void llvm::DisassemHelper::PrintSymbolTable(const ObjectFile *O,
20342008
}
20352009
}
20362010

2037-
void llvm::DisassemHelper::PrintUnwindInfo(const ObjectFile *O) {
2038-
OutS << "Unwind info:\n\n";
2039-
2040-
#ifdef NOT_LIBCOMGR
2041-
if (const COFFObjectFile *coff = dyn_cast<COFFObjectFile>(o)) {
2042-
printCOFFUnwindInfo(coff);
2043-
} else if (const MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
2044-
printMachOUnwindInfo(MachO);
2045-
else {
2046-
#endif
2047-
// TODO: Extract DWARF dump tool to objdump.
2048-
ErrS << "This operation is only currently supported "
2049-
"for COFF and MachO object files.\n";
2050-
return;
2051-
#ifdef NOT_LIBCOMGR
2052-
}
2053-
#endif
2054-
}
2055-
2056-
void llvm::DisassemHelper::printExportsTrie(const ObjectFile *O) {
2057-
OutS << "Exports trie:\n";
2058-
#ifdef NOT_LIBCOMGR
2059-
if (const MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
2060-
printMachOExportsTrie(MachO);
2061-
else {
2062-
#endif
2063-
ErrS << "This operation is only currently supported "
2064-
"for Mach-O executable files.\n";
2065-
return;
2066-
#ifdef NOT_LIBCOMGR
2067-
}
2068-
#endif
2069-
}
2070-
2071-
void llvm::DisassemHelper::printRebaseTable(ObjectFile *O) {
2072-
OutS << "Rebase table:\n";
2073-
#ifdef NOT_LIBCOMGR
2074-
if (MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
2075-
printMachORebaseTable(MachO);
2076-
else {
2077-
#endif
2078-
ErrS << "This operation is only currently supported "
2079-
"for Mach-O executable files.\n";
2080-
return;
2081-
#ifdef NOT_LIBCOMGR
2082-
}
2083-
#endif
2084-
}
2085-
2086-
void llvm::DisassemHelper::printBindTable(ObjectFile *O) {
2087-
OutS << "Bind table:\n";
2088-
#ifdef NOT_LIBCOMGR
2089-
if (MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
2090-
printMachOBindTable(MachO);
2091-
else {
2092-
#endif
2093-
ErrS << "This operation is only currently supported "
2094-
"for Mach-O executable files.\n";
2095-
return;
2096-
#ifdef NOT_LIBCOMGR
2097-
}
2098-
#endif
2099-
}
2100-
2101-
void llvm::DisassemHelper::printLazyBindTable(ObjectFile *O) {
2102-
OutS << "Lazy bind table:\n";
2103-
#ifdef NOT_LIBCOMGR
2104-
if (MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
2105-
printMachOLazyBindTable(MachO);
2106-
else {
2107-
#endif
2108-
ErrS << "This operation is only currently supported "
2109-
"for Mach-O executable files.\n";
2110-
return;
2111-
#ifdef NOT_LIBCOMGR
2112-
}
2113-
#endif
2114-
}
2115-
2116-
void llvm::DisassemHelper::printWeakBindTable(ObjectFile *O) {
2117-
OutS << "Weak bind table:\n";
2118-
#ifdef NOT_LIBCOMGR
2119-
if (MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
2120-
printMachOWeakBindTable(MachO);
2121-
else {
2122-
#endif
2123-
ErrS << "This operation is only currently supported "
2124-
"for Mach-O executable files.\n";
2125-
return;
2126-
#ifdef NOT_LIBCOMGR
2127-
}
2128-
#endif
2129-
}
2130-
21312011
/// Dump the raw contents of the __clangast section so the output can be piped
21322012
/// into llvm-bcanalyzer.
2133-
void llvm::DisassemHelper::printRawClangAST(const ObjectFile *Obj) {
2013+
void COMGR::DisassemHelper::printRawClangAST(const ObjectFile *Obj) {
21342014
if (OutS.is_displayed()) {
21352015
ErrS << "The -raw-clang-ast option will dump the raw binary contents of "
21362016
"the clang ast section.\n"
@@ -2174,7 +2054,7 @@ void llvm::DisassemHelper::printRawClangAST(const ObjectFile *Obj) {
21742054
OutS.write(ClangASTContents.data(), ClangASTContents.size());
21752055
}
21762056

2177-
void llvm::DisassemHelper::printFaultMaps(const ObjectFile *Obj) {
2057+
void COMGR::DisassemHelper::printFaultMaps(const ObjectFile *Obj) {
21782058
const char *FaultMapSectionName = nullptr;
21792059

21802060
if (isa<ELFObjectFileBase>(Obj)) {
@@ -2225,27 +2105,15 @@ void llvm::DisassemHelper::printFaultMaps(const ObjectFile *Obj) {
22252105
OutS << FMP;
22262106
}
22272107

2228-
void llvm::DisassemHelper::printPrivateFileHeaders(const ObjectFile *O,
2108+
void COMGR::DisassemHelper::printPrivateFileHeaders(const ObjectFile *O,
22292109
bool OnlyFirst) {
22302110
if (O->isELF()) {
22312111
return printELFFileHeader(O);
22322112
}
2233-
#ifdef NOT_LIBCOMGR
2234-
if (o->isCOFF())
2235-
return printCOFFFileHeader(o);
2236-
if (o->isWasm())
2237-
return printWasmFileHeader(o);
2238-
if (o->isMachO()) {
2239-
printMachOFileHeader(o);
2240-
if (!onlyFirst)
2241-
printMachOLoadCommands(o);
2242-
return;
2243-
}
2244-
#endif
22452113
reportError(O->getFileName(), "Invalid/Unsupported object file format");
22462114
}
22472115

2248-
void llvm::DisassemHelper::DumpObject(ObjectFile *O,
2116+
void COMGR::DisassemHelper::DumpObject(ObjectFile *O,
22492117
const Archive *A = nullptr) {
22502118
StringRef ArchiveName = A != nullptr ? A->getFileName() : "";
22512119
// Avoid other output when using a raw option.
@@ -2274,27 +2142,9 @@ void llvm::DisassemHelper::DumpObject(ObjectFile *O,
22742142
if (SymbolTable) {
22752143
PrintSymbolTable(O, ArchiveName);
22762144
}
2277-
if (UnwindInfo) {
2278-
PrintUnwindInfo(O);
2279-
}
22802145
if (PrivateHeaders || FirstPrivateHeader) {
22812146
printPrivateFileHeaders(O, FirstPrivateHeader);
22822147
}
2283-
if (ExportsTrie) {
2284-
printExportsTrie(O);
2285-
}
2286-
if (Rebase) {
2287-
printRebaseTable(O);
2288-
}
2289-
if (Bind) {
2290-
printBindTable(O);
2291-
}
2292-
if (LazyBind) {
2293-
printLazyBindTable(O);
2294-
}
2295-
if (WeakBind) {
2296-
printWeakBindTable(O);
2297-
}
22982148
if (RawClangAST) {
22992149
printRawClangAST(O);
23002150
}
@@ -2310,25 +2160,9 @@ void llvm::DisassemHelper::DumpObject(ObjectFile *O,
23102160
}
23112161
}
23122162

2313-
#ifdef NOT_LIBCOMGR
2314-
void llvm::DisassemHelper::DumpObject(const COFFImportFile *I,
2315-
const Archive *A) {
2316-
StringRef ArchiveName = A ? A->getFileName() : "";
2317-
2318-
// Avoid other output when using a raw option.
2319-
if (!RawClangAST)
2320-
OutS << '\n'
2321-
<< ArchiveName << "(" << I->getFileName() << ")"
2322-
<< ":\tfile format COFF-import-file"
2323-
<< "\n\n";
2324-
2325-
if (SymbolTable)
2326-
printCOFFSymbolTable(I);
2327-
}
2328-
#endif
23292163

23302164
/// @brief Dump each object file in \a a;
2331-
void llvm::DisassemHelper::DumpArchive(const Archive *A) {
2165+
void COMGR::DisassemHelper::DumpArchive(const Archive *A) {
23322166
Error Err = Error::success();
23332167
for (auto &C : A->children(Err)) {
23342168
Expected<std::unique_ptr<Binary>> ChildOrErr = C.getAsBinary();
@@ -2340,10 +2174,6 @@ void llvm::DisassemHelper::DumpArchive(const Archive *A) {
23402174
}
23412175
if (ObjectFile *O = dyn_cast<ObjectFile>(&*ChildOrErr.get())) {
23422176
DumpObject(O, A);
2343-
#ifdef NOT_LIBCOMGR
2344-
else if (COFFImportFile *I = dyn_cast<COFFImportFile>(&*ChildOrErr.get()))
2345-
DumpObject(I, a);
2346-
#endif
23472177
} else {
23482178
reportError(A->getFileName(), object_error::invalid_file_type);
23492179
}
@@ -2354,7 +2184,7 @@ void llvm::DisassemHelper::DumpArchive(const Archive *A) {
23542184
}
23552185

23562186
/// @brief Open file and figure out how to dump it.
2357-
void llvm::DisassemHelper::DumpInput(StringRef File) {
2187+
void COMGR::DisassemHelper::DumpInput(StringRef File) {
23582188

23592189
// Attempt to open the binary.
23602190
Expected<OwningBinary<Binary>> BinaryOrErr = createBinary(File);
@@ -2385,7 +2215,7 @@ void llvm::DisassemHelper::DumpInput(StringRef File) {
23852215
// DisassemHelper.
23862216
// ------------------------------------------------------------------------------------
23872217
amd_comgr_status_t
2388-
llvm::DisassemHelper::disassembleAction(StringRef Input,
2218+
COMGR::DisassemHelper::disassembleAction(StringRef Input,
23892219
ArrayRef<std::string> Options) {
23902220
// Register the target printer for --version.
23912221
cl::AddExtraVersionPrinter(TargetRegistry::printRegisteredTargetsForVersion);

0 commit comments

Comments
 (0)