[Lldb-commits] [lldb] r287631 - Fix build failure on Linux and BSD by reverting r287597

Hal Finkel via lldb-commits lldb-commits at lists.llvm.org
Tue Nov 22 04:09:42 PST 2016


----- Original Message -----
> From: "Omair Javaid via lldb-commits" <lldb-commits at lists.llvm.org>
> To: lldb-commits at lists.llvm.org
> Sent: Tuesday, November 22, 2016 3:47:01 AM
> Subject: [Lldb-commits] [lldb] r287631 - Fix build failure on Linux and BSD	by reverting r287597
> 
> Author: omjavaid
> Date: Tue Nov 22 03:47:00 2016
> New Revision: 287631
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=287631&view=rev
> Log:
> Fix build failure on Linux and BSD by reverting r287597
> 
> Linux and BSD builds failing after this changes from rev 287597.

Thanks. For me at least, it looked like this:

/src/llvm/tools/lldb/include/lldb/Interpreter/Args.h:155:3: error: 'auto' return without trailing return type; deduced return types are a C++14 extension
  auto begin() const { return m_entries.begin(); }
  ^
/src/llvm/tools/lldb/include/lldb/Interpreter/Args.h:156:3: error: 'auto' return without trailing return type; deduced return types are a C++14 extension
  auto end() const { return m_entries.end(); }
  ^
/src/llvm/tools/lldb/include/lldb/Interpreter/Args.h:155:31: error: no viable conversion from returned value of type 'const_iterator' (aka '__normal_iterator<const lldb_private::Args::ArgEntry *, std::vector<lldb_private::Args::ArgEntry, std::allocator<lldb_private::Args::ArgEntry> > >') to function return type 'int'
  auto begin() const { return m_entries.begin(); }
                              ^~~~~~~~~~~~~~~~~
/src/llvm/tools/lldb/include/lldb/Interpreter/Args.h:156:29: error: no viable conversion from returned value of type 'const_iterator' (aka '__normal_iterator<const lldb_private::Args::ArgEntry *, std::vector<lldb_private::Args::ArgEntry, std::allocator<lldb_private::Args::ArgEntry> > >') to function return type 'int'
  auto end() const { return m_entries.end(); }
                            ^~~~~~~~~~~~~~~

 -Hal

