diff options
author | Greg Clayton <gclayton@apple.com> | 2013-01-25 18:06:21 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2013-01-25 18:06:21 +0000 |
commit | c7bece56faa5eef1c3d141d0c0b0b68b28a9aed2 (patch) | |
tree | 9a0132fc3b0bb4f38d06a0f352ee75ac57994771 /lldb/source/Interpreter/CommandInterpreter.cpp | |
parent | d0ed6c249dbd6bd488b6491b536a387548c00f7e (diff) | |
download | bcm5719-llvm-c7bece56faa5eef1c3d141d0c0b0b68b28a9aed2.tar.gz bcm5719-llvm-c7bece56faa5eef1c3d141d0c0b0b68b28a9aed2.zip |
<rdar://problem/13069948>
Major fixed to allow reading files that are over 4GB. The main problems were that the DataExtractor was using 32 bit offsets as a data cursor, and since we mmap all of our object files we could run into cases where if we had a very large core file that was over 4GB, we were running into the 4GB boundary.
So I defined a new "lldb::offset_t" which should be used for all file offsets.
After making this change, I enabled warnings for data loss and for enexpected implicit conversions temporarily and found a ton of things that I fixed.
Any functions that take an index internally, should use "size_t" for any indexes and also should return "size_t" for any sizes of collections.
llvm-svn: 173463
Diffstat (limited to 'lldb/source/Interpreter/CommandInterpreter.cpp')
-rw-r--r-- | lldb/source/Interpreter/CommandInterpreter.cpp | 55 |
1 files changed, 24 insertions, 31 deletions
diff --git a/lldb/source/Interpreter/CommandInterpreter.cpp b/lldb/source/Interpreter/CommandInterpreter.cpp index 7dfc5d8318e..e3da3a5526b 100644 --- a/lldb/source/Interpreter/CommandInterpreter.cpp +++ b/lldb/source/Interpreter/CommandInterpreter.cpp @@ -600,7 +600,7 @@ CommandObjectSP CommandInterpreter::GetCommandSP (const char *cmd_cstr, bool include_aliases, bool exact, StringList *matches) { CommandObject::CommandMap::iterator pos; - CommandObjectSP ret_val; + CommandObjectSP command_sp; std::string cmd(cmd_cstr); @@ -608,24 +608,24 @@ CommandInterpreter::GetCommandSP (const char *cmd_cstr, bool include_aliases, bo { pos = m_command_dict.find(cmd); if (pos != m_command_dict.end()) - ret_val = pos->second; + command_sp = pos->second; } if (include_aliases && HasAliases()) { pos = m_alias_dict.find(cmd); if (pos != m_alias_dict.end()) - ret_val = pos->second; + command_sp = pos->second; } if (HasUserCommands()) { pos = m_user_dict.find(cmd); if (pos != m_user_dict.end()) - ret_val = pos->second; + command_sp = pos->second; } - if (!exact && !ret_val) + if (!exact && !command_sp) { // We will only get into here if we didn't find any exact matches. @@ -695,13 +695,13 @@ CommandInterpreter::GetCommandSP (const char *cmd_cstr, bool include_aliases, bo return user_match_sp; } } - else if (matches && ret_val) + else if (matches && command_sp) { matches->AppendString (cmd_cstr); } - return ret_val; + return command_sp; } bool @@ -871,7 +871,7 @@ CommandInterpreter::ProcessAliasOptionsArgs (lldb::CommandObjectSP &cmd_obj_sp, options_string))); else { - int argc = args.GetArgumentCount(); + const size_t argc = args.GetArgumentCount(); for (size_t i = 0; i < argc; ++i) if (strcmp (args.GetArgumentAtIndex (i), "") != 0) option_arg_vector->push_back @@ -981,7 +981,7 @@ CommandInterpreter::GetHelp (CommandReturnObject &result, uint32_t cmd_types) { CommandObject::CommandMap::const_iterator pos; - uint32_t max_len = FindLongestCommandWord (m_command_dict); + size_t max_len = FindLongestCommandWord (m_command_dict); if ( (cmd_types & eCommandTypesBuiltin) == eCommandTypesBuiltin ) { @@ -1595,21 +1595,15 @@ CommandInterpreter::HandleCommand (const char *command_line, if (cmd_obj == NULL) { - uint32_t num_matches = matches.GetSize(); + const size_t num_matches = matches.GetSize(); if (matches.GetSize() > 1) { - std::string error_msg; - error_msg.assign ("Ambiguous command '"); - error_msg.append(next_word.c_str()); - error_msg.append ("'."); - - error_msg.append (" Possible matches:"); + StreamString error_msg; + error_msg.Printf ("Ambiguous command '%s'. Possible matches:\n", next_word.c_str()); for (uint32_t i = 0; i < num_matches; ++i) { - error_msg.append ("\n\t"); - error_msg.append (matches.GetStringAtIndex(i)); + error_msg.Printf ("\t%s\n", matches.GetStringAtIndex(i)); } - error_msg.append ("\n"); - result.AppendRawError (error_msg.c_str(), error_msg.size()); + result.AppendRawError (error_msg.GetString().c_str()); } else { // We didn't have only one match, otherwise we wouldn't get here. assert(num_matches == 0); @@ -1777,7 +1771,7 @@ CommandInterpreter::HandleCommand (const char *command_line, error_msg.append (matches.GetStringAtIndex (i)); } error_msg.append ("\n"); - result.AppendRawError (error_msg.c_str(), error_msg.size()); + result.AppendRawError (error_msg.c_str()); } else result.AppendErrorWithFormat ("Unrecognized command '%s'.\n", command_args.GetArgumentAtIndex (0)); @@ -1957,7 +1951,7 @@ CommandInterpreter::HandleCompletion (const char *current_line, std::string common_prefix; matches.LongestCommonPrefix (common_prefix); - int partial_name_len = command_partial_str.size(); + const size_t partial_name_len = command_partial_str.size(); // If we matched a unique single command, add a space... // Only do this if the completer told us this was a complete word, however... @@ -2211,7 +2205,7 @@ CommandInterpreter::BuildAliasCommandArgs (CommandObject *alias_cmd_obj, } OptionArgVector *option_arg_vector = option_arg_vector_sp.get(); - int old_size = cmd_args.GetArgumentCount(); + const size_t old_size = cmd_args.GetArgumentCount(); std::vector<bool> used (old_size + 1, false); used[0] = true; @@ -2626,7 +2620,7 @@ CommandInterpreter::OutputFormattedHelpText (Stream &strm, const char *word_text, const char *separator, const char *help_text, - uint32_t max_word_len) + size_t max_word_len) { const uint32_t max_columns = m_debugger.GetTerminalWidth(); @@ -2635,7 +2629,7 @@ CommandInterpreter::OutputFormattedHelpText (Stream &strm, strm.IndentMore (indent_size); StreamString text_strm; - text_strm.Printf ("%-*s %s %s", max_word_len, word_text, separator, help_text); + text_strm.Printf ("%-*s %s %s", (int)max_word_len, word_text, separator, help_text); size_t len = text_strm.GetSize(); const char *text = text_strm.GetData(); @@ -2655,10 +2649,9 @@ CommandInterpreter::OutputFormattedHelpText (Stream &strm, // We need to break it up into multiple lines. bool first_line = true; int text_width; - int start = 0; - int end = start; - int final_end = strlen (text); - int sub_len; + size_t start = 0; + size_t end = start; + const size_t final_end = strlen (text); while (end < final_end) { @@ -2686,7 +2679,7 @@ CommandInterpreter::OutputFormattedHelpText (Stream &strm, assert (end > 0); } - sub_len = end - start; + const size_t sub_len = end - start; if (start != 0) strm.EOL(); if (!first_line) @@ -2814,7 +2807,7 @@ CommandInterpreter::FindHistoryString (const char *input_str) const if (input_str[1] == '-') { bool success; - uint32_t idx = Args::StringToUInt32 (input_str+2, 0, 0, &success); + size_t idx = Args::StringToUInt32 (input_str+2, 0, 0, &success); if (!success) return NULL; if (idx > m_command_history.size()) |