<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<p style="margin-top:0;margin-bottom:0">Thank you Evgenii and Kostya for replying. </p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">I agree with Evgenii, that the current UBSAN metadata could be optimized, but it seemed to me that allowing minimal runtime with ASAN would be more trivial to implement.</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0"><span style="color: rgb(33, 33, 33); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif, serif, EmojiFont; font-size: 15px;">Evgenii, quick question:</span><br>
</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">> <span style="color: rgb(33, 33, 33); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif, serif, EmojiFont; font-size: 15px;">why the driver rejects -fsanitize-</span><span class="highlight" id="0.4647769620083362" name="searchHitInReadingPane" style="color: rgb(33, 33, 33); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif, serif, EmojiFont; font-size: 15px;">minim</span><span style="color: rgb(33, 33, 33); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif, serif, EmojiFont; font-size: 15px;">al-runtime
 with ASan, because otherwise you are getting all the sanitizer_common stuff in your binary, with demangling and logging redirection and whatnot. I think this is a good property and don't want to change it.</span></p>
<p style="margin-top:0;margin-bottom:0"><span style="color: rgb(33, 33, 33); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif, serif, EmojiFont; font-size: 15px;"><br>
</span></p>
<p style="margin-top:0;margin-bottom:0"><span style="color: rgb(33, 33, 33); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif, serif, EmojiFont; font-size: 15px;">I don't know well how sanitizers interact with each other, but
 would it be possible to persist the current -<span style="color: rgb(33, 33, 33); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif, serif, EmojiFont; font-size: 15px;">fsanitize-</span><span class="highlight" id="0.4647769620083362" name="searchHitInReadingPane" style="color: rgb(33, 33, 33); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif, serif, EmojiFont; font-size: 15px;">minim</span><span style="color: rgb(33, 33, 33); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif, serif, EmojiFont; font-size: 15px;">al-runtime
 behavior when it's used on its own (e.g. no extra <span style="color: rgb(33, 33, 33); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif, serif, EmojiFont; font-size: 15px;">sanitizer_common stuff), but allow ASAN when explicitly
 requested via `-fsanitize=address`? When I remove the restriction in the driver and use the minimal runtime without ASAN I don't see any extra instrumentation/ symbols from<span style="color: rgb(33, 33, 33); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif, serif, EmojiFont; font-size: 15px;">
 sanitizer_common. And it still seems to work. <span style="color: rgb(33, 33, 33); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif, serif, EmojiFont; font-size: 15px;">But I might be missing something.</span></span></span></span></span><span style="color: rgb(33, 33, 33); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif, serif, EmojiFont; font-size: 15px;"> We
 could add a test that no extra stuff is added to the binary by mistake. </span></p>
<p style="margin-top:0;margin-bottom:0"><span style="color: rgb(33, 33, 33); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif, serif, EmojiFont; font-size: 15px;">On the other side wanted to clarify: is the concern here, that
 someone might enable ASAN by mistake and run it in production when only UBSAN minimal runtime was supposed to be used?</span><br>
</p>
<p style="margin-top:0;margin-bottom:0"><span style="color: rgb(33, 33, 33); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif, serif, EmojiFont; font-size: 15px;"><br>
</span></p>
<p style="margin-top:0;margin-bottom:0"><span style="color: rgb(33, 33, 33); font-family: wf_segoe-ui_normal, "Segoe UI", "Segoe WP", Tahoma, Arial, sans-serif, serif, EmojiFont; font-size: 15px;">-- Igor </span></p>
</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Evgenii Stepanov <eugenis@google.com><br>
<b>Sent:</b> Tuesday, October 23, 2018 12:16:26 PM<br>
<b>To:</b> Kostya Serebryany<br>
<b>Cc:</b> Igor Sugak; Vitaly Buka; LLVM Dev<br>
<b>Subject:</b> Re: [llvm-dev] Minimal UBSAN runtime with ASAN?</font>
<div> </div>
</div>
<meta content="text/html; charset=utf-8">
<div>
<div dir="ltr">Hi,
<div><br>
</div>
<div>the idea of minimal ubsan, as mentioned in <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D36810&d=DwMFaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=LlbfLxvkyuVVPfVvG7EAbQ&m=B6nS6QMNtBLIHJFpnUB4mFZz5BLaFz-LK6k9Xg_V820&s=OoxFiPzRMKSoimsFrWit4SY0SjD_J444TekVTv1Dp4I&e=" id="x_gmail-m_-2703485944494862200LPlnk510871" target="_blank" style="color:rgb(17,85,204); font-family:Calibri,Helvetica,sans-serif; font-size:16px; background-color:rgb(255,255,255)">https://reviews.llvm.org/<wbr>D36810</a>,
 is to provide a hardened runtime suitable for production. That's why the driver rejects -fsanitize-minimal-runtime with ASan, because otherwise you are getting all the sanitizer_common stuff in your binary, with demangling and logging redirection and whatnot.
 I think this is a good property and don't want to change it.</div>
