<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div>Yacine,</div><div><br></div>In addition to what Greg said, I am also slightly confused by your FormatManager changes.<div>Two points here:</div><div><br></div><div>1) a regular expression is not really necessary. If I understand the scope of the GCC bug correctly, all we need to do is match the two *exact* strings</div><div>std::vector<std::allocator<bool>> and std::vector<bool, std::allocator<bool>, bool, std::allocator<bool> ></div><div>to catch all cases</div><div>Regexp matching is slower and it is easy to write a regexp that over-reaches and matches more types than we would like to</div><div>If this is a workaround for a bug rather than a necessity, I would rather much keep it as confined as possible, so I would definitely rework in terms of exact matching</div><div><br></div><div>2) It looks like you are removing the summary for a vector of bools entirely. Why?</div><div>You would just need to add the same summary with a new typename to the category, instead your patch at lines 42 and 43 is removing the creation of the summary for std::vector<bool> and I can’t see the replacement</div><div><br></div><div>This is mostly a minor cosmetic issue, and it’s not even enforced consistently in the code, but I tend to add new formatters using Add<i>Formatter </i>calls instead of directly playing with the FormatNavigator objects</div><div>It’s kind of laying groundwork for potentially reworking the way built-in formatters are added to an easier to maintain coding style. I have a couple ideas there, just not enough time to code them :-)</div><div><br></div><div>Thanks for clarifying these data points.</div><div><br></div><div><div>
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div style="font-size: medium; orphans: 2; widows: 2; border-collapse: separate; border-spacing: 0px;"><span style="font-size: 12px; orphans: auto; widows: auto;">Enrico Granata</span><br style="font-size: 12px; orphans: auto; widows: auto;"><span style="font-size: 12px; orphans: auto; widows: auto;">📩 egranata@</span><font color="#ff2600" style="font-size: 12px; orphans: auto; widows: auto;"></font><span style="font-size: 12px; orphans: auto; widows: auto;">.com</span><br style="font-size: 12px; orphans: auto; widows: auto;"><span style="font-size: 12px; orphans: auto; widows: auto;">☎️ 27683</span></div></div></div>
</div>
<br><div><div>On May 15, 2013, at 1:50 PM, Yacine Belkadi <<a href="mailto:yacine.belkadi.1@gmail.com">yacine.belkadi.1@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">Hi,<br><br>When the inferior is built with GCC 4.7.2, the DWARF contains duplicate<br>DW_AT_template_type_param DIEs for std::vector (and others). There is a<br>reported GCC bug about it (<a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54410">http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54410</a>).<br>Because of this, lldb parses the type<br>"std::vector<bool, std::allocator<bool> >" as<br>"std::vector<bool, std::allocator<bool, bool>, bool, std::allocator<bool,<br>bool> >".<br>Later, the FormatManager fails to match this type with the appropriate<br>SyntheticChildrenFrontEnd for std::vector<bool>. The printable<br>representation produced is then the incorrect:<br>(lldb) frame variable vBool<br>(std::vector<bool, std::allocator<bool, bool>, bool, std::allocator<bool,<br>bool> >) vBool = size=0 {}<br><br>I've attached 3 patches (against r181819) for review:<br>- An attempt at a workaround for the GCC bug<br>- A change in the FormatManager to allow "std::vector<bool,<br> std:allocator<bool> >" to be matched to the vector<bool> Synthetic.<br>- The re-enabling of the test case<br><br>Thanks,<br>Yacine<br><br><blockquote type="cite"><a href="http://llvm.org/bugs/show_bug.cgi?id=15301">http://llvm.org/bugs/show_bug.cgi?id=15301</a><br><br>           Bug ID: 15301<br>          Summary: LLDB prints incorrect size of libstdc++ vector<bool><br>                   containers (when inferior built with GCC on Linux)<br>          Product: lldb<br>          Version: unspecified<br>         Hardware: PC<br>               OS: Linux<br>           Status: NEW<br>         Severity: enhancement<br>         Priority: P<br>        Component: All Bugs<br>         Assignee: lldb-dev at<span class="Apple-converted-space"> </span><a href="http://cs.uiuc.edu/">cs.uiuc.edu</a><br>         Reporter: daniel.malea at<span class="Apple-converted-space"> </span><a href="http://intel.com/">intel.com</a><br>   Classification: Unclassified<br><br>In the TestDataFormatterStdVBool, instead of printing the correct size<br>(49) lldb prints -1 for the size of the std::vector<bool> container<br>(libstdc++).<br><br>To reproduce, run:<br><br>python dotest.py<br>functionalities/data-formatter/data-formatter-stl/libstdcpp/vbool -C gcc<br><br>--<span class="Apple-converted-space"> </span><br>You are receiving this mail because:<br>You are the assignee for the bug.<br>-------------- next part --------------<br>An HTML attachment was scrubbed...<br>URL: <<a href="http://lists.cs.uiuc.edu/pipermail/lldb-dev/attachments/20130219/8ff9c75c/attachment-0001.html">http://lists.cs.uiuc.edu/pipermail/lldb-dev/attachments/20130219/8ff9c75c/attachment-0001.html</a>><br></blockquote><br><br><br><br><span><0001-SymbolFile-DWARF-Ignore-duplicate-template-parameter.patch></span><span><0002-FormatManager-Match-std-vector-bool-std-allocator-bo.patch></span><span><0003-Tests-Re-enable-TestDataFormatterStdVBool.py.patch></span>_______________________________________________<br>lldb-dev mailing list<br><a href="mailto:lldb-dev@cs.uiuc.edu">lldb-dev@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev">http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev</a></div></blockquote></div><br></div></body></html>