From 4faf24b6b719eedc2b7dcc8b8047deb4774d4a3f Mon Sep 17 00:00:00 2001 From: Tim Northover Date: Tue, 9 Sep 2014 10:45:06 +0000 Subject: [PATCH] llvm-objdump: don't crash when __compact_unwind has no relocs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217433 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../Inputs/unwind-info-no-relocs.macho-x86_64 | Bin 0 -> 12600 bytes .../tools/llvm-objdump/macho-unwind-info-no-relocs.test | 8 ++++++++ tools/llvm-objdump/MachODump.cpp | 3 +++ 3 files changed, 11 insertions(+) create mode 100755 test/tools/llvm-objdump/Inputs/unwind-info-no-relocs.macho-x86_64 create mode 100644 test/tools/llvm-objdump/macho-unwind-info-no-relocs.test 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 0000000000000000000000000000000000000000..a1fd6874035e96d6f94b535df1edd61afc0340ac GIT binary patch literal 12600 zcmeI2L2DC16vwBj#)8@=c(4}1&>k!lY^9eT6PnN#i#C!&>E*GTL|I6akZfvt(Y<*0 zSP(=!`91mp{2ILoo;|ew|C<@Ro2K5?_uysb&6|07``Zc3Oy=9q@8`FSnVL4nWT3a9 zdpC@EkCO5Lx(yZCD{WN{DlcEKH7!$VbE3sK8|WxftL)d(UE=Y%bepmEO*B)PA4Mc= z4#QD>WT)f3ox{Vx!Dpe+9+N0(i@dJar8%rOyP<@hKb~J?<1O1kwErX`gZ7)C-H@RD zs)LT>@xI!4`!)z|m+Pds80js-Tw*=%+$wl5kJ#a-}`gPlWJq{GS{ zY_i(7?VJq_g38J7E$M#-0e|m zvz>O_51)2FT(#@@Nm~MpQc(g*KnW-TC7=Y9fD%vwNNt4KnW;;zkxu0$yD=8^Uy+-`BwY6 ze36&ChePQ$d;Lz^YX#x49IcrT)!xjtzAMj~;U!|}hXY@H+=p-W%zZJBvnKi+MLAsm zKL5nhWaMDo_j*U>(V-W#%|_N-#10-b%;M65JBPRjdk&56yn=TiXuI=?McTY5ftVb- g4n@goEOf=PwYizN?%!%Y#g%iLg2X9Y$$KJ=UqGCvivR!s literal 0 HcmV?d00001 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; -- 2.11.0