<div><br>
</div>
<div>Vptr checker has non-trivial runtime support. It could be implemented in minimal runtime.</div>
<div><br>
</div>
<div>I'm sure there are ways to optimize full ubsan metadata. Some kind of string compression. Relative abi (offsets instead of pointers). Maybe use debug info (ex. instead of emitting file name string to .rodata emit a single byte with debug source location
 of that file/line, and pass a pointer to it to the ubsan handler).</div>
<div><br>
</div>
<div>If not, I guess it would be acceptable to add a flag to skip file path strings and replace them with nullptr in ubsan calls.<br>
<div class="x_gmail_extra"><br>
<div class="x_gmail_quote">On Tue, Oct 23, 2018 at 10:36 AM, Kostya Serebryany <span dir="ltr">
<<a href="mailto:kcc@google.com" target="_blank">kcc@google.com</a>></span> wrote:<br>
<blockquote class="x_gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
<div dir="ltr"><a class="x_gmail_plusreply" id="x_m_-6409544660864251376plusReplyChip-3" href="mailto:eugenis@google.com" target="_blank">+Evgeniy Stepanov</a> <a class="x_gmail_plusreply" id="x_m_-6409544660864251376plusReplyChip-4" href="mailto:vitalybuka@google.com" target="_blank">+Vitaly
 Buka</a> <br>
<div><br>
</div>
<div>Hi Igor, </div>
<div>yes, please send the patches for the clang driver and compiler-rt.</div>
<div>It might require some refactoring to get minimal ubsan-rt working with asan. </div>
<div><br>
</div>
<div>As for vptr UBSAN: I guess that vptr checking does actually require very non-trivial run-time support and is not included into the minimal one.  </div>
<div><br>
</div>
</div>
<br>
<div class="x_gmail_quote">
<div>
<div class="x_h5">
<div dir="ltr">On Sun, Oct 21, 2018 at 11:46 AM Igor Sugak via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
</div>
</div>
</div>
<blockquote class="x_gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
<div>
<div class="x_h5">
<div dir="ltr">
<div id="x_m_-6409544660864251376m_1899074660806550434divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Helvetica,sans-serif">
<p style="margin-top:0; margin-bottom:0">Hello, </p>
<p style="margin-top:0; margin-bottom:0"><br>
</p>
<p style="margin-top:0; margin-bottom:0">In my organization, we've been using ASAN and most of UBSAN checks in the default developers mode with a big success. I'd like to enable a few remaining UBSAN checks too but noticed that they cause significant (up to
 2x in some cases) binary size overhead (mostly .rodata and .data). These checks are: null, function, vptr, object-size.  </p>
<p style="margin-top:0; margin-bottom:0"><br>
</p>
<p style="margin-top:0; margin-bottom:0">Inspecting .rodata, it looks like there are a lot of strings with file and type names. <span style="font-size:12pt">I tried to use `<span>-fsanitize-undefined-strip-<wbr>path-components=-1` from [1]. It appeared to have
 no effect when `-fsanitize=function` and `-fsanitize=address` are used at the same time (filed bug [2]). Disabling `-fsanitize=function` and using  <span style="font-family:Calibri,Helvetica,sans-serif,Helvetica,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px">`</span><span style="font-family:Calibri,Helvetica,sans-serif,Helvetica,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols; font-size:16px">-fsanitize-undefined-<wbr>strip-path-components=-1`
 reduces the size overhead to 1.4x. </span></span></span>This is quite already significant.</p>
