From c28016e4131bdd50c23510adb3a0254b7fb5adc6 Mon Sep 17 00:00:00 2001 From: Kevin Enderby Date: Thu, 19 Jun 2014 22:03:18 +0000 Subject: =?UTF-8?q?Change=20the=20output=20of=20llvm-nm=20and=20llvm-size?= =?UTF-8?q?=20for=20Mach-O=20universal=20files=20(aka=20fat=20files)=20to?= =?UTF-8?q?=20print=20=E2=80=9C=20(for=20architecture=20XYZ)=E2=80=9D=20fo?= =?UTF-8?q?r=20fat=20files=20with=20more=20than=20one=20architecture=20to?= =?UTF-8?q?=20be=20like=20what=20the=20darwin=20tools=20do=20for=20fat=20f?= =?UTF-8?q?iles.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also clean up the Mach-O printing of archive membernames in llvm-nm to use the darwin form of "libx.a(foo.o)". git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211316 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llvm-nm/llvm-nm.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'tools/llvm-nm/llvm-nm.cpp') diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp index e605e6e430..c6b80d1dd9 100644 --- a/tools/llvm-nm/llvm-nm.cpp +++ b/tools/llvm-nm/llvm-nm.cpp @@ -752,20 +752,28 @@ static void dumpSymbolNamesFromFile(std::string &Filename) { if (ChildOrErr.getError()) continue; if (SymbolicFile *O = dyn_cast(&*ChildOrErr.get())) { - outs() << O->getFileName() << ":\n"; + if (isa(O)) { + outs() << Filename << "(" << O->getFileName() << ")"; + } else + outs() << O->getFileName(); + outs() << ":\n"; dumpSymbolNamesFromObject(O); } } return; } if (MachOUniversalBinary *UB = dyn_cast(Bin.get())) { + bool moreThanOneArch = UB->getNumberOfObjects() > 1; for (MachOUniversalBinary::object_iterator I = UB->begin_objects(), E = UB->end_objects(); I != E; ++I) { std::unique_ptr Obj; std::unique_ptr A; if (!I->getAsObjectFile(Obj)) { - outs() << Obj->getFileName() << ":\n"; + outs() << Obj->getFileName(); + if (isa(Obj.get()) && moreThanOneArch) + outs() << " (for architecture " << I->getArchTypeName() << ")"; + outs() << ":\n"; dumpSymbolNamesFromObject(Obj.get()); } else if (!I->getAsArchive(A)) { @@ -776,8 +784,14 @@ static void dumpSymbolNamesFromFile(std::string &Filename) { if (ChildOrErr.getError()) continue; if (SymbolicFile *O = dyn_cast(&*ChildOrErr.get())) { - outs() << A->getFileName() << ":"; - outs() << O->getFileName() << ":\n"; + outs() << A->getFileName(); + if (isa(O)) { + outs() << "(" << O->getFileName() << ")"; + if (moreThanOneArch) + outs() << " (for architecture " << I->getArchTypeName() << ")"; + } else + outs() << ":" << O->getFileName(); + outs() << ":\n"; dumpSymbolNamesFromObject(O); } } -- cgit v1.2.3