|
@@ -57,6 +57,7 @@ public:
|
|
|
void printDynamicSymbols() override;
|
|
|
void printUnwindInfo() override;
|
|
|
void printCOFFImports() override;
|
|
|
+ void printCOFFExports() override;
|
|
|
void printCOFFDirectives() override;
|
|
|
void printCOFFBaseReloc() override;
|
|
|
|
|
@@ -1062,6 +1063,26 @@ void COFFDumper::printCOFFImports() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+void COFFDumper::printCOFFExports() {
|
|
|
+ for (const ExportDirectoryEntryRef &E : Obj->export_directories()) {
|
|
|
+ DictScope Export(W, "Export");
|
|
|
+
|
|
|
+ StringRef Name;
|
|
|
+ uint32_t Ordinal, RVA;
|
|
|
+
|
|
|
+ if (error(E.getSymbolName(Name)))
|
|
|
+ continue;
|
|
|
+ if (error(E.getOrdinal(Ordinal)))
|
|
|
+ continue;
|
|
|
+ if (error(E.getExportRVA(RVA)))
|
|
|
+ continue;
|
|
|
+
|
|
|
+ W.printNumber("Ordinal", Ordinal);
|
|
|
+ W.printString("Name", Name);
|
|
|
+ W.printHex("RVA", RVA);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void COFFDumper::printCOFFDirectives() {
|
|
|
for (const SectionRef &Section : Obj->sections()) {
|
|
|
StringRef Contents;
|