diff options
author | Kevin Enderby <enderby@apple.com> | 2014-05-14 21:18:50 +0000 |
---|---|---|
committer | Kevin Enderby <enderby@apple.com> | 2014-05-14 21:18:50 +0000 |
commit | 14963a696b8c4dc89409889288e85f531bd59534 (patch) | |
tree | ad667409d3bd4d20e9c5779e7818c4c0d11bbeda /tools/llvm-nm | |
parent | 6b543713a25c20c028cc0bbca0dd8b052c61e000 (diff) | |
download | llvm-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.cpp | 14 |
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; } |