<p style="margin-top:0; margin-bottom:0"><br>
</p>
<p style="margin-top:0; margin-bottom:0">I've considered -fsanitize=trap, it causes very little size overhead but it in some cases is hard to work with. </p>
<p style="margin-top:0; margin-bottom:0"><br>
</p>
<p style="margin-top:0; margin-bottom:0">I noticed that [3] added minimal runtime for UBSAN. It works similar to `<span>-fsanitize-trap`, but prints a bit more informative message, which would suffice. Out of the box, I didn't notice a measurable binary size
 reduction as mentioned on that change, but if used with `<span>-fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,--print-gc-sections`, the size bloat of .rodata and .data is almost eliminated. Note, in this case, those flags don't help without `-<span>fsanitize-minimal-runtime`.</span></span></span></p>
<p style="margin-top:0; margin-bottom:0"><span><span><span><br>
</span></span></span></p>
<p style="margin-top:0; margin-bottom:0"><span><span><span>Unfortunately, there is a restriction in the driver preventing this minimal UBSAN runtime to be used when ASAN is also enabled. I don't completely understand the reasons for having this restriction.
 When I removed that restriction, both ASAN and UBSAN still seem functioning in my tests. </span></span></span></p>
<p style="margin-top:0; margin-bottom:0"><span><span><span><br>
</span></span></span></p>
<p style="margin-top:0; margin-bottom:0"><span><span><span>I'd like to allow using minimal UBSAN runtime with ASAN. Are there reasons against it? I'd volunteer to do the work here.</span></span></span></p>
<p style="margin-top:0; margin-bottom:0"><span><span><span><br>
</span></span></span></p>
<p style="margin-top:0; margin-bottom:0"><span><span><span>Also, v<span>ptr UBSAN check is disallowed when minimal UBSAN runtime is used. Would someone clarify why?</span></span></span></span></p>
<p style="margin-top:0; margin-bottom:0"><span><span><span><span><br>
</span></span></span></span></p>
<p style="margin-top:0; margin-bottom:0">-- Igor</p>
<p style="margin-top:0; margin-bottom:0"><br>
</p>
<p style="margin-top:0; margin-bottom:0"></p>
<p style="margin-top:0; margin-bottom:0"><br>
</p>
<p style="margin-top:0; margin-bottom:0"><br>
</p>
<p style="margin-top:0; margin-bottom:0"></p>
<ol style="margin-bottom:0px; margin-top:0px">
<li><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__clang.llvm.org_docs_UndefinedBehaviorSanitizer.html-23additional-2Dconfiguration&d=DwMFaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=LlbfLxvkyuVVPfVvG7EAbQ&m=B6nS6QMNtBLIHJFpnUB4mFZz5BLaFz-LK6k9Xg_V820&s=DPCdDpcqmxT31ioyUc8tkt9IzuaythTgtHy3gq6GY7s&e=" id="x_m_-6409544660864251376m_1899074660806550434LPlnk224361" target="_blank">https://clang.llvm.org/docs/<wbr>UndefinedBehaviorSanitizer.<wbr>html#additional-configuration</a></li><li><span style="font-size:12pt"></span><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__bugs.llvm.org_show-5Fbug.cgi-3Fid-3D39347&d=DwMFaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=LlbfLxvkyuVVPfVvG7EAbQ&m=B6nS6QMNtBLIHJFpnUB4mFZz5BLaFz-LK6k9Xg_V820&s=ibWS5KSGjcy1bD2F_zbhgIGXH8ZPoQ2XZlXbq9crzJ8&e=" id="x_m_-6409544660864251376m_1899074660806550434LPlnk663307" target="_blank">https://bugs.llvm.org/show_<wbr>bug.cgi?id=39347</a></li><li><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D36810&d=DwMFaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=LlbfLxvkyuVVPfVvG7EAbQ&m=B6nS6QMNtBLIHJFpnUB4mFZz5BLaFz-LK6k9Xg_V820&s=OoxFiPzRMKSoimsFrWit4SY0SjD_J444TekVTv1Dp4I&e=" id="x_m_-6409544660864251376m_1899074660806550434LPlnk471537" target="_blank">https://reviews.llvm.org/<wbr>D36810</a>
<div id="x_m_-6409544660864251376m_1899074660806550434LPBorder_GT_15399093196730.2558932204692528" style="margin-bottom:20px; overflow:auto; width:100%; text-indent:0px">
<table id="x_m_-6409544660864251376m_1899074660806550434LPContainer_15399093196720.2638047386862139" cellspacing="0" style="width:90%; background-color:rgb(255,255,255); overflow:auto; padding-top:20px; padding-bottom:20px; margin-top:20px; border-top:1px dotted rgb(200,200,200); border-bottom:1px dotted rgb(200,200,200)">
<tbody>
<tr valign="top" style="border-spacing:0px">
<td id="x_m_-6409544660864251376m_1899074660806550434TextCell_15399093196720.6118055161042004" colspan="2" style="vertical-align:top; padding:0px; display:table-cell">
<div id="x_m_-6409544660864251376m_1899074660806550434LPRemovePreviewContainer_15399093196720.4167337012904666">
</div>
<div id="x_m_-6409544660864251376m_1899074660806550434LPTitle_15399093196720.6843494300108914" style="color:rgb(93,178,255); font-weight:400; font-size:21px; font-family:wf_segoe-ui_light,"Segoe UI Light","Segoe WP Light","Segoe UI","Segoe WP",Tahoma,Arial,sans-serif; line-height:21px">
<a id="x_m_-6409544660864251376m_1899074660806550434LPUrlAnchor_15399093196720.8406941018844281" href="https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D36810&d=DwMFaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=LlbfLxvkyuVVPfVvG7EAbQ&m=B6nS6QMNtBLIHJFpnUB4mFZz5BLaFz-LK6k9Xg_V820&s=OoxFiPzRMKSoimsFrWit4SY0SjD_J444TekVTv1Dp4I&e=" target="_blank" style="text-decoration:none">D36810
 Minimal runtime for UBSan. - LLVM</a></div>
