summaryrefslogtreecommitdiff
path: root/tools/llvm-nm
diff options
context:
space:
mode:
authorKevin Enderby <enderby@apple.com>2014-05-14 21:18:50 +0000
committerKevin Enderby <enderby@apple.com>2014-05-14 21:18:50 +0000
commit14963a696b8c4dc89409889288e85f531bd59534 (patch)
treead667409d3bd4d20e9c5779e7818c4c0d11bbeda /tools/llvm-nm
parent6b543713a25c20c028cc0bbca0dd8b052c61e000 (diff)
downloadllvm-14963a696b8c4dc89409889288e85f531bd59534.tar.gz
llvm-14963a696b8c4dc89409889288e85f531bd59534.tar.bz2
llvm-14963a696b8c4dc89409889288e85f531bd59534.tar.xz
Teach llvm-nm to know about fat archives (aka MachOUniversal files
containing archives). First step as other tools will be updated next. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208812 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-nm')
-rw-r--r--tools/llvm-nm/llvm-nm.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp
index 0a1491b846..57e9d55c86 100644
--- a/tools/llvm-nm/llvm-nm.cpp
+++ b/tools/llvm-nm/llvm-nm.cpp
@@ -595,10 +595,24 @@ static void dumpSymbolNamesFromFile(std::string &Filename) {
E = UB->end_objects();
I != E; ++I) {
std::unique_ptr<ObjectFile> Obj;
+ std::unique_ptr<Archive> A;
if (!I->getAsObjectFile(Obj)) {
outs() << Obj->getFileName() << ":\n";
dumpSymbolNamesFromObject(Obj.get());
}
+ else if (!I->getAsArchive(A)) {
+ for (Archive::child_iterator AI = A->child_begin(), AE = A->child_end();
+ AI != AE; ++AI) {
+ std::unique_ptr<Binary> Child;
+ if (AI->getAsBinary(Child, &Context))
+ continue;
+ if (SymbolicFile *O = dyn_cast<SymbolicFile>(Child.get())) {
+ outs() << A->getFileName() << ":";
+ outs() << O->getFileName() << ":\n";
+ dumpSymbolNamesFromObject(O);
+ }
+ }
+ }
}
return;
}