<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<style id="owaParaStyle" type="text/css">P {margin-top:0;margin-bottom:0;}</style>
</head>
<body ocsi="0" fpstyle="1">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">Thanks Daniel and Benjamin for help!<br>
<div><br>
<div style="font-family:Tahoma; font-size:13px">Best regards,<br>
Zlatko<br>
</div>
</div>
<div style="font-family: Times New Roman; color: #000000; font-size: 16px">
<hr tabindex="-1">
<div style="direction: ltr;" id="divRpF219223"><font face="Tahoma" size="2" color="#000000"><b>Šalje:</b> NAKAMURA Takumi [geek4civic@gmail.com]<br>
<b>Poslano:</b> 9. svibanj 2016 23:52<br>
<b>Prima:</b> Daniel Sanders; Benjamin Kramer; Zlatko Buljan; llvm-commits@lists.llvm.org<br>
<b>Predmet:</b> Re: [llvm] r268896 - [mips][microMIPS] Implement LWP and SWP instructions<br>
</font><br>
</div>
<div></div>
<div>
<div dir="ltr">Seems fixed. Thanks!</div>
<br>
<div class="gmail_quote">
<div dir="ltr">On Tue, May 10, 2016 at 2:51 AM Daniel Sanders <<a href="mailto:Daniel.Sanders@imgtec.com" target="_blank">Daniel.Sanders@imgtec.com</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
Hi,<br>
<br>
r268938 should fix this. I'll keep an eye on the buildbots for a while in case there's further problems.<br>
________________________________________<br>
From: Daniel Sanders<br>
Sent: 09 May 2016 17:40<br>
To: NAKAMURA Takumi; Benjamin Kramer; Zlatko Buljan; <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">
llvm-commits@lists.llvm.org</a><br>
Subject: RE: [llvm] r268896 - [mips][microMIPS] Implement LWP and SWP instructions<br>
<br>
I see the problem. There's two members of Op->RegIdx that aren't copied in the new version of CreateRegPair().<br>
<br>
From: NAKAMURA Takumi [mailto:<a href="mailto:geek4civic@gmail.com" target="_blank">geek4civic@gmail.com</a>]<br>
Sent: 09 May 2016 17:15<br>
To: Daniel Sanders; Benjamin Kramer; Zlatko Buljan; <a href="mailto:llvm-commits@lists.llvm.org" target="_blank">
llvm-commits@lists.llvm.org</a><br>
Subject: Re: [llvm] r268896 - [mips][microMIPS] Implement LWP and SWP instructions<br>
<br>
It seems this still causes undefined behavior after fixes.<br>
<br>
This is the log with MC/Mips/micromips-loadstore-instructions.s.<br>
==55344== Conditional jump or move depends on uninitialised value(s)<br>
==55344==    at 0x54A6C5: (anonymous namespace)::MipsOperand::addRegPairOperands(llvm::MCInst&, unsigned int) const (MipsAsmParser.cpp:1010)<br>
==55344==    by 0x56A55A: (anonymous namespace)::MipsAsmParser::convertToMCInst(unsigned int, llvm::MCInst&, unsigned int, llvm::SmallVectorImpl<std::unique_ptr<llvm::MCParsedAsmOperand, std::default_delete<llvm::MCParsedAsmOperand> > > const&) (MipsGenAsmMatcher.inc:1306)<br>
==55344==    by 0x577314: (anonymous namespace)::MipsAsmParser::MatchInstructionImpl(llvm::SmallVectorImpl<std::unique_ptr<llvm::MCParsedAsmOperand, std::default_delete<llvm::MCParsedAsmOperand> > > const&, llvm::MCInst&, unsigned long&, bool, unsigned int)
 (MipsGenAsmMatcher.inc:6342)<br>
==55344==    by 0x554808: (anonymous namespace)::MipsAsmParser::MatchAndEmitInstruction(llvm::SMLoc, unsigned int&, llvm::SmallVectorImpl<std::unique_ptr<llvm::MCParsedAsmOperand, std::default_delete<llvm::MCParsedAsmOperand> > >&, llvm::MCStreamer&, unsigned
 long&, bool) (MipsAsmParser.cpp:3671)<br>
==55344==    by 0x84F03C: (anonymous namespace)::AsmParser::parseStatement((anonymous namespace)::ParseStatementInfo&, llvm::MCAsmParserSemaCallback*) (AsmParser.cpp:1838)<br>
==55344==    by 0x848F11: (anonymous namespace)::AsmParser::Run(bool, bool) (AsmParser.cpp:675)<br>
==55344==    by 0x405F2F: AssembleInput(char const*, llvm::Target const*, llvm::SourceMgr&, llvm::MCContext&, llvm::MCStreamer&, llvm::MCAsmInfo&, llvm::MCSubtargetInfo&, llvm::MCInstrInfo&, llvm::MCTargetOptions&) (llvm-mc.cpp:364)<br>
==55344==    by 0x4070D8: main (llvm-mc.cpp:536)<br>
<br>
<br>
On Mon, May 9, 2016 at 10:27 PM Daniel Sanders via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><mailto:<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>>>
 wrote:<br>
> > @@ -4673,9 +4692,9 @@ MipsAsmParser::parseRegisterPair(Operand<br>
> ><br>
> >    SMLoc E = Parser.getTok().getLoc();<br>
> >    MipsOperand &Op = static_cast<MipsOperand &>(*Operands.back());<br>
> > -  unsigned Reg = Op.getGPR32Reg();<br>
> > +<br>
> >    Operands.pop_back();<br>
> > -  Operands.push_back(MipsOperand::CreateRegPair(Reg, S, E, *this));<br>
> > +  Operands.push_back(MipsOperand::CreateRegPair(Op, S, E, *this));<br>
><br>
> There's a use after free here because Op is still bound to<br>
> Operands.back().  I tried to fix in r268901, but it broke tests. Can you take a look?<br>
<br>
I've applied a quick fix for this in r268913. Op is now a copy of the last element so that Op isn't deleted when pop_back() causes std::unique_ptr<MipsOperand> to delete Operands.back().<br>
<br>
I'm not sure why your fix didn't work. It looked ok to me.<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><mailto:<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a></blockquote>
</div>
</div>
</div>
</div>
</body>
</html>