<div id="x_m_-6409544660864251376m_1899074660806550434LPMetadata_15399093196720.14031362546793513" style="margin:10px 0px 16px; color:rgb(102,102,102); font-weight:400; font-family:wf_segoe-ui_normal,"Segoe UI","Segoe WP",Tahoma,Arial,sans-serif; font-size:14px; line-height:14px">
<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org&d=DwMFaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=LlbfLxvkyuVVPfVvG7EAbQ&m=B6nS6QMNtBLIHJFpnUB4mFZz5BLaFz-LK6k9Xg_V820&s=LE0948abElRS9otLzWRCtlAKydAQBZWonBhN3X2v_zY&e=" target="_blank">reviews.llvm.org</a></div>
<div id="x_m_-6409544660864251376m_1899074660806550434LPDescription_15399093196730.44365991749594613" style="display:block; color:rgb(102,102,102); font-weight:400; font-family:wf_segoe-ui_normal,"Segoe UI","Segoe WP",Tahoma,Arial,sans-serif; font-size:14px; line-height:20px; max-height:100px; overflow:hidden">
Not worried about that. If it allocates or prints too much, we can add in a custom allocator or printing strategy. If it requires too much metadata to be inserted into user programs, we can devise a new, smaller encoding for the metadata.</div>
</td>
</tr>
</tbody>
</table>
</div>
<br>
<br>
<br>
</li></ol>
<p></p>
<p style="margin-top:0; margin-bottom:0"><br>
</p>
<p style="margin-top:0; margin-bottom:0"><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D36810&d=DwMFaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=LlbfLxvkyuVVPfVvG7EAbQ&m=B6nS6QMNtBLIHJFpnUB4mFZz5BLaFz-LK6k9Xg_V820&s=OoxFiPzRMKSoimsFrWit4SY0SjD_J444TekVTv1Dp4I&e=" id="x_m_-6409544660864251376m_1899074660806550434LPlnk510871" target="_blank">https://reviews.llvm.org/<wbr>D36810</a></p>
<div id="x_m_-6409544660864251376m_1899074660806550434LPBorder_GT_15399077390180.4556167263663371" style="margin-bottom:20px; overflow:auto; width:100%; text-indent:0px">
<table id="x_m_-6409544660864251376m_1899074660806550434LPContainer_15399077390150.3628391387566361" cellspacing="0" style="width:90%; background-color:rgb(255,255,255); overflow:auto; padding-top:20px; padding-bottom:20px; margin-top:20px; border-top:1px dotted rgb(200,200,200); border-bottom:1px dotted rgb(200,200,200)">
<tbody>
<tr valign="top" style="border-spacing:0px">
<td id="x_m_-6409544660864251376m_1899074660806550434TextCell_15399077390170.9356204513907331" colspan="2" style="vertical-align:top; padding:0px; display:table-cell">
<div id="x_m_-6409544660864251376m_1899074660806550434LPRemovePreviewContainer_15399077390170.15590685974231056">
<a id="x_m_-6409544660864251376m_1899074660806550434LPlnk536017" style="font-family:wf_segoe-ui_normal,"Segoe UI","Segoe WP",Tahoma,Arial,sans-serif; font-weight:normal; padding:8px; float:right; color:rgb(102,102,102); background-color:rgb(238,247,255); margin-left:10px"></a></div>
<div id="x_m_-6409544660864251376m_1899074660806550434LPTitle_15399077390170.8512445827367043" style="color:rgb(93,178,255); font-weight:400; font-size:21px; font-family:wf_segoe-ui_light,"Segoe UI Light","Segoe WP Light","Segoe UI","Segoe WP",Tahoma,Arial,sans-serif; line-height:21px">
<a id="x_m_-6409544660864251376m_1899074660806550434LPUrlAnchor_15399077390170.8827673418982735" href="https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D36810&d=DwMFaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=LlbfLxvkyuVVPfVvG7EAbQ&m=B6nS6QMNtBLIHJFpnUB4mFZz5BLaFz-LK6k9Xg_V820&s=OoxFiPzRMKSoimsFrWit4SY0SjD_J444TekVTv1Dp4I&e=" target="_blank" style="text-decoration:none">D36810
 Minimal runtime for UBSan. - LLVM</a></div>
