llvm-objdump: don't crash when __compact_unwind has no relocs.
authorTim Northover <tnorthover@apple.com>
Tue, 9 Sep 2014 10:45:06 +0000 (10:45 +0000)
committerTim Northover <tnorthover@apple.com>
Tue, 9 Sep 2014 10:45:06 +0000 (10:45 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217433 91177308-0d34-0410-b5e6-96231b3b80d8

test/tools/llvm-objdump/Inputs/unwind-info-no-relocs.macho-x86_64 [new file with mode: 0755]
test/tools/llvm-objdump/macho-unwind-info-no-relocs.test [new file with mode: 0644]
tools/llvm-objdump/MachODump.cpp

diff --git a/test/tools/llvm-objdump/Inputs/unwind-info-no-relocs.macho-x86_64 b/test/tools/llvm-objdump/Inputs/unwind-info-no-relocs.macho-x86_64
new file mode 100755 (executable)
index 0000000..a1fd687
Binary files /dev/null and b/test/tools/llvm-objdump/Inputs/unwind-info-no-relocs.macho-x86_64 differ
diff --git a/test/tools/llvm-objdump/macho-unwind-info-no-relocs.test b/test/tools/llvm-objdump/macho-unwind-info-no-relocs.test
new file mode 100644 (file)
index 0000000..3adad65
--- /dev/null
@@ -0,0 +1,8 @@
+# RUN: llvm-objdump -unwind-info %p/Inputs/unwind-info-no-relocs.macho-x86_64 2>/dev/null | FileCheck %s
+
+# Make sure we can deal with __compact_unwind sections that don't have helpful
+# relocations.
+
+# CHECK: Contents of __compact_unwind section:
+# CHECK:   Entry at offset 0x0:
+# CHECK:     start: 0x100000f7e
index 18492142240ae5fb8a304c48d0c0d19005cce244..34933eb70715e959755184bfd0d3b2f71ccf38cb 100644 (file)
@@ -650,6 +650,9 @@ static void printUnwindRelocDest(const MachOObjectFile *Obj,
   StringRef Name;
   uint64_t Addend;
 
+  if (!Reloc.getObjectFile())
+    return;
+
   findUnwindRelocNameAddend(Obj, Symbols, Reloc, Addr, Name, Addend);
 
   outs() << Name;