<div dir="ltr">Sorry, for people that don't use Phab and prefer to do email reviews instead, I messed up by not including the list in the original email.  So I'm attaching the patch directly to this mail along with the original description:<div>
<br></div><div>----</div><div><br></div><div><span style="font-family:arial,sans-serif;font-size:13px">Hi tfiala,</span><br style="font-family:arial,sans-serif;font-size:13px"><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">Fix tests broken by the OptionValidator changes.</span><br style="font-family:arial,sans-serif;font-size:13px"><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">The getopt library has a structure called option (lowercase).  We have a structure called Option (uppercase).  previously the two structures had exactly the same definitions, and we were doing a C-style cast of an Option* to an option*.  C-style casts don't bother to warn you when you cast to unrelated types, but in the original OptionValidator patch I modified the definition of Option.</span><br style="font-family:arial,sans-serif;font-size:13px">
<br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">This patch fixes the errors by building an array of option structures and filling it out the correct way before passing it to the getopt library.</span><br style="font-family:arial,sans-serif;font-size:13px">
<br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">Note: So that the focus remains on the fix for the test failures, this patch does not include all the content of the original patch which was reverted.  If this change is approved, it will go in as a single commit consisting of the original path (which has been reverted) combined with this patch.</span><br style="font-family:arial,sans-serif;font-size:13px">
<br style="font-family:arial,sans-serif;font-size:13px"><a href="http://reviews.llvm.org/D4425" target="_blank" style="font-family:arial,sans-serif;font-size:13px">http://reviews.llvm.org/D4425</a><br style="font-family:arial,sans-serif;font-size:13px">
<br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">Files:</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">  source/Host/common/</span><span style="font-family:arial,sans-serif;font-size:13px">OptionParser.cpp</span><br style="font-family:arial,sans-serif;font-size:13px">
<br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">Index: source/Host/common/</span><span style="font-family:arial,sans-serif;font-size:13px">OptionParser.cpp</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">==============================</span><span style="font-family:arial,sans-serif;font-size:13px">==============================</span><span style="font-family:arial,sans-serif;font-size:13px">=======</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">--- source/Host/common/</span><span style="font-family:arial,sans-serif;font-size:13px">OptionParser.cpp</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">+++ source/Host/common/</span><span style="font-family:arial,sans-serif;font-size:13px">OptionParser.cpp</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">@@ -9,6 +9,9 @@</span><br style="font-family:arial,sans-serif;font-size:13px"><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px"> #include "lldb/Host/OptionParser.h"</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px"> #include "lldb/Host/HostGetOpt.h"</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">+#include "lldb/lldb-private-types.h"</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">+</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">+#include <vector></span><br style="font-family:arial,sans-serif;font-size:13px">
<br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px"> using namespace lldb_private;</span><br style="font-family:arial,sans-serif;font-size:13px"><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">@@ -36,7 +39,19 @@</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">                      const Option *longopts,</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">                      int *longindex)</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px"> {</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">-    return getopt_long_only(argc, argv, optstring, (const option*)longopts, longindex);</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">+    std::vector<option> opts;</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">+    while (longopts->definition != nullptr)</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">+    {</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">+        option opt;</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">+        opt.flag = longopts->flag;</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">+        opt.val = longopts->val;</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">+        </span><a href="http://opt.name/" target="_blank" style="font-family:arial,sans-serif;font-size:13px">opt.name</a><span style="font-family:arial,sans-serif;font-size:13px"> = longopts->definition->long_</span><span style="font-family:arial,sans-serif;font-size:13px">option;</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">+        opt.has_arg = longopts->definition->option_</span><span style="font-family:arial,sans-serif;font-size:13px">has_arg;</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">+        opts.push_back(opt);</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">+        ++longopts;</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">+    }</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">+    opts.push_back(option());</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">+    return getopt_long_only(argc, argv, optstring, &opts[0], longindex);</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px"> }</span><br style="font-family:arial,sans-serif;font-size:13px">
<br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px"> char*</span><br></div><div class="gmail_extra"><br></div></div>