<div id="x_m_-6409544660864251376m_1899074660806550434LPMetadata_15399077390170.34360392979186627" style="margin:10px 0px 16px; color:rgb(102,102,102); font-weight:400; font-family:wf_segoe-ui_normal,"Segoe UI","Segoe WP",Tahoma,Arial,sans-serif; font-size:14px; line-height:14px">
<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__reviews.llvm.org&d=DwMFaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=LlbfLxvkyuVVPfVvG7EAbQ&m=B6nS6QMNtBLIHJFpnUB4mFZz5BLaFz-LK6k9Xg_V820&s=LE0948abElRS9otLzWRCtlAKydAQBZWonBhN3X2v_zY&e=" target="_blank">reviews.llvm.org</a></div>
<div id="x_m_-6409544660864251376m_1899074660806550434LPDescription_15399077390180.6919949750220125" style="display:block; color:rgb(102,102,102); font-weight:400; font-family:wf_segoe-ui_normal,"Segoe UI","Segoe WP",Tahoma,Arial,sans-serif; font-size:14px; line-height:20px; max-height:100px; overflow:hidden">
Not worried about that. If it allocates or prints too much, we can add in a custom allocator or printing strategy. If it requires too much metadata to be inserted into user programs, we can devise a new, smaller encoding for the metadata.</div>
</td>
</tr>
</tbody>
</table>
</div>
<br>
<br>
<p></p>
</div>
</div>
</div>
</div>
______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Ddev&d=DwMFaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=LlbfLxvkyuVVPfVvG7EAbQ&m=B6nS6QMNtBLIHJFpnUB4mFZz5BLaFz-LK6k9Xg_V820&s=q4pAYGJxXz5Z_BKROCu-vmYhA0zyAaNJvW3hXZwTby4&e=" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
</blockquote>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div>
</body>
</html>