[PATCH] llvm-readobj: implement MachODumper::printNeededLibraries
Chilledheart
rwindz0 at gmail.com
Sun Mar 1 18:13:02 PST 2015
remove std::stable_sort and LC_ID_DYLIB items
http://reviews.llvm.org/D7378
Files:
tools/llvm-readobj/MachODumper.cpp
Index: tools/llvm-readobj/MachODumper.cpp
===================================================================
--- tools/llvm-readobj/MachODumper.cpp
+++ tools/llvm-readobj/MachODumper.cpp
@@ -38,6 +38,8 @@
void printDynamicSymbols() override;
void printUnwindInfo() override;
+ void printNeededLibraries() override;
+
private:
template<class MachHeader>
void printFileHeaders(const MachHeader &Header);
@@ -586,3 +588,32 @@
void MachODumper::printUnwindInfo() {
W.startLine() << "UnwindInfo not implemented.\n";
}
+
+void MachODumper::printNeededLibraries() {
+ ListScope D(W, "NeededLibraries");
+
+ typedef std::vector<StringRef> LibsTy;
+ LibsTy Libs;
+
+ uint32_t NumOfCommands =
+ Obj->is64Bit() ? Obj->getHeader64().ncmds : Obj->getHeader().ncmds;
+ MachOObjectFile::LoadCommandInfo Command = Obj->getFirstLoadCommandInfo();
+ MachO::dylib_command DylibCommand;
+ for (uint32_t i = 0; i != NumOfCommands;
+ ++i, Command = Obj->getNextLoadCommandInfo(Command)) {
+ if (Command.C.cmd == MachO::LC_LOAD_DYLIB ||
+ Command.C.cmd == MachO::LC_LOAD_WEAK_DYLIB ||
+ Command.C.cmd == MachO::LC_REEXPORT_DYLIB ||
+ Command.C.cmd == MachO::LC_LAZY_LOAD_DYLIB ||
+ Command.C.cmd == MachO::LC_LOAD_UPWARD_DYLIB) {
+ DylibCommand = Obj->getDylibIDLoadCommand(Command);
+ Libs.push_back(Command.Ptr + DylibCommand.dylib.name);
+ }
+ if (i == NumOfCommands -1)
+ break;
+ }
+
+ for (LibsTy::const_iterator I = Libs.begin(), E = Libs.end(); I != E; ++I) {
+ outs() << " " << *I << "\n";
+ }
+}
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D7378.20972.patch
Type: text/x-patch
Size: 1582 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150302/1d4a24ef/attachment.bin>
More information about the llvm-commits
mailing list