/// @brief Dumps the specified object file. static void dumpObject(const ObjectFile *Obj) { StreamWriter Writer(outs()); OwningPtr<ObjDumper> Dumper; if (error_code EC = createDumper(Obj, Writer, Dumper)) { reportError(Obj->getFileName(), EC); return; } outs() << '\n'; outs() << "File: " << Obj->getFileName() << "\n"; outs() << "Format: " << Obj->getFileFormatName() << "\n"; outs() << "Arch: " << Triple::getArchTypeName((llvm::Triple::ArchType)Obj->getArch()) << "\n"; outs() << "AddressSize: " << (8*Obj->getBytesInAddress()) << "bit\n"; if (Obj->isELF()) outs() << "LoadName: " << Obj->getLoadName() << "\n"; if (opts::FileHeaders) Dumper->printFileHeaders(); if (opts::Sections) Dumper->printSections(); if (opts::Relocations) Dumper->printRelocations(); if (opts::Symbols) Dumper->printSymbols(); if (opts::DynamicSymbols) Dumper->printDynamicSymbols(); if (opts::UnwindInfo) Dumper->printUnwindInfo(); if (opts::DynamicTable) Dumper->printDynamicTable(); if (opts::NeededLibraries) Dumper->printNeededLibraries(); if (opts::ProgramHeaders) Dumper->printProgramHeaders(); if (opts::ArmBuildAttrs) Dumper->printARMBuildAttributes(); }