> 
> 
> Modified:
>     lldb/trunk/include/lldb/Interpreter/Args.h
>     lldb/trunk/source/Breakpoint/BreakpointIDList.cpp
>     lldb/trunk/source/Commands/CommandObjectCommands.cpp
>     lldb/trunk/source/Commands/CommandObjectFrame.cpp
>     lldb/trunk/source/Commands/CommandObjectProcess.cpp
>     lldb/trunk/source/Commands/CommandObjectSettings.cpp
>     lldb/trunk/source/Interpreter/CommandInterpreter.cpp
>     lldb/trunk/source/Interpreter/OptionValueDictionary.cpp
> 
> Modified: lldb/trunk/include/lldb/Interpreter/Args.h
> URL:
> http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Interpreter/Args.h?rev=287631&r1=287630&r2=287631&view=diff
> ==============================================================================
> --- lldb/trunk/include/lldb/Interpreter/Args.h (original)
> +++ lldb/trunk/include/lldb/Interpreter/Args.h Tue Nov 22 03:47:00
> 2016
> @@ -150,13 +150,8 @@ public:
>    const char *GetArgumentAtIndex(size_t idx) const;
>  
>    llvm::ArrayRef<ArgEntry> entries() const { return m_entries; }
> -  char GetArgumentQuoteCharAtIndex(size_t idx) const;
> -
> -  auto begin() const { return m_entries.begin(); }
> -  auto end() const { return m_entries.end(); }
>  
> -  size_t size() const { return GetArgumentCount(); }
> -  const ArgEntry &operator[](size_t n) const { return m_entries[n];
> }
> +  char GetArgumentQuoteCharAtIndex(size_t idx) const;
>  
>    //------------------------------------------------------------------
>    /// Gets the argument vector.
> 
> Modified: lldb/trunk/source/Breakpoint/BreakpointIDList.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Breakpoint/BreakpointIDList.cpp?rev=287631&r1=287630&r2=287631&view=diff
> ==============================================================================
> --- lldb/trunk/source/Breakpoint/BreakpointIDList.cpp (original)
> +++ lldb/trunk/source/Breakpoint/BreakpointIDList.cpp Tue Nov 22
> 03:47:00 2016
> @@ -122,12 +122,13 @@ void BreakpointIDList::FindAndReplaceIDR
>    llvm::StringRef range_from;
>    llvm::StringRef range_to;
>    llvm::StringRef current_arg;
> +  const size_t num_old_args = old_args.GetArgumentCount();
>    std::set<std::string> names_found;
>  
> -  for (size_t i = 0; i < old_args.size(); ++i) {
> +  for (size_t i = 0; i < num_old_args; ++i) {
>      bool is_range = false;
>  
> -    current_arg = old_args[i].ref;
> +    current_arg = old_args.GetArgumentAtIndex(i);
>      if (!allow_locations && current_arg.contains('.')) {
>        result.AppendErrorWithFormat(
>            "Breakpoint locations not allowed, saw location: %s.",
> @@ -151,17 +152,19 @@ void BreakpointIDList::FindAndReplaceIDR
>          return;
>        } else
>          names_found.insert(current_arg);
> -    } else if ((i + 2 < old_args.size()) &&
> -               BreakpointID::IsRangeIdentifier(old_args[i + 1].ref)
> &&
> +    } else if ((i + 2 < num_old_args) &&
> +               BreakpointID::IsRangeIdentifier(
> +                   old_args.GetArgumentAtIndex(i + 1)) &&
>                 BreakpointID::IsValidIDExpression(current_arg) &&
> -               BreakpointID::IsValidIDExpression(old_args[i +
> 2].ref)) {
> +               BreakpointID::IsValidIDExpression(
> +                   old_args.GetArgumentAtIndex(i + 2))) {
>        range_from = current_arg;
> -      range_to = old_args[i + 2].ref;
> +      range_to = old_args.GetArgumentAtIndex(i + 2);
>        is_range = true;
>        i = i + 2;
>      } else {
>        // See if user has specified id.*
> -      llvm::StringRef tmp_str = old_args[i].ref;
> +      llvm::StringRef tmp_str = old_args.GetArgumentAtIndex(i);
>        size_t pos = tmp_str.find('.');
>        if (pos != llvm::StringRef::npos) {
>          llvm::StringRef bp_id_str = tmp_str.substr(0, pos);
> 
> Modified: lldb/trunk/source/Commands/CommandObjectCommands.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectCommands.cpp?rev=287631&r1=287630&r2=287631&view=diff
> ==============================================================================
> --- lldb/trunk/source/Commands/CommandObjectCommands.cpp (original)
> +++ lldb/trunk/source/Commands/CommandObjectCommands.cpp Tue Nov 22
> 03:47:00 2016
> @@ -1476,12 +1476,12 @@ public:
>                                 int match_start_point, int
>                                 max_return_elements,
>                                 bool &word_complete,
>                                 StringList &matches) override {
> -    llvm::StringRef completion_str = input[cursor_index].ref;
> -    completion_str =
> completion_str.take_front(cursor_char_position);
> +    std::string
> completion_str(input.GetArgumentAtIndex(cursor_index));
> +    completion_str.erase(cursor_char_position);
>  
>      CommandCompletions::InvokeCommonCompletionCallbacks(
>          GetCommandInterpreter(),
>          CommandCompletions::eDiskFileCompletion,
> -        completion_str, match_start_point, max_return_elements,
> nullptr,
> +        completion_str.c_str(), match_start_point,
> max_return_elements, nullptr,
>          word_complete, matches);
>      return matches.GetSize();
>    }
> 
> Modified: lldb/trunk/source/Commands/CommandObjectFrame.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectFrame.cpp?rev=287631&r1=287630&r2=287631&view=diff
> ==============================================================================
> --- lldb/trunk/source/Commands/CommandObjectFrame.cpp (original)
> +++ lldb/trunk/source/Commands/CommandObjectFrame.cpp Tue Nov 22
> 03:47:00 2016
> @@ -473,12 +473,12 @@ public:
>                                 bool &word_complete,
>                                 StringList &matches) override {
>      // Arguments are the standard source file completer.
> -    auto completion_str = input[cursor_index].ref;
> -    completion_str =
> completion_str.take_front(cursor_char_position);
> +    std::string
> completion_str(input.GetArgumentAtIndex(cursor_index));
> +    completion_str.erase(cursor_char_position);
>  
>      CommandCompletions::InvokeCommonCompletionCallbacks(
>          GetCommandInterpreter(),
>          CommandCompletions::eVariablePathCompletion,
> -        completion_str, match_start_point, max_return_elements,
> nullptr,
> +        completion_str.c_str(), match_start_point,
> max_return_elements, nullptr,
>          word_complete, matches);
>      return matches.GetSize();
>    }
> 
> Modified: lldb/trunk/source/Commands/CommandObjectProcess.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectProcess.cpp?rev=287631&r1=287630&r2=287631&view=diff
> ==============================================================================
> --- lldb/trunk/source/Commands/CommandObjectProcess.cpp (original)
> +++ lldb/trunk/source/Commands/CommandObjectProcess.cpp Tue Nov 22
> 03:47:00 2016
> @@ -1558,8 +1558,9 @@ protected:
>      int num_signals_set = 0;
>  
>      if (num_args > 0) {
> -      for (const auto &arg : signal_args) {
> -        int32_t signo =
> signals_sp->GetSignalNumberFromName(arg.c_str());
> +      for (size_t i = 0; i < num_args; ++i) {
> +        int32_t signo = signals_sp->GetSignalNumberFromName(
> +            signal_args.GetArgumentAtIndex(i));
>          if (signo != LLDB_INVALID_SIGNAL_NUMBER) {
>            // Casting the actions as bools here should be okay,
>            because
>            // VerifyCommandOptionValue guarantees
> @@ -1575,7 +1576,7 @@ protected:
>            ++num_signals_set;
>          } else {
>            result.AppendErrorWithFormat("Invalid signal name '%s'\n",
> -                                       arg.c_str());
> +
>                                       signal_args.GetArgumentAtIndex(i));
>          }
>        }
>      } else {
> 
> Modified: lldb/trunk/source/Commands/CommandObjectSettings.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectSettings.cpp?rev=287631&r1=287630&r2=287631&view=diff
> ==============================================================================
> --- lldb/trunk/source/Commands/CommandObjectSettings.cpp (original)
> +++ lldb/trunk/source/Commands/CommandObjectSettings.cpp Tue Nov 22
> 03:47:00 2016
> @@ -293,10 +293,15 @@ protected:
>    bool DoExecute(Args &args, CommandReturnObject &result) override {
>      result.SetStatus(eReturnStatusSuccessFinishResult);
>  
> +    const size_t argc = args.GetArgumentCount();
>      if (!args.empty()) {
> -      for (const auto &arg : args) {
> +      // TODO: Convert this to StringRef based enumeration.
>  Requires converting
> +      // DumpPropertyValue first.
> +      for (size_t i = 0; i < argc; ++i) {
> +        const char *property_path = args.GetArgumentAtIndex(i);
> +
>          Error error(m_interpreter.GetDebugger().DumpPropertyValue(
> -            &m_exe_ctx, result.GetOutputStream(), arg.ref,
> +            &m_exe_ctx, result.GetOutputStream(), property_path,
>              OptionValue::eDumpGroupValue));
>          if (error.Success()) {
>            result.GetOutputStream().EOL();
> 
> Modified: lldb/trunk/source/Interpreter/CommandInterpreter.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/CommandInterpreter.cpp?rev=287631&r1=287630&r2=287631&view=diff
> ==============================================================================
> --- lldb/trunk/source/Interpreter/CommandInterpreter.cpp (original)
> +++ lldb/trunk/source/Interpreter/CommandInterpreter.cpp Tue Nov 22
> 03:47:00 2016
> @@ -1859,8 +1859,9 @@ int CommandInterpreter::HandleCompletion
>      // put an empty string in element 0.
>      std::string command_partial_str;
>      if (cursor_index >= 0)
> -      command_partial_str =
> -
>          parsed_line[cursor_index].ref.take_front(cursor_char_position);
> +
>      command_partial_str.assign(parsed_line.GetArgumentAtIndex(cursor_index),
> +
>                                 parsed_line.GetArgumentAtIndex(cursor_index)
> +
> +                                     cursor_char_position);
>  
>      std::string common_prefix;
>      matches.LongestCommonPrefix(common_prefix);
> @@ -1871,7 +1872,7 @@ int CommandInterpreter::HandleCompletion
>      // Only do this if the completer told us this was a complete
>      word,
>      // however...
>      if (num_command_matches == 1 && word_complete) {
> -      char quote_char = parsed_line[cursor_index].quote;
> +      char quote_char =
> parsed_line.GetArgumentQuoteCharAtIndex(cursor_index);
>        common_prefix =
>            Args::EscapeLLDBCommandArgument(common_prefix,
>            quote_char);
>        if (quote_char != '\0')
> 
> Modified: lldb/trunk/source/Interpreter/OptionValueDictionary.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValueDictionary.cpp?rev=287631&r1=287630&r2=287631&view=diff
> ==============================================================================
> --- lldb/trunk/source/Interpreter/OptionValueDictionary.cpp
> (original)
> +++ lldb/trunk/source/Interpreter/OptionValueDictionary.cpp Tue Nov
> 22 03:47:00 2016
> @@ -101,74 +101,73 @@ Error OptionValueDictionary::SetArgs(con
>    case eVarSetOperationAppend:
>    case eVarSetOperationReplace:
>    case eVarSetOperationAssign:
> -    if (argc == 0) {
> -      error.SetErrorString(
> -          "assign operation takes one or more key=value arguments");
> -      return error;
> -    }
> -    for (const auto &entry : args) {
> -      if (entry.ref.empty()) {
> -        error.SetErrorString("empty argument");
> -        return error;
> -      }
> -      if (!entry.ref.contains('=')) {
> -        error.SetErrorString(
> -            "assign operation takes one or more key=value
> arguments");
> -        return error;
> -      }
> -
> -      llvm::StringRef key, value;
> -      std::tie(key, value) = entry.ref.split('=');
> -      bool key_valid = false;
> -      if (key.empty()) {
> -        error.SetErrorString("empty dictionary key");
> -        return error;
> -      }
> +    if (argc > 0) {
> +      for (size_t i = 0; i < argc; ++i) {
> +        llvm::StringRef key_and_value(args.GetArgumentAtIndex(i));
> +        if (!key_and_value.empty()) {
> +          if (key_and_value.find('=') == llvm::StringRef::npos) {
> +            error.SetErrorString(
> +                "assign operation takes one or more key=value
> arguments");
> +            return error;
> +          }
>  
> -      if (key.front() == '[') {
> -        // Key name starts with '[', so the key value must be in
> single or
> -        // double quotes like:
> -        // ['<key>']
> -        // ["<key>"]
> -        if ((key.size() > 2) && (key.back() == ']')) {
> -          // Strip leading '[' and trailing ']'
> -          key = key.substr(1, key.size() - 2);
> -          const char quote_char = key.front();
> -          if ((quote_char == '\'') || (quote_char == '"')) {
> -            if ((key.size() > 2) && (key.back() == quote_char)) {
> -              // Strip the quotes
> -              key = key.substr(1, key.size() - 2);
> +          std::pair<llvm::StringRef, llvm::StringRef> kvp(
> +              key_and_value.split('='));
> +          llvm::StringRef key = kvp.first;
> +          bool key_valid = false;
> +          if (!key.empty()) {
> +            if (key.front() == '[') {
> +              // Key name starts with '[', so the key value must be
> in single or
> +              // double quotes like:
> +              // ['<key>']
> +              // ["<key>"]
> +              if ((key.size() > 2) && (key.back() == ']')) {
> +                // Strip leading '[' and trailing ']'
> +                key = key.substr(1, key.size() - 2);
> +                const char quote_char = key.front();
> +                if ((quote_char == '\'') || (quote_char == '"')) {
> +                  if ((key.size() > 2) && (key.back() ==
> quote_char)) {
> +                    // Strip the quotes
> +                    key = key.substr(1, key.size() - 2);
> +                    key_valid = true;
> +                  }
> +                } else {
> +                  // square brackets, no quotes
> +                  key_valid = true;
> +                }
> +              }
> +            } else {
> +              // No square brackets or quotes
>                key_valid = true;
>              }
> +          }
> +          if (!key_valid) {
> +            error.SetErrorStringWithFormat(
> +                "invalid key \"%s\", the key must be a bare string
> or "
> +                "surrounded by brackets with optional quotes:
> [<key>] or "
> +                "['<key>'] or [\"<key>\"]",
> +                kvp.first.str().c_str());
> +            return error;
> +          }
> +
> +          lldb::OptionValueSP
> value_sp(CreateValueFromCStringForTypeMask(
> +              kvp.second.data(), m_type_mask, error));
> +          if (value_sp) {
> +            if (error.Fail())
> +              return error;
> +            m_value_was_set = true;
> +            SetValueForKey(ConstString(key), value_sp, true);
>            } else {
> -            // square brackets, no quotes
> -            key_valid = true;
> +            error.SetErrorString("dictionaries that can contain
> multiple types "
> +                                 "must subclass OptionValueArray");
>            }
> +        } else {
> +          error.SetErrorString("empty argument");
>          }
> -      } else {
> -        // No square brackets or quotes
> -        key_valid = true;
> -      }
> -      if (!key_valid) {
> -        error.SetErrorStringWithFormat(
> -            "invalid key \"%s\", the key must be a bare string or "
> -            "surrounded by brackets with optional quotes: [<key>] or
> "
> -            "['<key>'] or [\"<key>\"]",
> -            key.str().c_str());
> -        return error;
> -      }
> -
> -      lldb::OptionValueSP
> value_sp(CreateValueFromCStringForTypeMask(
> -          value.str().c_str(), m_type_mask, error));
> -      if (value_sp) {
> -        if (error.Fail())
> -          return error;
> -        m_value_was_set = true;
> -        SetValueForKey(ConstString(key), value_sp, true);
> -      } else {
> -        error.SetErrorString("dictionaries that can contain multiple
> types "
> -                             "must subclass OptionValueArray");
>        }
> +    } else {
> +      error.SetErrorString(
> +          "assign operation takes one or more key=value arguments");
>      }
>      break;
>  
> 
> 
> _______________________________________________
> lldb-commits mailing list
> lldb-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
> 

-- 
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory


More information about the lldb-commits mailing list