[Lldb-commits] [PATCH] Fix tests broken by OptionValidator changes.

Zachary Turner zturner at google.com
Tue Jul 8 20:40:43 PDT 2014


Fixes the rest of the test failures.  These were tricky to catch because they were surfacing as core dumps, and when a test core dumps it does not generate a test log file.  This needs to be fixed in the test suite separately.

http://reviews.llvm.org/D4425

Files:
  source/Host/common/OptionParser.cpp
  source/Interpreter/OptionGroupBoolean.cpp
  source/Interpreter/OptionGroupFile.cpp
  source/Interpreter/OptionGroupString.cpp
  source/Interpreter/OptionGroupUInt64.cpp

Index: source/Host/common/OptionParser.cpp
===================================================================
--- source/Host/common/OptionParser.cpp
+++ source/Host/common/OptionParser.cpp
@@ -9,6 +9,9 @@
 
 #include "lldb/Host/OptionParser.h"
 #include "lldb/Host/HostGetOpt.h"
+#include "lldb/lldb-private-types.h"
+
+#include <vector>
 
 using namespace lldb_private;
 
@@ -36,7 +39,19 @@
                      const Option *longopts,
                      int *longindex)
 {
-    return getopt_long_only(argc, argv, optstring, (const option*)longopts, longindex);
+    std::vector<option> opts;
+    while (longopts->definition != nullptr)
+    {
+        option opt;
+        opt.flag = longopts->flag;
+        opt.val = longopts->val;
+        opt.name = longopts->definition->long_option;
+        opt.has_arg = longopts->definition->option_has_arg;
+        opts.push_back(opt);
+        ++longopts;
+    }
+    opts.push_back(option());
+    return getopt_long_only(argc, argv, optstring, &opts[0], longindex);
 }
 
 char*
Index: source/Interpreter/OptionGroupBoolean.cpp
===================================================================
--- source/Interpreter/OptionGroupBoolean.cpp
+++ source/Interpreter/OptionGroupBoolean.cpp
@@ -30,6 +30,7 @@
     m_option_definition.required = required;
     m_option_definition.long_option = long_option;
     m_option_definition.short_option = short_option;
+    m_option_definition.validator = nullptr;
     m_option_definition.option_has_arg = no_argument_toggle_default ? OptionParser::eNoArgument : OptionParser::eRequiredArgument;
     m_option_definition.enum_values = nullptr;
     m_option_definition.completion_type = 0;
Index: source/Interpreter/OptionGroupFile.cpp
===================================================================
--- source/Interpreter/OptionGroupFile.cpp
+++ source/Interpreter/OptionGroupFile.cpp
@@ -30,6 +30,7 @@
     m_option_definition.required = required;
     m_option_definition.long_option = long_option;
     m_option_definition.short_option = short_option;
+    m_option_definition.validator = nullptr;
     m_option_definition.option_has_arg = OptionParser::eRequiredArgument;
     m_option_definition.enum_values = nullptr;
     m_option_definition.completion_type = completion_type;
@@ -70,6 +71,7 @@
     m_option_definition.required = required;
     m_option_definition.long_option = long_option;
     m_option_definition.short_option = short_option;
+    m_option_definition.validator = nullptr;
     m_option_definition.option_has_arg = OptionParser::eRequiredArgument;
     m_option_definition.enum_values = nullptr;
     m_option_definition.completion_type = completion_type;
Index: source/Interpreter/OptionGroupString.cpp
===================================================================
--- source/Interpreter/OptionGroupString.cpp
+++ source/Interpreter/OptionGroupString.cpp
@@ -31,6 +31,7 @@
     m_option_definition.required = required;
     m_option_definition.long_option = long_option;
     m_option_definition.short_option = short_option;
+    m_option_definition.validator = nullptr;
     m_option_definition.option_has_arg = OptionParser::eRequiredArgument;
     m_option_definition.enum_values = nullptr;
     m_option_definition.completion_type = completion_type;
Index: source/Interpreter/OptionGroupUInt64.cpp
===================================================================
--- source/Interpreter/OptionGroupUInt64.cpp
+++ source/Interpreter/OptionGroupUInt64.cpp
@@ -31,6 +31,7 @@
     m_option_definition.required = required;
     m_option_definition.long_option = long_option;
     m_option_definition.short_option = short_option;
+    m_option_definition.validator = nullptr;
     m_option_definition.option_has_arg = OptionParser::eRequiredArgument;
     m_option_definition.enum_values = nullptr;
     m_option_definition.completion_type = completion_type;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D4425.11180.patch
Type: text/x-patch
Size: 3894 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20140709/6b503c0b/attachment.bin>


More information about the lldb-commits mailing list