From 9ba45e98f4e3aa40c0d38643e1387fddb4004cc0 Mon Sep 17 00:00:00 2001 From: Kevin Enderby Date: Thu, 8 Oct 2015 16:56:35 +0000 Subject: [PATCH] =?utf8?q?Fix=20a=20bug=20in=20llvm-objdump=E2=80=99s=20pr?= =?utf8?q?inting=20of=20Objective-C=20meta=20data=20from=20malformed=20Mac?= =?utf8?q?h-O=20files=20that=20caused=20a=20crash=20because=20of=20loops?= =?utf8?q?=20in=20the=20class=20meta=20data.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249700 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../Inputs/malformed-machos/mem-crup-0010.macho | Bin 0 -> 9248 bytes test/tools/llvm-objdump/malformed-machos.test | 6 ++++++ tools/llvm-objdump/MachODump.cpp | 12 +++++++++--- 3 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 test/tools/llvm-objdump/Inputs/malformed-machos/mem-crup-0010.macho diff --git a/test/tools/llvm-objdump/Inputs/malformed-machos/mem-crup-0010.macho b/test/tools/llvm-objdump/Inputs/malformed-machos/mem-crup-0010.macho new file mode 100644 index 0000000000000000000000000000000000000000..4c7e78d93b62d51b57e665aa3b8ba6b224481077 GIT binary patch literal 9248 zcmeHNO>7%Q6dpG%4I$7?;SivJgHlwW@usMa0#cCfRnq>w4E} zjHqx_iio00KJX)PLWo;0J#ayQs00UY9N>@>>H$!Yij)HqRV4`D+nKS~>$v2=1!d*#a8=1kbLU*Q@A}}*}iDnd2ZT^j&E;synHPAQj&mh zlm8U4%sDrf`C^G&=Sz6Lo06|rwkJ$6+)f&CJf56S23o23ZIe?R6R+|E=eEV&N+Ii5 zyy%tiyX?%T=x7-Q?V@-K#v$ic=5BnNBvRuO4)Q7c)Qp00VwtWNwy!tDM>xm_9@#=L zNz|h>viP4=g+JYW@H`ugY+$M=eQij!d6-48sBMC(V?(=*2OvRl$ECzr8w%gpMYX;%jF z6%-TxlRe2;br3CCTuf9$UIkQAi~A~e9XZ)au|Q)C_Az!4`B@O$z)R-`57LDYiUI!lG4G@lC<{w3U)R36DB4`gFT-@Uz+djxOithEir@t zNuEXW{Q*4a*F=xV1Ca+J4@4e_JP>(c*B)3%t^Ja^d`nBMUD`^m?|Tn>n$+6F?bP~- zRVrS+w6#fl{nX`ewKLyrAN~~OsjH8@k1UzqK70jvZ5a>t+ppW(+oo-LjP_bw?6O9V z4UG)GK>G%8u|w1j63l6@Lf^>8kyBcd-$PWU{b)COYJP73&^+X4D7-PpVk=rq>)zj4 zBl3{EDS6bsRH;`{I3km(qdfeb8Px4mrhO0%tG;*DccuE?uR_-;6SBIfaf<%trC!~( zp!n51w4Sz2eMN1Ty!1U1N#udZ1Ca+J4@4e_JP>&x@<8N)$ODlFA`e6!_`i9er%#(3 zFAk>1=El=w#rWxiBYbA`#W6lMl}x93Kc7y|WX~BnkDb1-6{|_*%MJ`LT&wuk1F!@X5tPdh)+Vd*b!r&%>1}O&4?(0hdST50o)(Jr0+*k|Mx(68V`kk z0FEOmxrIVp0p!#^PY)^gqWl1o8t)Lw2XJPg&OuH{tjAQQRyR5Ft+Bl2H#Ff+Y&O=sH?9t-L;I zdq$~XqFN7DhG#<4A=FZFj(SN(Eeat_%depth < 100) { + info->depth++; + outs() << "Meta Class\n"; + print_class64_t(c.isa + isa_n_value, info); } } @@ -5113,6 +5118,7 @@ static void printObjc2_64bit_MetaData(MachOObjectFile *O, bool verbose) { info.adrp_addr = 0; info.adrp_inst = 0; + info.depth = 0; const SectionRef CL = get_section(O, "__OBJC2", "__class_list"); if (CL != SectionRef()) { info.S = CL; -- 2.34.1