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 index 00000000000..a1fd6874035 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 index 00000000000..3adad658c08 --- /dev/null +++ b/test/tools/llvm-objdump/macho-unwind-info-no-relocs.test @@ -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 diff --git a/tools/llvm-objdump/MachODump.cpp b/tools/llvm-objdump/MachODump.cpp index 18492142240..34933eb7071 100644 --- a/tools/llvm-objdump/MachODump.cpp +++ b/tools/llvm-objdump/MachODump.cpp @@ -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;