From 2f9d8d07022fbc9884b4da84a934f06648736503 Mon Sep 17 00:00:00 2001 From: Kevin Enderby Date: Fri, 21 Oct 2016 20:03:14 +0000 Subject: [PATCH] Fix a bug in the code of llvm-cxxdump in dumpArchive() when iterating over an archive with object and non-object members that would cause an Abort because to was not calling consumeError() when the code was wanting to ignore a non-object file. Found by Justin Bogner! llvm-svn: 284867 --- .../tools/llvm-cxxdump/Inputs/mixed-archive.coff-i386 | Bin 0 -> 3230 bytes llvm/test/tools/llvm-cxxdump/trivial.test | 5 +++++ llvm/tools/llvm-cxxdump/llvm-cxxdump.cpp | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 llvm/test/tools/llvm-cxxdump/Inputs/mixed-archive.coff-i386 diff --git a/llvm/test/tools/llvm-cxxdump/Inputs/mixed-archive.coff-i386 b/llvm/test/tools/llvm-cxxdump/Inputs/mixed-archive.coff-i386 new file mode 100644 index 0000000000000000000000000000000000000000..d8a77ef10ab67595eac3432ceae169ca7b8b8535 GIT binary patch literal 3230 zcmai1O>7%Q7@fr%H`%(0TP#r_sw|0BB~@|Pc5ob8n%(B7L`p?S8e|ZX<2W{P6`a&@ z0;nK?0zy{QBN80o2nU436(poWBIU%nhhFFb#39_^h7{hL*`R%(=&uN%vim6g?0+4L+uG?dF{)0xbWX{Onk=``okmX#YKmK|}a3r2sfUS8Q) zs+fK2&86CEYPl~At<)BY8MS)Tc&k*a570A9jW^4ejq-A-VP3j~!KOc`)Hl}#jeADd zS_8!DK;KJD&U|~dv9k0=y>IZU(bcFlHyZVUiNe(F;@te$*u>l%;P(xqKYc}J>n3NW zhlVXHpUGu%UL6@LSVv|gmr>jWquHo!)=Dd>)x|rh@@lpETrHc=2_dGnC(#S>TZa(W zr6)wHS$U`F`h2{K7K;e6h(?Q|nPO%kwNz@BB+~A_bU7Yk3+q8@aedtz^Vu03xc&#^ z9f~`KIj;BEUGoWy%{by7;++QmH#s^QOhY@4$Mpvy+*hY=2vn#aHZLC%RXE$ zc{T9v2G#@b!C_tkypO^8Jj9zh!i$6VEjT~AJl0{y?PGa+;56z^z$Up2R=cZSCv#&(LYblCAM%rv%~XTf4EH zDlOI1`ww*CoI4Yh;&!ZR> zGpI$@QIK2pf}GgePe64Z>&Fo*#uc`wrQg~538*d=fID9VUo^?kTe@0kYd3*deZW=X zEa@s*Li~e0aL*sc%AUd_DnG5=(sSX^gWJY!iV7a53(`X;Ej8-Q&)K&0nG7!^Wqjo{ zs!g=^3Q#qW+D4YYQSr^+32d)j`85QJTmYxd>=Ik7s zvlpE?UkPcb%^X3F%ksaXUX$wJg~@0UjaRz2H!6Pc(&8>gytLq}D*;~&fs35?ZA6pD zP%O+@3h>%A8};3=6dOkhD3&vQiMIr38I@Krp?w2mVxRuhgD^;Nx6!-{3B zz;%C0s)ALV@>Q0rA_o};z9Yz2wR?4S`n$S)YSk>*TKEWJ~oUp0~NVu*ZU-cO!Fml2w?p|0G_f=m}0wX7^;#pH~+1vTE zzUn(lVB~~V=YWLkI_Il?paez^RDrK0{s@a`JU3n}^|Q>bR!Ys3WfA4wq&{Q6U_{e| z=^~F5AV=yg{0_wSImHrwGu6De!RWNVWUo4fXkK`L3h4$igHb!y#Smu%qtQ_d*YPXP zgk5+YgW@Xd0+rVU~Q9 nhw6&Oo6|4faHfmJ^^L{i6dw53P%p|-oA0hwinV%mRh9fN)r5F< literal 0 HcmV?d00001 diff --git a/llvm/test/tools/llvm-cxxdump/trivial.test b/llvm/test/tools/llvm-cxxdump/trivial.test index 2c36620..d4982b8 100644 --- a/llvm/test/tools/llvm-cxxdump/trivial.test +++ b/llvm/test/tools/llvm-cxxdump/trivial.test @@ -4,6 +4,9 @@ RUN: | FileCheck %s --check-prefix=COFF-I386 RUN: llvm-cxxdump %p/Inputs/trivial.obj.elf-i386 \ RUN: | FileCheck %s --check-prefix=ELF-I386 +RUN: llvm-cxxdump %p/Inputs/mixed-archive.coff-i386 \ +RUN: | FileCheck %s --check-prefix=MIXEDARCOFF-I386 + COFF-I386: ??_7S@@6B@[0]: ??_R4S@@6B@ COFF-I386-NEXT: ??_7S@@6B@[4]: ??_GS@@UAEPAXI@Z COFF-I386-NEXT: ??_8S@@7B@[0]: -4 @@ -57,5 +60,7 @@ ELF-I386-NEXT: _ZTV1A[0]: 0 ELF-I386-NEXT: _ZTV1A[4]: _ZTI1A ELF-I386-NEXT: _ZTV1A[8]: _ZN1A1fEv +MIXEDARCOFF-I386: ??_7S@@6B@[0]: ??_R4S@@6B@ + RUN: not llvm-cxxdump %t.blah 2>&1 | FileCheck --check-prefix=ENOENT %s ENOENT: {{.*}}.blah: {{[Nn]}}o such file or directory diff --git a/llvm/tools/llvm-cxxdump/llvm-cxxdump.cpp b/llvm/tools/llvm-cxxdump/llvm-cxxdump.cpp index c92d20d..518d414 100644 --- a/llvm/tools/llvm-cxxdump/llvm-cxxdump.cpp +++ b/llvm/tools/llvm-cxxdump/llvm-cxxdump.cpp @@ -502,7 +502,7 @@ static void dumpArchive(const Archive *Arc) { OS.flush(); reportError(Arc->getFileName(), Buf); } - ChildOrErr.takeError(); + consumeError(ChildOrErr.takeError()); continue; } -- 2.7.4