]> granicus.if.org Git - llvm/commitdiff
Reverting change r362121 due to lld-x86_64-ubuntu-fast test failures
authorMichael Trent <mtrent@apple.com>
Thu, 30 May 2019 18:17:10 +0000 (18:17 +0000)
committerMichael Trent <mtrent@apple.com>
Thu, 30 May 2019 18:17:10 +0000 (18:17 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@362123 91177308-0d34-0410-b5e6-96231b3b80d8

test/tools/llvm-objdump/X86/macho-disassemble-g-dsym.test
tools/llvm-objdump/MachODump.cpp

index 01ccd3044c086fd459e8c4477e02cea96e97b409..f06567764b84b91c4b37dc1dbc7e35fb501f624e 100644 (file)
@@ -5,14 +5,3 @@
 // RUN: FileCheck --input-file %t0 %s
 
 CHECK: Disassembly of section __TEXT,__text:
-
-// RUN: dsymutil %p/../../dsymutil/Inputs/fat-test.dylib -o fat-test.dylib.dSYM
-// RUN: llvm-objdump -m -d -g -dsym fat-test.dylib.dSYM/Contents/Resources/DWARF/fat-test.dylib %p/../../dsymutil/Inputs/fat-test.dylib | FileCheck -check-prefix MACHO_DSYM %s
-// RUN: dsymutil %p/../../dsymutil/Inputs/basic.macho.x86_64 -o basic.macho.x86_64.dSYM
-// RUN: llvm-objdump -m -d -g -dsym basic.macho.x86_64.dSYM/Contents/Resources/DWARF/basic.macho.x86_64 %p/../../dsymutil/Inputs/basic.macho.x86_64 | FileCheck -check-prefix MACHO_DSYM %s
-
-MACHO_DSYM: (__TEXT,__text) section
-
-// RUN: llvm-objdump -m -d -g -dsym %p/../Inputs/libbogus11.a %p/../../dsymutil/Inputs/basic.macho.x86_64 2>&1 | FileCheck -check-prefix BAD_INPUT %s
-
-BAD_INPUT: is not a Mach-O or Universal file type.
index b684daacb611e38799bba7d46a796dd4967c214b..ea92ef9268a1b7be5ba153d5c3c6d2f7248b7435 100644 (file)
@@ -7223,13 +7223,11 @@ static void DisassembleMachO(StringRef Filename, MachOObjectFile *MachOOF,
   raw_ostream &DebugOut = nulls();
 #endif
 
-  // Try to find debug info and set up the DIContext for it.
   std::unique_ptr<DIContext> diContext;
-  std::unique_ptr<Binary> DSYMBinary;
+  ObjectFile *DbgObj = MachOOF;
   std::unique_ptr<MemoryBuffer> DSYMBuf;
+  // Try to find debug info and set up the DIContext for it.
   if (UseDbg) {
-    ObjectFile *DbgObj = MachOOF;
-
     // A separate DSym file path was specified, parse it as a macho file,
     // get the sections and supply it to the section name parsing machinery.
     if (!DSYMFile.empty()) {
@@ -7240,61 +7238,12 @@ static void DisassembleMachO(StringRef Filename, MachOObjectFile *MachOOF,
         return;
       }
 
+      std::unique_ptr<MachOObjectFile> DbgObjCheck = unwrapOrError(
+          ObjectFile::createMachOObjectFile(BufOrErr.get()->getMemBufferRef()),
+          DSYMFile.getValue());
+      DbgObj = DbgObjCheck.release();
       // We need to keep the file alive, because we're replacing DbgObj with it.
       DSYMBuf = std::move(BufOrErr.get());
-
-      Expected<std::unique_ptr<Binary>> BinaryOrErr =
-      createBinary(DSYMBuf.get()->getMemBufferRef());
-      if (!BinaryOrErr) {
-        report_error(BinaryOrErr.takeError(), DSYMFile);
-        return;
-      }
-
-      // We need to keep the Binary elive with the buffer
-      DSYMBinary = std::move(BinaryOrErr.get());
-    
-      if (ObjectFile *O = dyn_cast<ObjectFile>(DSYMBinary.get())) {
-        // this is a Mach-O object file, use it
-        if (MachOObjectFile *MachDSYM = dyn_cast<MachOObjectFile>(&*O)) {
-          DbgObj = MachDSYM;
-        }
-        else {
-          WithColor::error(errs(), "llvm-objdump")
-            << DSYMFile << " is not a Mach-O file type.\n";
-          return;
-        }
-      }
-      else if (auto UB = dyn_cast<MachOUniversalBinary>(DSYMBinary.get())){
-        // this is a Universal Binary, find a Mach-O for this architecture
-        uint32_t CPUType, CPUSubType;
-        const char *ArchFlag;
-        if (MachOOF->is64Bit()) {
-          const MachO::mach_header_64 H_64 = MachOOF->getHeader64();
-          CPUType = H_64.cputype;
-          CPUSubType = H_64.cpusubtype;
-        } else {
-          const MachO::mach_header H = MachOOF->getHeader();
-          CPUType = H.cputype;
-          CPUSubType = H.cpusubtype;
-        }
-        Triple T = MachOObjectFile::getArchTriple(CPUType, CPUSubType, nullptr,
-                                                  &ArchFlag);
-        Expected<std::unique_ptr<MachOObjectFile>> MachDSYM =
-            UB->getObjectForArch(ArchFlag);
-        if (!MachDSYM) {
-          report_error(MachDSYM.takeError(), DSYMFile);
-          return;
-        }
-    
-        // We need to keep the Binary elive with the buffer
-        DbgObj = &*MachDSYM.get();
-        DSYMBinary = std::move(*MachDSYM);
-      }
-      else {
-        WithColor::error(errs(), "llvm-objdump")
-          << DSYMFile << " is not a Mach-O or Universal file type.\n";
-        return;
-      }
     }
 
     // Setup the DIContext