summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2012-07-17 03:23:13 +0000
committerGreg Clayton <gclayton@apple.com>2012-07-17 03:23:13 +0000
commit23f59509a8790b04c691ec063c55724a3bfee7eb (patch)
tree9bd1537b53423b7a43ccd4b9bceb178960bbbb02
parent24a8378c4f5ab46f9156e8c271500a6e051c2fd4 (diff)
downloadbcm5719-llvm-23f59509a8790b04c691ec063c55724a3bfee7eb.tar.gz
bcm5719-llvm-23f59509a8790b04c691ec063c55724a3bfee7eb.zip
Ran the static analyzer on the codebase and found a few things.
llvm-svn: 160338
-rw-r--r--lldb/source/API/SBFrame.cpp2
-rw-r--r--lldb/source/API/SBTarget.cpp5
-rw-r--r--lldb/source/Commands/CommandObjectBreakpoint.cpp24
-rw-r--r--lldb/source/Commands/CommandObjectBreakpointCommand.cpp7
-rw-r--r--lldb/source/Commands/CommandObjectWatchpoint.cpp16
-rw-r--r--lldb/source/Core/Address.cpp8
-rw-r--r--lldb/source/Core/Debugger.cpp8
-rw-r--r--lldb/source/Core/InputReader.cpp2
-rw-r--r--lldb/source/Core/SearchFilter.cpp34
-rw-r--r--lldb/source/Core/UserSettingsController.cpp113
-rw-r--r--lldb/source/Core/ValueObject.cpp20
-rw-r--r--lldb/source/Expression/IRDynamicChecks.cpp7
-rw-r--r--lldb/source/Expression/IRInterpreter.cpp2
-rw-r--r--lldb/source/Host/common/Terminal.cpp7
-rw-r--r--lldb/source/Host/macosx/Host.mm375
-rw-r--r--lldb/source/Interpreter/CommandInterpreter.cpp2
-rw-r--r--lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp1
-rw-r--r--lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp24
-rw-r--r--lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp3
-rw-r--r--lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp5
-rw-r--r--lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp1
-rw-r--r--lldb/source/Plugins/Process/Utility/ARMUtils.h8
-rw-r--r--lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp8
-rw-r--r--lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp6
-rw-r--r--lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp10
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp15
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugPubnames.cpp3
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp138
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp174
-rw-r--r--lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp28
-rw-r--r--lldb/source/Symbol/ClangASTContext.cpp2
-rw-r--r--lldb/source/Symbol/ClangASTImporter.cpp2
-rw-r--r--lldb/source/Symbol/DWARFCallFrameInfo.cpp2
-rw-r--r--lldb/source/Target/Process.cpp3
-rw-r--r--lldb/tools/darwin-debug/darwin-debug.cpp2
-rw-r--r--lldb/tools/debugserver/source/DNB.cpp26
-rw-r--r--lldb/tools/debugserver/source/MacOSX/MachException.cpp7
-rw-r--r--lldb/tools/debugserver/source/MacOSX/MachProcess.cpp23
-rw-r--r--lldb/tools/debugserver/source/MacOSX/MachThreadList.cpp5
-rw-r--r--lldb/tools/debugserver/source/RNBRemote.cpp44
-rw-r--r--lldb/tools/debugserver/source/debugserver.cpp1
-rw-r--r--lldb/tools/driver/Driver.cpp2
42 files changed, 539 insertions, 636 deletions
diff --git a/lldb/source/API/SBFrame.cpp b/lldb/source/API/SBFrame.cpp
index 040412036b3..8c0e98a4b3f 100644
--- a/lldb/source/API/SBFrame.cpp
+++ b/lldb/source/API/SBFrame.cpp
@@ -1038,7 +1038,7 @@ SBFrame::EvaluateExpression (const char *expr, lldb::DynamicValueType fetch_dyna
LogSP expr_log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
- ExecutionResults exe_results;
+ ExecutionResults exe_results = eExecutionSetupError;
SBValue expr_result;
ValueObjectSP expr_value_sp;
diff --git a/lldb/source/API/SBTarget.cpp b/lldb/source/API/SBTarget.cpp
index ddd8f18e59e..1dc30d1debc 100644
--- a/lldb/source/API/SBTarget.cpp
+++ b/lldb/source/API/SBTarget.cpp
@@ -754,20 +754,19 @@ SBTarget::Launch (SBLaunchInfo &sb_launch_info, SBError& error)
const bool synchronous_execution = target_sp->GetDebugger().GetAsyncExecution () == false;
if (error.Success())
{
- StateType state = eStateInvalid;
if (launch_info.GetFlags().Test(eLaunchFlagStopAtEntry))
{
// If we are doing synchronous mode, then wait for the initial
// stop to happen, else, return and let the caller watch for
// the stop
if (synchronous_execution)
- state = process_sp->WaitForProcessToStop (NULL);
+ process_sp->WaitForProcessToStop (NULL);
// We we are stopping at the entry point, we can return now!
return sb_process;
}
// Make sure we are stopped at the entry
- state = process_sp->WaitForProcessToStop (NULL);
+ StateType state = process_sp->WaitForProcessToStop (NULL);
if (state == eStateStopped)
{
// resume the process to skip the entry point
diff --git a/lldb/source/Commands/CommandObjectBreakpoint.cpp b/lldb/source/Commands/CommandObjectBreakpoint.cpp
index 2e764cadd84..6228333cdd6 100644
--- a/lldb/source/Commands/CommandObjectBreakpoint.cpp
+++ b/lldb/source/Commands/CommandObjectBreakpoint.cpp
@@ -373,14 +373,8 @@ protected:
Breakpoint *bp = NULL;
FileSpec module_spec;
- bool use_module = false;
- int num_modules = m_options.m_modules.GetSize();
-
const bool internal = false;
- if ((num_modules > 0) && (break_type != eSetTypeAddress))
- use_module = true;
-
switch (break_type)
{
case eSetTypeFileAndLine: // Breakpoint by source position
@@ -1673,8 +1667,6 @@ CommandObjectMultiwordBreakpoint::CommandObjectMultiwordBreakpoint (CommandInter
"A set of commands for operating on breakpoints. Also see _regexp-break.",
"breakpoint <command> [<command-options>]")
{
- bool status;
-
CommandObjectSP list_command_object (new CommandObjectBreakpointList (interpreter));
CommandObjectSP enable_command_object (new CommandObjectBreakpointEnable (interpreter));
CommandObjectSP disable_command_object (new CommandObjectBreakpointDisable (interpreter));
@@ -1693,14 +1685,14 @@ CommandObjectMultiwordBreakpoint::CommandObjectMultiwordBreakpoint (CommandInter
command_command_object->SetCommandName ("breakpoint command");
modify_command_object->SetCommandName ("breakpoint modify");
- status = LoadSubCommand ("list", list_command_object);
- status = LoadSubCommand ("enable", enable_command_object);
- status = LoadSubCommand ("disable", disable_command_object);
- status = LoadSubCommand ("clear", clear_command_object);
- status = LoadSubCommand ("delete", delete_command_object);
- status = LoadSubCommand ("set", set_command_object);
- status = LoadSubCommand ("command", command_command_object);
- status = LoadSubCommand ("modify", modify_command_object);
+ LoadSubCommand ("list", list_command_object);
+ LoadSubCommand ("enable", enable_command_object);
+ LoadSubCommand ("disable", disable_command_object);
+ LoadSubCommand ("clear", clear_command_object);
+ LoadSubCommand ("delete", delete_command_object);
+ LoadSubCommand ("set", set_command_object);
+ LoadSubCommand ("command", command_command_object);
+ LoadSubCommand ("modify", modify_command_object);
}
CommandObjectMultiwordBreakpoint::~CommandObjectMultiwordBreakpoint ()
diff --git a/lldb/source/Commands/CommandObjectBreakpointCommand.cpp b/lldb/source/Commands/CommandObjectBreakpointCommand.cpp
index 2df3ac3a9d3..e8425599cc1 100644
--- a/lldb/source/Commands/CommandObjectBreakpointCommand.cpp
+++ b/lldb/source/Commands/CommandObjectBreakpointCommand.cpp
@@ -864,7 +864,6 @@ CommandObjectBreakpointCommand::CommandObjectBreakpointCommand (CommandInterpret
"A set of commands for adding, removing and examining bits of code to be executed when the breakpoint is hit (breakpoint 'commmands').",
"command <sub-command> [<sub-command-options>] <breakpoint-id>")
{
- bool status;
CommandObjectSP add_command_object (new CommandObjectBreakpointCommandAdd (interpreter));
CommandObjectSP delete_command_object (new CommandObjectBreakpointCommandDelete (interpreter));
CommandObjectSP list_command_object (new CommandObjectBreakpointCommandList (interpreter));
@@ -873,9 +872,9 @@ CommandObjectBreakpointCommand::CommandObjectBreakpointCommand (CommandInterpret
delete_command_object->SetCommandName ("breakpoint command delete");
list_command_object->SetCommandName ("breakpoint command list");
- status = LoadSubCommand ("add", add_command_object);
- status = LoadSubCommand ("delete", delete_command_object);
- status = LoadSubCommand ("list", list_command_object);
+ LoadSubCommand ("add", add_command_object);
+ LoadSubCommand ("delete", delete_command_object);
+ LoadSubCommand ("list", list_command_object);
}
CommandObjectBreakpointCommand::~CommandObjectBreakpointCommand ()
diff --git a/lldb/source/Commands/CommandObjectWatchpoint.cpp b/lldb/source/Commands/CommandObjectWatchpoint.cpp
index 973b9d4a385..000c5907670 100644
--- a/lldb/source/Commands/CommandObjectWatchpoint.cpp
+++ b/lldb/source/Commands/CommandObjectWatchpoint.cpp
@@ -1295,8 +1295,6 @@ CommandObjectMultiwordWatchpoint::CommandObjectMultiwordWatchpoint(CommandInterp
"A set of commands for operating on watchpoints.",
"watchpoint <command> [<command-options>]")
{
- bool status;
-
CommandObjectSP list_command_object (new CommandObjectWatchpointList (interpreter));
CommandObjectSP enable_command_object (new CommandObjectWatchpointEnable (interpreter));
CommandObjectSP disable_command_object (new CommandObjectWatchpointDisable (interpreter));
@@ -1313,13 +1311,13 @@ CommandObjectMultiwordWatchpoint::CommandObjectMultiwordWatchpoint(CommandInterp
modify_command_object->SetCommandName("watchpoint modify");
set_command_object->SetCommandName("watchpoint set");
- status = LoadSubCommand ("list", list_command_object);
- status = LoadSubCommand ("enable", enable_command_object);
- status = LoadSubCommand ("disable", disable_command_object);
- status = LoadSubCommand ("delete", delete_command_object);
- status = LoadSubCommand ("ignore", ignore_command_object);
- status = LoadSubCommand ("modify", modify_command_object);
- status = LoadSubCommand ("set", set_command_object);
+ LoadSubCommand ("list", list_command_object);
+ LoadSubCommand ("enable", enable_command_object);
+ LoadSubCommand ("disable", disable_command_object);
+ LoadSubCommand ("delete", delete_command_object);
+ LoadSubCommand ("ignore", ignore_command_object);
+ LoadSubCommand ("modify", modify_command_object);
+ LoadSubCommand ("set", set_command_object);
}
CommandObjectMultiwordWatchpoint::~CommandObjectMultiwordWatchpoint()
diff --git a/lldb/source/Core/Address.cpp b/lldb/source/Core/Address.cpp
index 0308812bc56..d9ff36ecd40 100644
--- a/lldb/source/Core/Address.cpp
+++ b/lldb/source/Core/Address.cpp
@@ -431,14 +431,6 @@ Address::Dump (Stream *s, ExecutionContextScope *exe_scope, DumpStyle style, Dum
case DumpStyleResolvedDescriptionNoModule:
if (IsSectionOffset())
{
- AddressType addr_type = eAddressTypeLoad;
- addr_t addr = GetLoadAddress (target);
- if (addr == LLDB_INVALID_ADDRESS)
- {
- addr = GetFileAddress();
- addr_type = eAddressTypeFile;
- }
-
uint32_t pointer_size = 4;
ModuleSP module_sp (GetModule());
if (target)
diff --git a/lldb/source/Core/Debugger.cpp b/lldb/source/Core/Debugger.cpp
index 3e3b0cb1aea..9cefaa30f14 100644
--- a/lldb/source/Core/Debugger.cpp
+++ b/lldb/source/Core/Debugger.cpp
@@ -1336,10 +1336,10 @@ Debugger::FormatPrompt
}
else if (is_pointer) // if pointer, value is the address stored
{
- var_success = target->DumpPrintableRepresentation(s,
- val_obj_display,
- custom_format,
- ValueObject::ePrintableRepresentationSpecialCasesDisable);
+ target->DumpPrintableRepresentation (s,
+ val_obj_display,
+ custom_format,
+ ValueObject::ePrintableRepresentationSpecialCasesDisable);
}
else
{
diff --git a/lldb/source/Core/InputReader.cpp b/lldb/source/Core/InputReader.cpp
index c9372e432bc..10847bdd61f 100644
--- a/lldb/source/Core/InputReader.cpp
+++ b/lldb/source/Core/InputReader.cpp
@@ -151,7 +151,7 @@ InputReader::HandleRawBytes (const char *bytes, size_t bytes_len)
{
if (end_token && end_token == p)
{
- p += m_end_token.size();
+ m_end_token.size();
SetIsDone(true);
break;
}
diff --git a/lldb/source/Core/SearchFilter.cpp b/lldb/source/Core/SearchFilter.cpp
index f00f222bc30..9256899f196 100644
--- a/lldb/source/Core/SearchFilter.cpp
+++ b/lldb/source/Core/SearchFilter.cpp
@@ -186,11 +186,21 @@ SearchFilter::DoModuleIteration (const lldb::ModuleSP& module_sp, Searcher &sear
Searcher::CallbackReturn
SearchFilter::DoModuleIteration (const SymbolContext &context, Searcher &searcher)
{
- Searcher::CallbackReturn shouldContinue;
-
if (searcher.GetDepth () >= Searcher::eDepthModule)
{
- if (!context.module_sp)
+ if (context.module_sp)
+ {
+ if (searcher.GetDepth () == Searcher::eDepthModule)
+ {
+ SymbolContext matchingContext(context.module_sp.get());
+ searcher.SearchCallback (*this, matchingContext, NULL, false);
+ }
+ else
+ {
+ return DoCUIteration(context.module_sp, context, searcher);
+ }
+ }
+ else
{
ModuleList &target_images = m_target_sp->GetImages();
Mutex::Locker modules_locker(target_images.GetMutex());
@@ -208,14 +218,14 @@ SearchFilter::DoModuleIteration (const SymbolContext &context, Searcher &searche
{
SymbolContext matchingContext(m_target_sp, module_sp);
- shouldContinue = searcher.SearchCallback (*this, matchingContext, NULL, false);
+ Searcher::CallbackReturn shouldContinue = searcher.SearchCallback (*this, matchingContext, NULL, false);
if (shouldContinue == Searcher::eCallbackReturnStop
|| shouldContinue == Searcher::eCallbackReturnPop)
return shouldContinue;
}
else
{
- shouldContinue = DoCUIteration(module_sp, context, searcher);
+ Searcher::CallbackReturn shouldContinue = DoCUIteration(module_sp, context, searcher);
if (shouldContinue == Searcher::eCallbackReturnStop)
return shouldContinue;
else if (shouldContinue == Searcher::eCallbackReturnPop)
@@ -223,20 +233,6 @@ SearchFilter::DoModuleIteration (const SymbolContext &context, Searcher &searche
}
}
}
- else
- {
- if (searcher.GetDepth () == Searcher::eDepthModule)
- {
- SymbolContext matchingContext(context.module_sp.get());
-
- shouldContinue = searcher.SearchCallback (*this, matchingContext, NULL, false);
- }
- else
- {
- return DoCUIteration(context.module_sp, context, searcher);
- }
- }
-
}
return Searcher::eCallbackReturnContinue;
}
diff --git a/lldb/source/Core/UserSettingsController.cpp b/lldb/source/Core/UserSettingsController.cpp
index 96d1f19c70b..2a5b7e9327e 100644
--- a/lldb/source/Core/UserSettingsController.cpp
+++ b/lldb/source/Core/UserSettingsController.cpp
@@ -173,16 +173,13 @@ UserSettingsController::RegisterChild (const UserSettingsControllerSP &child)
// Verify child is not already in m_children.
size_t num_children = m_children.size();
- bool found = false;
for (size_t i = 0; i < num_children; ++i)
- {
- if (m_children[i].get() == child.get())
- found = true;
- }
-
+ {
+ if (m_children[i].get() == child.get())
+ return;
+ }
// Add child to m_children.
- if (! found)
- m_children.push_back (child);
+ m_children.push_back (child);
}
const ConstString &
@@ -494,14 +491,12 @@ UserSettingsController::SetVariable (const char *full_dot_name,
UserSettingsControllerSP child;
ConstString child_prefix (names.GetArgumentAtIndex (0));
int num_children = GetNumChildren();
- bool found = false;
- for (int i = 0; i < num_children && !found; ++i)
+ for (int i = 0; i < num_children; ++i)
{
child = GetChildAtIndex (i);
ConstString current_prefix = child->GetLevelName();
if (current_prefix == child_prefix)
{
- found = true;
std::string new_name;
for (int j = 0; j < names.GetArgumentCount(); ++j)
{
@@ -513,12 +508,9 @@ UserSettingsController::SetVariable (const char *full_dot_name,
index_value);
}
}
- if (!found)
- {
- err.SetErrorStringWithFormat ("unable to find variable '%s', cannot assign value",
- full_dot_name);
- return err;
- }
+ err.SetErrorStringWithFormat ("unable to find variable '%s', cannot assign value",
+ full_dot_name);
+ return err;
}
}
}
@@ -576,12 +568,10 @@ UserSettingsController::GetVariable
if (names.GetArgumentCount() > 1)
{
ConstString child_prefix (names.GetArgumentAtIndex (0));
- bool found = false;
- for (int i = 0; i < m_children.size() && !found; ++i)
+ for (int i = 0; i < m_children.size(); ++i)
{
if (child_prefix == m_children[i]->GetLevelName())
{
- found = true;
child = m_children[i];
std::string new_name;
for (int j = 0; j < names.GetArgumentCount(); ++j)
@@ -594,60 +584,57 @@ UserSettingsController::GetVariable
}
}
- if (!found)
+ // Cannot be handled by a child, because name did not match any child prefixes.
+ // Cannot be a class-wide variable because there are too many name pieces.
+
+ if (instance_entry != NULL)
{
- // Cannot be handled by a child, because name did not match any child prefixes.
- // Cannot be a class-wide variable because there are too many name pieces.
+ var_type = instance_entry->var_type;
+ ConstString instance_name (names.GetArgumentAtIndex (0));
+ InstanceSettings *current_settings = FindSettingsForInstance (instance_name);
- if (instance_entry != NULL)
+ if (current_settings != NULL)
{
- var_type = instance_entry->var_type;
- ConstString instance_name (names.GetArgumentAtIndex (0));
- InstanceSettings *current_settings = FindSettingsForInstance (instance_name);
+ current_settings->GetInstanceSettingsValue (*instance_entry, const_var_name, value, &err);
+ }
+ else
+ {
+ // Look for instance name setting in pending settings.
- if (current_settings != NULL)
+ std::string inst_name_str = instance_name.GetCString();
+ std::map<std::string, InstanceSettingsSP>::iterator pos;
+
+ pos = m_pending_settings.find (inst_name_str);
+ if (pos != m_pending_settings.end())
{
- current_settings->GetInstanceSettingsValue (*instance_entry, const_var_name, value, &err);
+ InstanceSettingsSP settings_sp = pos->second;
+ settings_sp->GetInstanceSettingsValue (*instance_entry, const_var_name, value, &err);
}
- else
+ else
{
- // Look for instance name setting in pending settings.
-
- std::string inst_name_str = instance_name.GetCString();
- std::map<std::string, InstanceSettingsSP>::iterator pos;
-
- pos = m_pending_settings.find (inst_name_str);
- if (pos != m_pending_settings.end())
+ if (m_settings.level_name.GetLength() > 0)
{
- InstanceSettingsSP settings_sp = pos->second;
- settings_sp->GetInstanceSettingsValue (*instance_entry, const_var_name, value, &err);
+ // No valid instance name; assume they want the default settings.
+ m_default_settings->GetInstanceSettingsValue (*instance_entry, const_var_name, value, &err);
}
- else
+ else
{
- if (m_settings.level_name.GetLength() > 0)
- {
- // No valid instance name; assume they want the default settings.
- m_default_settings->GetInstanceSettingsValue (*instance_entry, const_var_name, value, &err);
- }
+ // We're at the Debugger level; use the debugger's instance settings.
+ StreamString tmp_name;
+ if (debugger_instance_name[0] != '[')
+ tmp_name.Printf ("[%s]", debugger_instance_name);
else
- {
- // We're at the Debugger level; use the debugger's instance settings.
- StreamString tmp_name;
- if (debugger_instance_name[0] != '[')
- tmp_name.Printf ("[%s]", debugger_instance_name);
- else
- tmp_name.Printf ("%s", debugger_instance_name);
- ConstString dbg_name (debugger_instance_name);
- InstanceSettings *dbg_settings = FindSettingsForInstance (dbg_name);
- if (dbg_settings)
- dbg_settings->GetInstanceSettingsValue (*instance_entry, const_var_name, value, &err);
- }
+ tmp_name.Printf ("%s", debugger_instance_name);
+ ConstString dbg_name (debugger_instance_name);
+ InstanceSettings *dbg_settings = FindSettingsForInstance (dbg_name);
+ if (dbg_settings)
+ dbg_settings->GetInstanceSettingsValue (*instance_entry, const_var_name, value, &err);
}
}
}
- else
- err.SetErrorString ("invalid variable name");
}
+ else
+ err.SetErrorString ("invalid variable name");
}
else
{
@@ -1194,14 +1181,11 @@ UserSettingsController::FindSettingsDescriptions (CommandInterpreter &interprete
else if (num_pieces == 1)
{
ConstString var_name (names.GetArgumentAtIndex (0));
- bool is_global = false;
const SettingEntry *setting_entry = usc_sp->GetGlobalEntry (var_name);
if (setting_entry == NULL)
setting_entry = usc_sp->GetInstanceEntry (var_name);
- else
- is_global = true;
// Check to see if it is a global or instance variable name.
if (setting_entry != NULL)
@@ -1773,21 +1757,18 @@ UserSettingsController::CompleteSettingsNames (const UserSettingsControllerSP& u
else
{
// 'next_name' must be a child name. Find the correct child and pass the remaining piece to be resolved.
- bool found = false;
int num_children = my_usc_sp->GetNumChildren();
ConstString child_level (next_name.c_str());
for (int i = 0; i < num_children; ++i)
{
if (my_usc_sp->GetChildAtIndex (i)->GetLevelName() == child_level)
{
- found = true;
return UserSettingsController::CompleteSettingsNames (my_usc_sp->GetChildAtIndex (i),
partial_setting_name_pieces,
word_complete, matches);
}
}
- if (!found)
- return 0;
+ return 0;
}
}
else if (num_name_pieces == 1)
diff --git a/lldb/source/Core/ValueObject.cpp b/lldb/source/Core/ValueObject.cpp
index b3c0a0b8c34..9fc3a0f7f8e 100644
--- a/lldb/source/Core/ValueObject.cpp
+++ b/lldb/source/Core/ValueObject.cpp
@@ -2344,8 +2344,10 @@ ValueObject::GetValuesForExpressionPath(const char* expression,
ValueObjectSP final_value = ret_val->Dereference(error);
if (error.Fail() || !final_value.get())
{
- *reason_to_stop = ValueObject::eExpressionPathScanEndReasonDereferencingFailed;
- *final_value_type = ValueObject::eExpressionPathEndResultTypeInvalid;
+ if (reason_to_stop)
+ *reason_to_stop = ValueObject::eExpressionPathScanEndReasonDereferencingFailed;
+ if (final_value_type)
+ *final_value_type = ValueObject::eExpressionPathEndResultTypeInvalid;
return 0;
}
else
@@ -2361,8 +2363,10 @@ ValueObject::GetValuesForExpressionPath(const char* expression,
ValueObjectSP final_value = ret_val->AddressOf(error);
if (error.Fail() || !final_value.get())
{
- *reason_to_stop = ValueObject::eExpressionPathScanEndReasonTakingAddressFailed;
- *final_value_type = ValueObject::eExpressionPathEndResultTypeInvalid;
+ if (reason_to_stop)
+ *reason_to_stop = ValueObject::eExpressionPathScanEndReasonTakingAddressFailed;
+ if (final_value_type)
+ *final_value_type = ValueObject::eExpressionPathEndResultTypeInvalid;
return 0;
}
else
@@ -3770,9 +3774,9 @@ ValueObject::EvaluationPoint::SyncWithProcessState()
if (current_mod_id.GetStopID() == 0)
return false;
- bool changed;
-
- if (m_mod_id.IsValid())
+ bool changed = false;
+ const bool was_valid = m_mod_id.IsValid();
+ if (was_valid)
{
if (m_mod_id == current_mod_id)
{
@@ -3804,6 +3808,7 @@ ValueObject::EvaluationPoint::SyncWithProcessState()
{
// We used to have a frame, but now it is gone
SetInvalid();
+ changed = was_valid;
}
}
}
@@ -3811,6 +3816,7 @@ ValueObject::EvaluationPoint::SyncWithProcessState()
{
// We used to have a thread, but now it is gone
SetInvalid();
+ changed = was_valid;
}
}
diff --git a/lldb/source/Expression/IRDynamicChecks.cpp b/lldb/source/Expression/IRDynamicChecks.cpp
index 0c0c786ecef..02006bb2414 100644
--- a/lldb/source/Expression/IRDynamicChecks.cpp
+++ b/lldb/source/Expression/IRDynamicChecks.cpp
@@ -461,11 +461,16 @@ private:
case eMsgSend_stret:
target_object = call_inst->getArgOperand(1);
selector = call_inst->getArgOperand(2);
+ break;
case eMsgSendSuper:
case eMsgSendSuper_stret:
return true;
}
-
+
+ // These objects should always be valid according to Sean Calannan
+ assert (target_object);
+ assert (selector);
+
// Insert an instruction to cast the receiver id to int8_t*
BitCastInst *bit_cast = new BitCastInst(target_object,
diff --git a/lldb/source/Expression/IRInterpreter.cpp b/lldb/source/Expression/IRInterpreter.cpp
index 222d2d5c668..8ff34cf6f99 100644
--- a/lldb/source/Expression/IRInterpreter.cpp
+++ b/lldb/source/Expression/IRInterpreter.cpp
@@ -634,7 +634,7 @@ public:
lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
lldb_private::Value resolved_value;
- lldb_private::ClangExpressionVariable::FlagType flags;
+ lldb_private::ClangExpressionVariable::FlagType flags = 0;
if (global_value)
{
diff --git a/lldb/source/Host/common/Terminal.cpp b/lldb/source/Host/common/Terminal.cpp
index 61cedb7b298..ce0e15fb610 100644
--- a/lldb/source/Host/common/Terminal.cpp
+++ b/lldb/source/Host/common/Terminal.cpp
@@ -161,16 +161,15 @@ TerminalState::Save (int fd, bool save_process_group)
bool
TerminalState::Restore () const
{
- int result = 0;
if (IsValid())
{
const int fd = m_tty.GetFileDescriptor();
if (TFlagsIsValid())
- result = fcntl (fd, F_SETFL, m_tflags);
+ fcntl (fd, F_SETFL, m_tflags);
#ifdef LLDB_CONFIG_TERMIOS_SUPPORTED
if (TTYStateIsValid())
- result = tcsetattr (fd, TCSANOW, m_termios_ap.get());
+ tcsetattr (fd, TCSANOW, m_termios_ap.get());
#endif // #ifdef LLDB_CONFIG_TERMIOS_SUPPORTED
if (ProcessGroupIsValid())
@@ -179,7 +178,7 @@ TerminalState::Restore () const
void (*saved_sigttou_callback) (int) = NULL;
saved_sigttou_callback = (void (*)(int)) signal (SIGTTOU, SIG_IGN);
// Set the process group
- result = tcsetpgrp (fd, m_process_group);
+ tcsetpgrp (fd, m_process_group);
// Restore the original signal handler.
signal (SIGTTOU, saved_sigttou_callback);
}
diff --git a/lldb/source/Host/macosx/Host.mm b/lldb/source/Host/macosx/Host.mm
index eb9046c8918..9d65645ba68 100644
--- a/lldb/source/Host/macosx/Host.mm
+++ b/lldb/source/Host/macosx/Host.mm
@@ -114,7 +114,11 @@ public:
{
if (m_pool)
{
- [m_pool release];
+ if (objc_collectingEnabled())
+ [m_pool drain];
+ else
+ [m_pool release];
+
m_pool = nil;
}
}
@@ -232,6 +236,8 @@ Host::LaunchApplication (const FileSpec &app_file_spec)
::pid_t pid = LLDB_INVALID_PROCESS_ID;
error = ::GetProcessPID(&psn, &pid);
+ if (error != noErr)
+ return LLDB_INVALID_PROCESS_ID;
return pid;
#endif
}
@@ -292,164 +298,164 @@ WaitForProcessToSIGSTOP (const lldb::pid_t pid, const int timeout_in_seconds)
}
#if !defined(__arm__)
-static lldb::pid_t
-LaunchInNewTerminalWithCommandFile
-(
- const char **argv,
- const char **envp,
- const char *working_dir,
- const ArchSpec *arch_spec,
- bool stop_at_entry,
- bool disable_aslr
-)
-{
- if (!argv || !argv[0])
- return LLDB_INVALID_PROCESS_ID;
-
- OSStatus error = 0;
-
- FileSpec program (argv[0], false);
-
-
- std::string unix_socket_name;
-
- char temp_file_path[PATH_MAX];
- const char *tmpdir = ::getenv ("TMPDIR");
- if (tmpdir == NULL)
- tmpdir = "/tmp/";
- ::snprintf (temp_file_path, sizeof(temp_file_path), "%s%s-XXXXXX", tmpdir, program.GetFilename().AsCString());
-
- if (::mktemp (temp_file_path) == NULL)
- return LLDB_INVALID_PROCESS_ID;
-
- unix_socket_name.assign (temp_file_path);
-
- ::strlcat (temp_file_path, ".command", sizeof (temp_file_path));
-
- StreamFile command_file;
- command_file.GetFile().Open (temp_file_path,
- File::eOpenOptionWrite | File::eOpenOptionCanCreate,
- File::ePermissionsDefault);
-
- if (!command_file.GetFile().IsValid())
- return LLDB_INVALID_PROCESS_ID;
-
- FileSpec darwin_debug_file_spec;
- if (!Host::GetLLDBPath (ePathTypeSupportExecutableDir, darwin_debug_file_spec))
- return LLDB_INVALID_PROCESS_ID;
- darwin_debug_file_spec.GetFilename().SetCString("darwin-debug");
-
- if (!darwin_debug_file_spec.Exists())
- return LLDB_INVALID_PROCESS_ID;
-
- char launcher_path[PATH_MAX];
- darwin_debug_file_spec.GetPath(launcher_path, sizeof(launcher_path));
- command_file.Printf("\"%s\" ", launcher_path);
-
- command_file.Printf("--unix-socket=%s ", unix_socket_name.c_str());
-
- if (arch_spec && arch_spec->IsValid())
- {
- command_file.Printf("--arch=%s ", arch_spec->GetArchitectureName());
- }
-
- if (disable_aslr)
- {
- command_file.PutCString("--disable-aslr ");
- }
-
- command_file.PutCString("-- ");
-
- if (argv)
- {
- for (size_t i=0; argv[i] != NULL; ++i)
- {
- command_file.Printf("\"%s\" ", argv[i]);
- }
- }
- command_file.PutCString("\necho Process exited with status $?\n");
- command_file.GetFile().Close();
- if (::chmod (temp_file_path, S_IRWXU | S_IRWXG) != 0)
- return LLDB_INVALID_PROCESS_ID;
-
- CFCMutableDictionary cf_env_dict;
-
- const bool can_create = true;
- if (envp)
- {
- for (size_t i=0; envp[i] != NULL; ++i)
- {
- const char *env_entry = envp[i];
- const char *equal_pos = strchr(env_entry, '=');
- if (equal_pos)
- {
- std::string env_key (env_entry, equal_pos);
- std::string env_val (equal_pos + 1);
- CFCString cf_env_key (env_key.c_str(), kCFStringEncodingUTF8);
- CFCString cf_env_val (env_val.c_str(), kCFStringEncodingUTF8);
- cf_env_dict.AddValue (cf_env_key.get(), cf_env_val.get(), can_create);
- }
- }
- }
-
- LSApplicationParameters app_params;
- ::memset (&app_params, 0, sizeof (app_params));
- app_params.flags = kLSLaunchDontAddToRecents | kLSLaunchAsync;
- app_params.argv = NULL;
- app_params.environment = (CFDictionaryRef)cf_env_dict.get();
-
- CFCReleaser<CFURLRef> command_file_url (::CFURLCreateFromFileSystemRepresentation (NULL,
- (const UInt8 *)temp_file_path,
- strlen(temp_file_path),
- false));
-
- CFCMutableArray urls;
-
- // Terminal.app will open the ".command" file we have created
- // and run our process inside it which will wait at the entry point
- // for us to attach.
- urls.AppendValue(command_file_url.get());
-
-
- lldb::pid_t pid = LLDB_INVALID_PROCESS_ID;
-
- Error lldb_error;
- // Sleep and wait a bit for debugserver to start to listen...
- char connect_url[128];
- ::snprintf (connect_url, sizeof(connect_url), "unix-accept://%s", unix_socket_name.c_str());
-
- // Spawn a new thread to accept incoming connection on the connect_url
- // so we can grab the pid from the inferior
- lldb::thread_t accept_thread = Host::ThreadCreate (unix_socket_name.c_str(),
- AcceptPIDFromInferior,
- connect_url,
- &lldb_error);
-
- ProcessSerialNumber psn;
- error = LSOpenURLsWithRole(urls.get(), kLSRolesShell, NULL, &app_params, &psn, 1);
- if (error == noErr)
- {
- thread_result_t accept_thread_result = NULL;
- if (Host::ThreadJoin (accept_thread, &accept_thread_result, &lldb_error))
- {
- if (accept_thread_result)
- {
- pid = (intptr_t)accept_thread_result;
-
- // Wait for process to be stopped the the entry point by watching
- // for the process status to be set to SSTOP which indicates it it
- // SIGSTOP'ed at the entry point
- WaitForProcessToSIGSTOP (pid, 5);
- }
- }
- }
- else
- {
- Host::ThreadCancel (accept_thread, &lldb_error);
- }
-
- return pid;
-}
+//static lldb::pid_t
+//LaunchInNewTerminalWithCommandFile
+//(
+// const char **argv,
+// const char **envp,
+// const char *working_dir,
+// const ArchSpec *arch_spec,
+// bool stop_at_entry,
+// bool disable_aslr
+//)
+//{
+// if (!argv || !argv[0])
+// return LLDB_INVALID_PROCESS_ID;
+//
+// OSStatus error = 0;
+//
+// FileSpec program (argv[0], false);
+//
+//
+// std::string unix_socket_name;
+//
+// char temp_file_path[PATH_MAX];
+// const char *tmpdir = ::getenv ("TMPDIR");
+// if (tmpdir == NULL)
+// tmpdir = "/tmp/";
+// ::snprintf (temp_file_path, sizeof(temp_file_path), "%s%s-XXXXXX", tmpdir, program.GetFilename().AsCString());
+//
+// if (::mktemp (temp_file_path) == NULL)
+// return LLDB_INVALID_PROCESS_ID;
+//
+// unix_socket_name.assign (temp_file_path);
+//
+// ::strlcat (temp_file_path, ".command", sizeof (temp_file_path));
+//
+// StreamFile command_file;
+// command_file.GetFile().Open (temp_file_path,
+// File::eOpenOptionWrite | File::eOpenOptionCanCreate,
+// File::ePermissionsDefault);
+//
+// if (!command_file.GetFile().IsValid())
+// return LLDB_INVALID_PROCESS_ID;
+//
+// FileSpec darwin_debug_file_spec;
+// if (!Host::GetLLDBPath (ePathTypeSupportExecutableDir, darwin_debug_file_spec))
+// return LLDB_INVALID_PROCESS_ID;
+// darwin_debug_file_spec.GetFilename().SetCString("darwin-debug");
+//
+// if (!darwin_debug_file_spec.Exists())
+// return LLDB_INVALID_PROCESS_ID;
+//
+// char launcher_path[PATH_MAX];
+// darwin_debug_file_spec.GetPath(launcher_path, sizeof(launcher_path));
+// command_file.Printf("\"%s\" ", launcher_path);
+//
+// command_file.Printf("--unix-socket=%s ", unix_socket_name.c_str());
+//
+// if (arch_spec && arch_spec->IsValid())
+// {
+// command_file.Printf("--arch=%s ", arch_spec->GetArchitectureName());
+// }
+//
+// if (disable_aslr)
+// {
+// command_file.PutCString("--disable-aslr ");
+// }
+//
+// command_file.PutCString("-- ");
+//
+// if (argv)
+// {
+// for (size_t i=0; argv[i] != NULL; ++i)
+// {
+// command_file.Printf("\"%s\" ", argv[i]);
+// }
+// }
+// command_file.PutCString("\necho Process exited with status $?\n");
+// command_file.GetFile().Close();
+// if (::chmod (temp_file_path, S_IRWXU | S_IRWXG) != 0)
+// return LLDB_INVALID_PROCESS_ID;
+//
+// CFCMutableDictionary cf_env_dict;
+//
+// const bool can_create = true;
+// if (envp)
+// {
+// for (size_t i=0; envp[i] != NULL; ++i)
+// {
+// const char *env_entry = envp[i];
+// const char *equal_pos = strchr(env_entry, '=');
+// if (equal_pos)
+// {
+// std::string env_key (env_entry, equal_pos);
+// std::string env_val (equal_pos + 1);
+// CFCString cf_env_key (env_key.c_str(), kCFStringEncodingUTF8);
+// CFCString cf_env_val (env_val.c_str(), kCFStringEncodingUTF8);
+// cf_env_dict.AddValue (cf_env_key.get(), cf_env_val.get(), can_create);
+// }
+// }
+// }
+//
+// LSApplicationParameters app_params;
+// ::memset (&app_params, 0, sizeof (app_params));
+// app_params.flags = kLSLaunchDontAddToRecents | kLSLaunchAsync;
+// app_params.argv = NULL;
+// app_params.environment = (CFDictionaryRef)cf_env_dict.get();
+//
+// CFCReleaser<CFURLRef> command_file_url (::CFURLCreateFromFileSystemRepresentation (NULL,
+// (const UInt8 *)temp_file_path,
+// strlen(temp_file_path),
+// false));
+//
+// CFCMutableArray urls;
+//
+// // Terminal.app will open the ".command" file we have created
+// // and run our process inside it which will wait at the entry point
+// // for us to attach.
+// urls.AppendValue(command_file_url.get());
+//
+//
+// lldb::pid_t pid = LLDB_INVALID_PROCESS_ID;
+//
+// Error lldb_error;
+// // Sleep and wait a bit for debugserver to start to listen...
+// char connect_url[128];
+// ::snprintf (connect_url, sizeof(connect_url), "unix-accept://%s", unix_socket_name.c_str());
+//
+// // Spawn a new thread to accept incoming connection on the connect_url
+// // so we can grab the pid from the inferior
+// lldb::thread_t accept_thread = Host::ThreadCreate (unix_socket_name.c_str(),
+// AcceptPIDFromInferior,
+// connect_url,
+// &lldb_error);
+//
+// ProcessSerialNumber psn;
+// error = LSOpenURLsWithRole(urls.get(), kLSRolesShell, NULL, &app_params, &psn, 1);
+// if (error == noErr)
+// {
+// thread_result_t accept_thread_result = NULL;
+// if (Host::ThreadJoin (accept_thread, &accept_thread_result, &lldb_error))
+// {
+// if (accept_thread_result)
+// {
+// pid = (intptr_t)accept_thread_result;
+//
+// // Wait for process to be stopped the the entry point by watching
+// // for the process status to be set to SSTOP which indicates it it
+// // SIGSTOP'ed at the entry point
+// WaitForProcessToSIGSTOP (pid, 5);
+// }
+// }
+// }
+// else
+// {
+// Host::ThreadCancel (accept_thread, &lldb_error);
+// }
+//
+// return pid;
+//}
const char *applscript_in_new_tty =
"tell application \"Terminal\"\n"
@@ -953,34 +959,35 @@ Host::GetOSVersion
CFCReleaser<CFPropertyListRef> property_list;
CFCReleaser<CFStringRef> error_string;
CFCReleaser<CFDataRef> resource_data;
- Boolean status;
SInt32 error_code;
// Read the XML file.
- status = CFURLCreateDataAndPropertiesFromResource (kCFAllocatorDefault,
- plist_url.get(),
- resource_data.ptr_address(),
- NULL,
- NULL,
- &error_code);
- // Reconstitute the dictionary using the XML data.
- property_list = CFPropertyListCreateFromXMLData (kCFAllocatorDefault,
- resource_data.get(),
- kCFPropertyListImmutable,
- error_string.ptr_address());
- if (CFGetTypeID(property_list.get()) == CFDictionaryGetTypeID())
+ if (CFURLCreateDataAndPropertiesFromResource (kCFAllocatorDefault,
+ plist_url.get(),
+ resource_data.ptr_address(),
+ NULL,
+ NULL,
+ &error_code))
{
- CFDictionaryRef property_dict = (CFDictionaryRef) property_list.get();
- CFStringRef product_version_key = CFSTR("ProductVersion");
- CFPropertyListRef product_version_value;
- product_version_value = CFDictionaryGetValue(property_dict, product_version_key);
- if (product_version_value && CFGetTypeID(product_version_value) == CFStringGetTypeID())
+ // Reconstitute the dictionary using the XML data.
+ property_list = CFPropertyListCreateFromXMLData (kCFAllocatorDefault,
+ resource_data.get(),
+ kCFPropertyListImmutable,
+ error_string.ptr_address());
+ if (CFGetTypeID(property_list.get()) == CFDictionaryGetTypeID())
{
- CFStringRef product_version_cfstr = (CFStringRef) product_version_value;
- product_version_str = CFStringGetCStringPtr(product_version_cfstr, kCFStringEncodingUTF8);
- if (product_version_str == NULL) {
- if (CFStringGetCString(product_version_cfstr, buffer, 256, kCFStringEncodingUTF8))
- product_version_str = buffer;
+ CFDictionaryRef property_dict = (CFDictionaryRef) property_list.get();
+ CFStringRef product_version_key = CFSTR("ProductVersion");
+ CFPropertyListRef product_version_value;
+ product_version_value = CFDictionaryGetValue(property_dict, product_version_key);
+ if (product_version_value && CFGetTypeID(product_version_value) == CFStringGetTypeID())
+ {
+ CFStringRef product_version_cfstr = (CFStringRef) product_version_value;
+ product_version_str = CFStringGetCStringPtr(product_version_cfstr, kCFStringEncodingUTF8);
+ if (product_version_str == NULL) {
+ if (CFStringGetCString(product_version_cfstr, buffer, 256, kCFStringEncodingUTF8))
+ product_version_str = buffer;
+ }
}
}
}
@@ -1067,7 +1074,6 @@ GetMacOSXProcessArgs (const ProcessInstanceInfoMatch *match_info_ptr,
{
DataExtractor data (arg_data, arg_data_size, lldb::endian::InlHostByteOrder(), sizeof(void *));
uint32_t offset = 0;
- uint32_t start_offset;
uint32_t argc = data.GetU32 (&offset);
const char *cstr;
@@ -1093,7 +1099,6 @@ GetMacOSXProcessArgs (const ProcessInstanceInfoMatch *match_info_ptr,
Args &proc_args = process_info.GetArguments();
for (int i=0; i<argc; ++i)
{
- start_offset = offset;
cstr = data.GetCStr(&offset);
if (cstr)
proc_args.AppendArgument(cstr);
@@ -1825,7 +1830,7 @@ Host::StartMonitoringChildProcess (Host::MonitorChildProcessCallback callback,
if (callback)
cancel = callback (callback_baton, pid, exited, signal, exit_status);
- if (exited)
+ if (exited || cancel)
{
::dispatch_source_cancel(source);
}
diff --git a/lldb/source/Interpreter/CommandInterpreter.cpp b/lldb/source/Interpreter/CommandInterpreter.cpp
index b807e61bc18..6d09af7f1b7 100644
--- a/lldb/source/Interpreter/CommandInterpreter.cpp
+++ b/lldb/source/Interpreter/CommandInterpreter.cpp
@@ -2537,7 +2537,6 @@ CommandInterpreter::OutputHelpText (Stream &strm,
text_strm.Printf ("%-*s %s %s", max_word_len, word_text, separator, help_text);
const uint32_t max_columns = m_debugger.GetTerminalWidth();
- bool first_line = true;
size_t len = text_strm.GetSize();
const char *text = text_strm.GetData();
@@ -2548,7 +2547,6 @@ CommandInterpreter::OutputHelpText (Stream &strm,
{
if ((text[i] == ' ' && ::strchr((text+i+1), ' ') && chars_left < ::strchr((text+i+1), ' ')-(text+i)) || text[i] == '\n')
{
- first_line = false;
chars_left = max_columns - indent_size;
strm.EOL();
strm.Indent();
diff --git a/lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp b/lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp
index 7800a977db4..fb7272de966 100644
--- a/lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp
+++ b/lldb/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp
@@ -208,7 +208,6 @@ DynamicLoaderDarwinKernel::OSKextLoadedKextSummary::LoadImageUsingMemoryModule (
if (!module_sp)
{
- bool uuid_is_valid = uuid.IsValid();
if (uuid_is_valid)
{
ModuleList &target_images = target.GetImages();
diff --git a/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp b/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
index 7157f405385..cad15fe75f2 100644
--- a/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
+++ b/lldb/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
@@ -564,7 +564,7 @@ EmulateInstructionARM::EmulatePOP (const uint32_t opcode, const ARMEncoding enco
// In ARMv5T and above, this is an interworking branch.
if (!LoadWritePC(context, data))
return false;
- addr += addr_byte_size;
+ //addr += addr_byte_size;
}
context.type = EmulateInstruction::eContextAdjustStackPointer;
@@ -1295,13 +1295,12 @@ EmulateInstructionARM::EmulateADDSPImm (const uint32_t opcode, const ARMEncoding
return false;
uint32_t imm32; // the immediate operand
uint32_t d;
- bool setflags;
+ //bool setflags = false; // Add this back if/when support eEncodingT3 eEncodingA1
switch (encoding)
{
case eEncodingT1:
// d = UInt(Rd); setflags = FALSE; imm32 = ZeroExtend(imm8:'00', 32);
d = Bits32 (opcode, 10, 8);
- setflags = false;
imm32 = (Bits32 (opcode, 7, 0) << 2);
break;
@@ -1309,7 +1308,6 @@ EmulateInstructionARM::EmulateADDSPImm (const uint32_t opcode, const ARMEncoding
case eEncodingT2:
// d = 13; setflags = FALSE; imm32 = ZeroExtend(imm7:'00', 32);
d = 13;
- setflags = false;
imm32 = ThumbImm7Scaled(opcode); // imm32 = ZeroExtend(imm7:'00', 32)
break;
@@ -1335,6 +1333,15 @@ EmulateInstructionARM::EmulateADDSPImm (const uint32_t opcode, const ARMEncoding
{
if (!WriteRegisterUnsigned (context, eRegisterKindDWARF, dwarf_r0 + d, addr))
return false;
+
+ // Add this back if/when support eEncodingT3 eEncodingA1
+ //if (setflags)
+ //{
+ // APSR.N = result<31>;
+ // APSR.Z = IsZeroBit(result);
+ // APSR.C = carry;
+ // APSR.V = overflow;
+ //}
}
}
return true;
@@ -5395,6 +5402,7 @@ EmulateInstructionARM::EmulateADR (const uint32_t opcode, const ARMEncoding enco
case eEncodingT1:
Rd = Bits32(opcode, 10, 8);
imm32 = ThumbImm8Scaled(opcode); // imm32 = ZeroExtend(imm8:'00', 32)
+ add = true;
break;
case eEncodingT2:
case eEncodingT3:
@@ -11505,6 +11513,10 @@ EmulateInstructionARM::EmulateVLD1Single (const uint32_t opcode, const ARMEncodi
else
alignment = 4;
}
+ else
+ {
+ return false;
+ }
// d = UInt(D:Vd); n = UInt(Rn); m = UInt(Rm);
d = (Bit32 (opcode, 22) << 4) | Bits32 (opcode, 15, 12);
n = Bits32 (opcode, 19, 16);
@@ -11841,6 +11853,10 @@ EmulateInstructionARM::EmulateVST1Single (const uint32_t opcode, ARMEncoding enc
else
alignment = 4;
}
+ else
+ {
+ return false;
+ }
// d = UInt(D:Vd); n = UInt(Rn); m = UInt(Rm);
d = (Bit32 (opcode, 22) << 4) | Bits32 (opcode, 15, 12);
n = Bits32 (opcode, 19, 16);
diff --git a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
index 3db50391f33..dbbca6f56f1 100644
--- a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
+++ b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
@@ -877,14 +877,11 @@ ObjectFileELF::ParseDynamicSymbols()
DataExtractor dynsym_data;
if (ReadSectionData(dynsym, dynsym_data))
{
-
const unsigned section_size = dynsym_data.GetByteSize();
- unsigned offset = 0;
unsigned cursor = 0;
while (cursor < section_size)
{
- offset = cursor;
if (!symbol.Parse(dynsym_data, &cursor))
break;
diff --git a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
index 4818ad13a77..7d44f8316e6 100644
--- a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
+++ b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
@@ -2933,13 +2933,8 @@ struct lldb_copy_dyld_cache_local_symbols_entry
func_start_entry->data = true;
addr_t symbol_file_addr = func_start_entry->addr;
- uint32_t symbol_flags = 0;
if (is_arm)
- {
- if (symbol_file_addr & 1)
- symbol_flags = MACHO_NLIST_ARM_SYMBOL_IS_THUMB;
symbol_file_addr &= 0xfffffffffffffffeull;
- }
const FunctionStarts::Entry *next_func_start_entry = function_starts.FindNextEntry (func_start_entry);
const addr_t section_end_file_addr = section_file_addr + symbol_section->GetByteSize();
diff --git a/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp b/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp
index 5fd5b6d9506..7b1a7274046 100644
--- a/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp
+++ b/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp
@@ -99,6 +99,7 @@ PlatformRemoteiOS::CreateInstance (bool force, const ArchSpec *arch)
{
case llvm::Triple::Apple:
create = true;
+ break;
case llvm::Triple::UnknownArch:
create = !arch->TripleVendorWasSpecified();
diff --git a/lldb/source/Plugins/Process/Utility/ARMUtils.h b/lldb/source/Plugins/Process/Utility/ARMUtils.h
index fce066d91ff..76d64e15a53 100644
--- a/lldb/source/Plugins/Process/Utility/ARMUtils.h
+++ b/lldb/source/Plugins/Process/Utility/ARMUtils.h
@@ -25,10 +25,10 @@ static inline uint32_t Align(uint32_t val, uint32_t alignment)
static inline uint32_t DecodeImmShift(const uint32_t type, const uint32_t imm5, ARM_ShifterType &shift_t)
{
- switch (type) {
+ switch (type)
+ {
default:
//assert(0 && "Invalid shift type");
- return UINT32_MAX;
case 0:
shift_t = SRType_LSL;
return imm5;
@@ -50,6 +50,9 @@ static inline uint32_t DecodeImmShift(const uint32_t type, const uint32_t imm5,
return imm5;
}
}
+ shift_t = SRType_Invalid;
+ return UINT32_MAX;
+
}
// A8.6.35 CMP (register) -- Encoding T3
@@ -322,6 +325,7 @@ static inline uint32_t ThumbExpandImm_C(uint32_t opcode, uint32_t carry_in, uint
if (bits(imm12, 11, 10) == 0)
{
switch (bits(imm12, 9, 8)) {
+ default: // Keep static analyzer happy with a default case
case 0:
imm32 = abcdefgh;
break;
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp
index d1040d37d31..e8633358e28 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp
@@ -184,7 +184,7 @@ RegisterContextLLDB::InitializeZerothFrame()
UnwindPlan::RowSP active_row;
int cfa_offset = 0;
- int row_register_kind;
+ int row_register_kind = -1;
if (m_full_unwind_plan_sp && m_full_unwind_plan_sp->PlanValidAtAddress (m_current_pc))
{
active_row = m_full_unwind_plan_sp->GetRowForFunctionOffset (m_current_offset);
@@ -507,7 +507,7 @@ RegisterContextLLDB::InitializeNonZerothFrame()
UnwindPlan::RowSP active_row;
int cfa_offset = 0;
- int row_register_kind;
+ int row_register_kind = -1;
// Try to get by with just the fast UnwindPlan if possible - the full UnwindPlan may be expensive to get
// (e.g. if we have to parse the entire eh_frame section of an ObjectFile for the first time.)
@@ -670,8 +670,8 @@ RegisterContextLLDB::GetFastUnwindPlanForFrame ()
const char *has_fast = "";
if (m_fast_unwind_plan_sp)
has_fast = ", and has a fast UnwindPlan";
- log->Printf("%*sFrame %u frame has a fast UnwindPlan",
- m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number);
+ log->Printf("%*sFrame %u frame%s",
+ m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number, has_fast);
}
m_frame_type = eNormalFrame;
return unwind_plan_sp;
diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
index 4fac83d334c..180c1f3a5ef 100644
--- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
@@ -1824,13 +1824,13 @@ GDBRemoteCommunicationClient::LaunchGDBserverAndGetPort ()
std::string name;
std::string value;
uint16_t port = 0;
- lldb::pid_t pid = LLDB_INVALID_PROCESS_ID;
+ //lldb::pid_t pid = LLDB_INVALID_PROCESS_ID;
while (response.GetNameColonValue(name, value))
{
if (name.size() == 4 && name.compare("port") == 0)
port = Args::StringToUInt32(value.c_str(), 0, 0);
- if (name.size() == 3 && name.compare("pid") == 0)
- pid = Args::StringToUInt32(value.c_str(), LLDB_INVALID_PROCESS_ID, 0);
+// if (name.size() == 3 && name.compare("pid") == 0)
+// pid = Args::StringToUInt32(value.c_str(), LLDB_INVALID_PROCESS_ID, 0);
}
return port;
}
diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
index 06d19e40033..6e8b3c4251e 100644
--- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
@@ -229,8 +229,7 @@ ProcessGDBRemote::BuildDynamicRegisterInfo (bool force)
m_register_info.Clear();
uint32_t reg_offset = 0;
uint32_t reg_num = 0;
- StringExtractorGDBRemote::ResponseType response_type;
- for (response_type = StringExtractorGDBRemote::eResponse;
+ for (StringExtractorGDBRemote::ResponseType response_type = StringExtractorGDBRemote::eResponse;
response_type == StringExtractorGDBRemote::eResponse;
++reg_num)
{
@@ -376,7 +375,6 @@ ProcessGDBRemote::BuildDynamicRegisterInfo (bool force)
}
else
{
- response_type = StringExtractorGDBRemote::eError;
break;
}
}
@@ -1271,7 +1269,6 @@ ProcessGDBRemote::SetThreadStopInfo (StringExtractor& stop_packet)
uint32_t exc_type = 0;
std::vector<addr_t> exc_data;
addr_t thread_dispatch_qaddr = LLDB_INVALID_ADDRESS;
- uint32_t exc_data_count = 0;
ThreadSP thread_sp;
while (stop_packet.GetNameColonValue(name, value))
@@ -1281,11 +1278,6 @@ ProcessGDBRemote::SetThreadStopInfo (StringExtractor& stop_packet)
// exception type in big endian hex
exc_type = Args::StringToUInt32 (value.c_str(), 0, 16);
}
- else if (name.compare("mecount") == 0)
- {
- // exception count in big endian hex
- exc_data_count = Args::StringToUInt32 (value.c_str(), 0, 16);
- }
else if (name.compare("medata") == 0)
{
// exception data in big endian hex
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp
index af870d51836..b0ec6091f8b 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFCompileUnit.cpp
@@ -618,9 +618,8 @@ DWARFCompileUnit::Index (const uint32_t cu_idx,
DWARFDebugInfoEntry::Attributes attributes;
const char *name = NULL;
const char *mangled_cstr = NULL;
- bool is_variable = false;
bool is_declaration = false;
- bool is_artificial = false;
+ //bool is_artificial = false;
bool has_address = false;
bool has_location = false;
bool is_global_or_static_variable = false;
@@ -629,8 +628,6 @@ DWARFCompileUnit::Index (const uint32_t cu_idx,
const size_t num_attributes = die.GetAttributes(m_dwarf2Data, this, fixed_form_sizes, attributes);
if (num_attributes > 0)
{
- is_variable = tag == DW_TAG_variable;
-
for (uint32_t i=0; i<num_attributes; ++i)
{
dw_attr_t attr = attributes.AttributeAtIndex(i);
@@ -647,10 +644,10 @@ DWARFCompileUnit::Index (const uint32_t cu_idx,
is_declaration = form_value.Unsigned() != 0;
break;
- case DW_AT_artificial:
- if (attributes.ExtractFormValueAtIndex(m_dwarf2Data, i, form_value))
- is_artificial = form_value.Unsigned() != 0;
- break;
+// case DW_AT_artificial:
+// if (attributes.ExtractFormValueAtIndex(m_dwarf2Data, i, form_value))
+// is_artificial = form_value.Unsigned() != 0;
+// break;
case DW_AT_MIPS_linkage_name:
if (attributes.ExtractFormValueAtIndex(m_dwarf2Data, i, form_value))
@@ -798,7 +795,7 @@ DWARFCompileUnit::Index (const uint32_t cu_idx,
// as our name. If it starts with '_', then it is ok, else compare
// the string to make sure it isn't the same and we don't end up
// with duplicate entries
- if (name != mangled_cstr && ((mangled_cstr[0] == '_') || (::strcmp(name, mangled_cstr) != 0)))
+ if (name != mangled_cstr && ((mangled_cstr[0] == '_') || (name && ::strcmp(name, mangled_cstr) != 0)))
{
Mangled mangled (mangled_cstr, true);
func_fullnames.Insert (mangled.GetMangledName(), die.GetOffset());
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugPubnames.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugPubnames.cpp
index 8c2f46a48c7..79f36d28ca5 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugPubnames.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugPubnames.cpp
@@ -105,7 +105,6 @@ DWARFDebugPubnames::GeneratePubnames(SymbolFileDWARF* dwarf2Data)
const char *name = NULL;
const char *mangled = NULL;
bool add_die = false;
- bool is_variable = false;
const size_t num_attributes = die->GetAttributes(dwarf2Data, cu, fixed_form_sizes, attributes);
if (num_attributes > 0)
{
@@ -113,8 +112,6 @@ DWARFDebugPubnames::GeneratePubnames(SymbolFileDWARF* dwarf2Data)
dw_tag_t tag = die->Tag();
- is_variable = tag == DW_TAG_variable;
-
for (i=0; i<num_attributes; ++i)
{
dw_attr_t attr = attributes.AttributeAtIndex(i);
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp
index 07b232a55e5..6ccd5601aab 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp
@@ -186,83 +186,83 @@ DWARFFormValue::SkipValue(const DataExtractor& debug_info_data, uint32_t* offset
bool
DWARFFormValue::SkipValue(dw_form_t form, const DataExtractor& debug_info_data, uint32_t* offset_ptr, const DWARFCompileUnit* cu)
{
- bool indirect = false;
- do
+ switch (form)
{
- indirect = false;
- switch (form)
- {
- // Blocks if inlined data that have a length field and the data bytes
- // inlined in the .debug_info
- case DW_FORM_exprloc:
- case DW_FORM_block: { dw_uleb128_t size = debug_info_data.GetULEB128(offset_ptr); *offset_ptr += size; } return true;
- case DW_FORM_block1: { dw_uleb128_t size = debug_info_data.GetU8(offset_ptr); *offset_ptr += size; } return true;
- case DW_FORM_block2: { dw_uleb128_t size = debug_info_data.GetU16(offset_ptr); *offset_ptr += size; } return true;
- case DW_FORM_block4: { dw_uleb128_t size = debug_info_data.GetU32(offset_ptr); *offset_ptr += size; } return true;
-
- // Inlined NULL terminated C-strings
- case DW_FORM_string:
- debug_info_data.GetCStr(offset_ptr);
- return true;
-
- // Compile unit address sized values
- case DW_FORM_addr:
- case DW_FORM_ref_addr:
- *offset_ptr += DWARFCompileUnit::GetAddressByteSize(cu);
- return true;
-
- // 0 bytes values (implied from DW_FORM)
- case DW_FORM_flag_present:
- return true;
-
- // 1 byte values
- case DW_FORM_data1:
- case DW_FORM_flag:
- case DW_FORM_ref1:
- *offset_ptr += 1;
- return true;
+ // Blocks if inlined data that have a length field and the data bytes
+ // inlined in the .debug_info
+ case DW_FORM_exprloc:
+ case DW_FORM_block: { dw_uleb128_t size = debug_info_data.GetULEB128(offset_ptr); *offset_ptr += size; } return true;
+ case DW_FORM_block1: { dw_uleb128_t size = debug_info_data.GetU8(offset_ptr); *offset_ptr += size; } return true;
+ case DW_FORM_block2: { dw_uleb128_t size = debug_info_data.GetU16(offset_ptr); *offset_ptr += size; } return true;
+ case DW_FORM_block4: { dw_uleb128_t size = debug_info_data.GetU32(offset_ptr); *offset_ptr += size; } return true;
- // 2 byte values
- case DW_FORM_data2:
- case DW_FORM_ref2:
- *offset_ptr += 2;
- return true;
+ // Inlined NULL terminated C-strings
+ case DW_FORM_string:
+ debug_info_data.GetCStr(offset_ptr);
+ return true;
- // 32 bit for DWARF 32, 64 for DWARF 64
- case DW_FORM_sec_offset:
- *offset_ptr += 4;
- return true;
+ // Compile unit address sized values
+ case DW_FORM_addr:
+ case DW_FORM_ref_addr:
+ *offset_ptr += DWARFCompileUnit::GetAddressByteSize(cu);
+ return true;
- // 4 byte values
- case DW_FORM_strp:
- case DW_FORM_data4:
- case DW_FORM_ref4:
- *offset_ptr += 4;
- return true;
+ // 0 bytes values (implied from DW_FORM)
+ case DW_FORM_flag_present:
+ return true;
- // 8 byte values
- case DW_FORM_data8:
- case DW_FORM_ref8:
- case DW_FORM_ref_sig8:
- *offset_ptr += 8;
- return true;
+ // 1 byte values
+ case DW_FORM_data1:
+ case DW_FORM_flag:
+ case DW_FORM_ref1:
+ *offset_ptr += 1;
+ return true;
- // signed or unsigned LEB 128 values
- case DW_FORM_sdata:
- case DW_FORM_udata:
- case DW_FORM_ref_udata:
- debug_info_data.Skip_LEB128(offset_ptr);
- return true;
+ // 2 byte values
+ case DW_FORM_data2:
+ case DW_FORM_ref2:
+ *offset_ptr += 2;
+ return true;
- case DW_FORM_indirect:
- indirect = true;
- form = debug_info_data.GetULEB128(offset_ptr);
- break;
- default:
- return false;
+ // 32 bit for DWARF 32, 64 for DWARF 64
+ case DW_FORM_sec_offset:
+ *offset_ptr += 4;
+ return true;
+
+ // 4 byte values
+ case DW_FORM_strp:
+ case DW_FORM_data4:
+ case DW_FORM_ref4:
+ *offset_ptr += 4;
+ return true;
+
+ // 8 byte values
+ case DW_FORM_data8:
+ case DW_FORM_ref8:
+ case DW_FORM_ref_sig8:
+ *offset_ptr += 8;
+ return true;
+
+ // signed or unsigned LEB 128 values
+ case DW_FORM_sdata:
+ case DW_FORM_udata:
+ case DW_FORM_ref_udata:
+ debug_info_data.Skip_LEB128(offset_ptr);
+ return true;
+
+ case DW_FORM_indirect:
+ {
+ dw_form_t indirect_form = debug_info_data.GetULEB128(offset_ptr);
+ return DWARFFormValue::SkipValue (indirect_form,
+ debug_info_data,
+ offset_ptr,
+ cu);
}
- } while (indirect);
- return true;
+
+ default:
+ break;
+ }
+ return false;
}
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
index 3b474535ed1..371343c7f4b 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
@@ -421,16 +421,8 @@ SymbolFileDWARF::CalculateAbilities ()
return 0;
uint64_t debug_abbrev_file_size = 0;
- uint64_t debug_aranges_file_size = 0;
- uint64_t debug_frame_file_size = 0;
uint64_t debug_info_file_size = 0;
uint64_t debug_line_file_size = 0;
- uint64_t debug_loc_file_size = 0;
- uint64_t debug_macinfo_file_size = 0;
- uint64_t debug_pubnames_file_size = 0;
- uint64_t debug_pubtypes_file_size = 0;
- uint64_t debug_ranges_file_size = 0;
- uint64_t debug_str_file_size = 0;
section = section_list->FindSectionByName(GetDWARFMachOSegmentName ()).get();
@@ -449,15 +441,11 @@ SymbolFileDWARF::CalculateAbilities ()
m_flags.Set (flagsGotDebugAbbrevData);
section = section_list->FindSectionByType (eSectionTypeDWARFDebugAranges, true).get();
- if (section)
- debug_aranges_file_size = section->GetFileSize();
- else
+ if (!section)
m_flags.Set (flagsGotDebugArangesData);
section = section_list->FindSectionByType (eSectionTypeDWARFDebugFrame, true).get();
- if (section)
- debug_frame_file_size = section->GetFileSize();
- else
+ if (!section)
m_flags.Set (flagsGotDebugFrameData);
section = section_list->FindSectionByType (eSectionTypeDWARFDebugLine, true).get();
@@ -467,39 +455,27 @@ SymbolFileDWARF::CalculateAbilities ()
m_flags.Set (flagsGotDebugLineData);
section = section_list->FindSectionByType (eSectionTypeDWARFDebugLoc, true).get();
- if (section)
- debug_loc_file_size = section->GetFileSize();
- else
+ if (!section)
m_flags.Set (flagsGotDebugLocData);
section = section_list->FindSectionByType (eSectionTypeDWARFDebugMacInfo, true).get();
- if (section)
- debug_macinfo_file_size = section->GetFileSize();
- else
+ if (!section)
m_flags.Set (flagsGotDebugMacInfoData);
section = section_list->FindSectionByType (eSectionTypeDWARFDebugPubNames, true).get();
- if (section)
- debug_pubnames_file_size = section->GetFileSize();
- else
+ if (!section)
m_flags.Set (flagsGotDebugPubNamesData);
section = section_list->FindSectionByType (eSectionTypeDWARFDebugPubTypes, true).get();
- if (section)
- debug_pubtypes_file_size = section->GetFileSize();
- else
+ if (!section)
m_flags.Set (flagsGotDebugPubTypesData);
section = section_list->FindSectionByType (eSectionTypeDWARFDebugRanges, true).get();
- if (section)
- debug_ranges_file_size = section->GetFileSize();
- else
+ if (!section)
m_flags.Set (flagsGotDebugRangesData);
section = section_list->FindSectionByType (eSectionTypeDWARFDebugStr, true).get();
- if (section)
- debug_str_file_size = section->GetFileSize();
- else
+ if (!section)
m_flags.Set (flagsGotDebugStrData);
}
else
@@ -1834,7 +1810,7 @@ SymbolFileDWARF::ParseChildMembers
AccessType accessibility = default_accessibility;
bool is_virtual = false;
bool is_base_of_class = true;
- off_t member_offset = 0;
+ //off_t member_offset = 0;
uint32_t i;
for (i=0; i<num_attributes; ++i)
{
@@ -1848,31 +1824,31 @@ SymbolFileDWARF::ParseChildMembers
case DW_AT_decl_line: decl.SetLine(form_value.Unsigned()); break;
case DW_AT_decl_column: decl.SetColumn(form_value.Unsigned()); break;
case DW_AT_type: encoding_uid = form_value.Reference(dwarf_cu); break;
- case DW_AT_data_member_location:
- if (form_value.BlockData())
- {
- Value initialValue(0);
- Value memberOffset(0);
- const DataExtractor& debug_info_data = get_debug_info_data();
- uint32_t block_length = form_value.Unsigned();
- uint32_t block_offset = form_value.BlockData() - debug_info_data.GetDataStart();
- if (DWARFExpression::Evaluate (NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- debug_info_data,
- block_offset,
- block_length,
- eRegisterKindDWARF,
- &initialValue,
- memberOffset,
- NULL))
- {
- member_offset = memberOffset.ResolveValue(NULL, NULL).UInt();
- }
- }
- break;
+// case DW_AT_data_member_location:
+// if (form_value.BlockData())
+// {
+// Value initialValue(0);
+// Value memberOffset(0);
+// const DataExtractor& debug_info_data = get_debug_info_data();
+// uint32_t block_length = form_value.Unsigned();
+// uint32_t block_offset = form_value.BlockData() - debug_info_data.GetDataStart();
+// if (DWARFExpression::Evaluate (NULL,
+// NULL,
+// NULL,
+// NULL,
+// NULL,
+// debug_info_data,
+// block_offset,
+// block_length,
+// eRegisterKindDWARF,
+// &initialValue,
+// memberOffset,
+// NULL))
+// {
+// member_offset = memberOffset.ResolveValue(NULL, NULL).UInt();
+// }
+// }
+// break;
case DW_AT_accessibility:
accessibility = DW_ACCESS_to_AccessType(form_value.Unsigned());
@@ -4011,58 +3987,12 @@ SymbolFileDWARF::ParseChildArrayInfo
const dw_tag_t tag = die->Tag();
switch (tag)
{
- case DW_TAG_enumerator:
- {
- DWARFDebugInfoEntry::Attributes attributes;
- const size_t num_child_attributes = die->GetAttributes(this, dwarf_cu, fixed_form_sizes, attributes);
- if (num_child_attributes > 0)
- {
- const char *name = NULL;
- bool got_value = false;
- int64_t enum_value = 0;
-
- uint32_t i;
- for (i=0; i<num_child_attributes; ++i)
- {
- const dw_attr_t attr = attributes.AttributeAtIndex(i);
- DWARFFormValue form_value;
- if (attributes.ExtractFormValueAtIndex(this, i, form_value))
- {
- switch (attr)
- {
- case DW_AT_const_value:
- got_value = true;
- enum_value = form_value.Unsigned();
- break;
-
- case DW_AT_name:
- name = form_value.AsCString(&get_debug_str_data());
- break;
-
- case DW_AT_description:
- default:
- case DW_AT_decl_file:
- case DW_AT_decl_line:
- case DW_AT_decl_column:
- case DW_AT_sibling:
- break;
- }
- }
- }
- }
- }
- break;
-
case DW_TAG_subrange_type:
{
DWARFDebugInfoEntry::Attributes attributes;
const size_t num_child_attributes = die->GetAttributes(this, dwarf_cu, fixed_form_sizes, attributes);
if (num_child_attributes > 0)
{
- const char *name = NULL;
- bool got_value = false;
- uint64_t byte_size = 0;
- int64_t enum_value = 0;
uint64_t num_elements = 0;
uint64_t lower_bound = 0;
uint64_t upper_bound = 0;
@@ -4075,13 +4005,7 @@ SymbolFileDWARF::ParseChildArrayInfo
{
switch (attr)
{
- case DW_AT_const_value:
- got_value = true;
- enum_value = form_value.Unsigned();
- break;
-
case DW_AT_name:
- name = form_value.AsCString(&get_debug_str_data());
break;
case DW_AT_count:
@@ -4096,10 +4020,6 @@ SymbolFileDWARF::ParseChildArrayInfo
byte_stride = form_value.Unsigned();
break;
- case DW_AT_byte_size:
- byte_size = form_value.Unsigned();
- break;
-
case DW_AT_lower_bound:
lower_bound = form_value.Unsigned();
break;
@@ -5152,7 +5072,6 @@ SymbolFileDWARF::ParseType (const SymbolContext& sc, DWARFCompileUnit* dwarf_cu,
ConstString type_name_const_str;
Type::ResolveState resolve_state = Type::eResolveStateUnresolved;
size_t byte_size = 0;
- bool byte_size_valid = false;
Declaration decl;
Type::EncodingDataType encoding_data_type = Type::eEncodingIsUID;
@@ -5206,7 +5125,7 @@ SymbolFileDWARF::ParseType (const SymbolContext& sc, DWARFCompileUnit* dwarf_cu,
if (type_name_cstr)
type_name_const_str.SetCString(type_name_cstr);
break;
- case DW_AT_byte_size: byte_size = form_value.Unsigned(); byte_size_valid = true; break;
+ case DW_AT_byte_size: byte_size = form_value.Unsigned(); break;
case DW_AT_encoding: encoding = form_value.Unsigned(); break;
case DW_AT_type: encoding_uid = form_value.Reference(dwarf_cu); break;
default:
@@ -5328,6 +5247,7 @@ SymbolFileDWARF::ParseType (const SymbolContext& sc, DWARFCompileUnit* dwarf_cu,
{
// Set a bit that lets us know that we are currently parsing this
m_die_to_type[die] = DIE_IS_BEING_PARSED;
+ bool byte_size_valid = false;
LanguageType class_language = eLanguageTypeUnknown;
bool is_complete_objc_class = false;
@@ -5711,9 +5631,9 @@ SymbolFileDWARF::ParseType (const SymbolContext& sc, DWARFCompileUnit* dwarf_cu,
type_name_const_str.SetCString(type_name_cstr);
break;
case DW_AT_type: encoding_uid = form_value.Reference(dwarf_cu); break;
- case DW_AT_byte_size: byte_size = form_value.Unsigned(); byte_size_valid = true; break;
- case DW_AT_accessibility: accessibility = DW_ACCESS_to_AccessType(form_value.Unsigned()); break;
- case DW_AT_declaration: is_forward_declaration = form_value.Unsigned() != 0; break;
+ case DW_AT_byte_size: byte_size = form_value.Unsigned(); break;
+ case DW_AT_accessibility: break; //accessibility = DW_ACCESS_to_AccessType(form_value.Unsigned()); break;
+ case DW_AT_declaration: break; //is_forward_declaration = form_value.Unsigned() != 0; break;
case DW_AT_allocated:
case DW_AT_associated:
case DW_AT_bit_stride:
@@ -5781,7 +5701,7 @@ SymbolFileDWARF::ParseType (const SymbolContext& sc, DWARFCompileUnit* dwarf_cu,
// Set a bit that lets us know that we are currently parsing this
m_die_to_type[die] = DIE_IS_BEING_PARSED;
- const char *mangled = NULL;
+ //const char *mangled = NULL;
dw_offset_t type_die_offset = DW_INVALID_OFFSET;
bool is_variadic = false;
bool is_inline = false;
@@ -5816,10 +5736,10 @@ SymbolFileDWARF::ParseType (const SymbolContext& sc, DWARFCompileUnit* dwarf_cu,
type_name_const_str.SetCString(type_name_cstr);
break;
- case DW_AT_MIPS_linkage_name: mangled = form_value.AsCString(&get_debug_str_data()); break;
+ case DW_AT_MIPS_linkage_name: break; // mangled = form_value.AsCString(&get_debug_str_data()); break;
case DW_AT_type: type_die_offset = form_value.Reference(dwarf_cu); break;
case DW_AT_accessibility: accessibility = DW_ACCESS_to_AccessType(form_value.Unsigned()); break;
- case DW_AT_declaration: is_forward_declaration = form_value.Unsigned() != 0; break;
+ case DW_AT_declaration: break; // is_forward_declaration = form_value.Unsigned() != 0; break;
case DW_AT_inline: is_inline = form_value.Unsigned() != 0; break;
case DW_AT_virtuality: is_virtual = form_value.Unsigned() != 0; break;
case DW_AT_explicit: is_explicit = form_value.Unsigned() != 0; break;
@@ -6214,11 +6134,11 @@ SymbolFileDWARF::ParseType (const SymbolContext& sc, DWARFCompileUnit* dwarf_cu,
break;
case DW_AT_type: type_die_offset = form_value.Reference(dwarf_cu); break;
- case DW_AT_byte_size: byte_size = form_value.Unsigned(); byte_size_valid = true; break;
+ case DW_AT_byte_size: break; // byte_size = form_value.Unsigned(); break;
case DW_AT_byte_stride: byte_stride = form_value.Unsigned(); break;
case DW_AT_bit_stride: bit_stride = form_value.Unsigned(); break;
- case DW_AT_accessibility: accessibility = DW_ACCESS_to_AccessType(form_value.Unsigned()); break;
- case DW_AT_declaration: is_forward_declaration = form_value.Unsigned() != 0; break;
+ case DW_AT_accessibility: break; // accessibility = DW_ACCESS_to_AccessType(form_value.Unsigned()); break;
+ case DW_AT_declaration: break; // is_forward_declaration = form_value.Unsigned() != 0; break;
case DW_AT_allocated:
case DW_AT_associated:
case DW_AT_data_location:
@@ -6597,7 +6517,7 @@ SymbolFileDWARF::ParseVariableDIE
bool is_external = false;
bool is_artificial = false;
bool location_is_const_value_data = false;
- AccessType accessibility = eAccessNone;
+ //AccessType accessibility = eAccessNone;
for (i=0; i<num_attributes; ++i)
{
@@ -6644,7 +6564,7 @@ SymbolFileDWARF::ParseVariableDIE
break;
case DW_AT_artificial: is_artificial = form_value.Unsigned() != 0; break;
- case DW_AT_accessibility: accessibility = DW_ACCESS_to_AccessType(form_value.Unsigned()); break;
+ case DW_AT_accessibility: break; //accessibility = DW_ACCESS_to_AccessType(form_value.Unsigned()); break;
case DW_AT_declaration:
case DW_AT_description:
case DW_AT_endianity:
diff --git a/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp b/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp
index d2cd3a542ed..a3f6445201f 100644
--- a/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp
+++ b/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp
@@ -225,31 +225,37 @@ SymbolVendorMacOSX::CreateInstance (const lldb::ModuleSP &module_sp)
xmlNode *value_node = key_node->next;
while (value_node && value_node->type != XML_ELEMENT_NODE)
value_node = value_node->next;
- if (strcmp((const char *)value_node->name, "string") == 0)
+ if (value_node && value_node->name)
{
- const char *node_content = (const char *)::xmlNodeGetContent(value_node);
- if (node_content)
+ if (strcmp((const char *)value_node->name, "string") == 0)
{
- strncpy(DBGBuildSourcePath, node_content, sizeof(DBGBuildSourcePath));
+ const char *node_content = (const char *)::xmlNodeGetContent(value_node);
+ if (node_content)
+ {
+ strncpy(DBGBuildSourcePath, node_content, sizeof(DBGBuildSourcePath));
+ }
}
+ key_node = value_node;
}
- key_node = value_node;
}
else if (strcmp(key_name, "DBGSourcePath") == 0)
{
xmlNode *value_node = key_node->next;
while (value_node && value_node->type != XML_ELEMENT_NODE)
value_node = value_node->next;
- if (strcmp((const char *)value_node->name, "string") == 0)
+ if (value_node && value_node->name)
{
- const char *node_content = (const char *)::xmlNodeGetContent(value_node);
- if (node_content)
+ if (strcmp((const char *)value_node->name, "string") == 0)
{
- FileSpec resolved_source_path(node_content, true);
- resolved_source_path.GetPath(DBGSourcePath, sizeof(DBGSourcePath));
+ const char *node_content = (const char *)::xmlNodeGetContent(value_node);
+ if (node_content)
+ {
+ FileSpec resolved_source_path(node_content, true);
+ resolved_source_path.GetPath(DBGSourcePath, sizeof(DBGSourcePath));
+ }
}
+ key_node = value_node;
}
- key_node = value_node;
}
}
}
diff --git a/lldb/source/Symbol/ClangASTContext.cpp b/lldb/source/Symbol/ClangASTContext.cpp
index 54fd53c74d1..ca516c90d98 100644
--- a/lldb/source/Symbol/ClangASTContext.cpp
+++ b/lldb/source/Symbol/ClangASTContext.cpp
@@ -2420,7 +2420,7 @@ ClangASTContext::AddObjCClassProperty
{
ObjCInterfaceDecl *class_interface_decl = objc_class_type->getInterface();
- clang_type_t property_opaque_type_to_access;
+ clang_type_t property_opaque_type_to_access = NULL;
if (property_opaque_type)
property_opaque_type_to_access = property_opaque_type;
diff --git a/lldb/source/Symbol/ClangASTImporter.cpp b/lldb/source/Symbol/ClangASTImporter.cpp
index c94b4554e56..fe4c2aa3d65 100644
--- a/lldb/source/Symbol/ClangASTImporter.cpp
+++ b/lldb/source/Symbol/ClangASTImporter.cpp
@@ -161,7 +161,7 @@ ClangASTImporter::CompleteDecl (clang::Decl *decl)
CompleteObjCInterfaceDecl(interface_decl);
}
}
- else if (ObjCProtocolDecl *protocol_decl = dyn_cast<ObjCProtocolDecl>(protocol_decl))
+ else if (ObjCProtocolDecl *protocol_decl = dyn_cast<ObjCProtocolDecl>(decl))
{
if (!protocol_decl->getDefinition())
protocol_decl->startDefinition();
diff --git a/lldb/source/Symbol/DWARFCallFrameInfo.cpp b/lldb/source/Symbol/DWARFCallFrameInfo.cpp
index b1113031743..fcd02fc3188 100644
--- a/lldb/source/Symbol/DWARFCallFrameInfo.cpp
+++ b/lldb/source/Symbol/DWARFCallFrameInfo.cpp
@@ -398,7 +398,6 @@ DWARFCallFrameInfo::FDEToUnwindPlan (dw_offset_t offset, Address startaddr, Unwi
uint32_t reg_num = 0;
int32_t op_offset = 0;
- uint32_t tmp_uval32;
uint32_t code_align = cie->code_align;
int32_t data_align = cie->data_align;
@@ -750,7 +749,6 @@ DWARFCallFrameInfo::FDEToUnwindPlan (dw_offset_t offset, Address startaddr, Unwi
case DW_CFA_val_offset : // 0x14
case DW_CFA_val_offset_sf : // 0x15
default:
- tmp_uval32 = extended_opcode;
break;
}
}
diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp
index 61da768995e..4b55e2738e3 100644
--- a/lldb/source/Target/Process.cpp
+++ b/lldb/source/Target/Process.cpp
@@ -3179,11 +3179,11 @@ Process::ShouldBroadcastEvent (Event *event_ptr)
// break at main.cpp:58, run and hit the breakpoints on
// multiple threads, then somehow during the stepping over
// of all breakpoints no run gets reported.
- return_value = true;
// This is a transition from stop to run.
switch (m_thread_list.ShouldReportRun (event_ptr))
{
+ default:
case eVoteYes:
case eVoteNoOpinion:
return_value = true;
@@ -4258,7 +4258,6 @@ Process::RunThreadPlan (ExecutionContext &exe_ctx,
}
// Now wait for the process to stop again:
- stop_state = lldb::eStateInvalid;
event_sp.reset();
if (log)
diff --git a/lldb/tools/darwin-debug/darwin-debug.cpp b/lldb/tools/darwin-debug/darwin-debug.cpp
index a3306a53e02..1fe2e5948ff 100644
--- a/lldb/tools/darwin-debug/darwin-debug.cpp
+++ b/lldb/tools/darwin-debug/darwin-debug.cpp
@@ -164,6 +164,7 @@ posix_spawn_for_debug
int main (int argc, char *const *argv, char *const *envp, const char **apple)
{
+#if defined (DEBUG_LLDB_LAUNCHER)
const char *program_name = strrchr(apple[0], '/');
if (program_name)
@@ -171,7 +172,6 @@ int main (int argc, char *const *argv, char *const *envp, const char **apple)
else
program_name = apple[0];
-#if defined (DEBUG_LLDB_LAUNCHER)
printf("%s called with:\n", program_name);
for (int i=0; i<argc; ++i)
printf("argv[%u] = '%s'\n", i, argv[i]);
diff --git a/lldb/tools/debugserver/source/DNB.cpp b/lldb/tools/debugserver/source/DNB.cpp
index d6687449557..820da8b86a2 100644
--- a/lldb/tools/debugserver/source/DNB.cpp
+++ b/lldb/tools/debugserver/source/DNB.cpp
@@ -1214,9 +1214,9 @@ DNBPrintf (nub_process_t pid, nub_thread_t tid, nub_addr_t base_addr, FILE *file
case '%':
{
f++; // Skip the '%' character
- int min_field_width = 0;
- int precision = 0;
- uint32_t flags = 0;
+// int min_field_width = 0;
+// int precision = 0;
+ //uint32_t flags = 0;
uint32_t length_modifiers = 0;
uint32_t byte_size = 0;
uint32_t actual_byte_size = 0;
@@ -1233,12 +1233,12 @@ DNBPrintf (nub_process_t pid, nub_thread_t tid, nub_addr_t base_addr, FILE *file
// Decode any flags
switch (*f)
{
- case '#': fprintf_format += *f++; flags |= alternate_form; break;
- case '0': fprintf_format += *f++; flags |= zero_padding; break;
- case '-': fprintf_format += *f++; flags |= negative_field_width; break;
- case ' ': fprintf_format += *f++; flags |= blank_space; break;
- case '+': fprintf_format += *f++; flags |= show_sign; break;
- case ',': fprintf_format += *f++; flags |= show_thousands_separator;break;
+ case '#': fprintf_format += *f++; break; //flags |= alternate_form; break;
+ case '0': fprintf_format += *f++; break; //flags |= zero_padding; break;
+ case '-': fprintf_format += *f++; break; //flags |= negative_field_width; break;
+ case ' ': fprintf_format += *f++; break; //flags |= blank_space; break;
+ case '+': fprintf_format += *f++; break; //flags |= show_sign; break;
+ case ',': fprintf_format += *f++; break; //flags |= show_thousands_separator;break;
case '{':
case '[':
{
@@ -1330,7 +1330,8 @@ DNBPrintf (nub_process_t pid, nub_thread_t tid, nub_addr_t base_addr, FILE *file
// Check for a minimum field width
if (isdigit(*f))
{
- min_field_width = strtoul(f, &end, 10);
+ //min_field_width = strtoul(f, &end, 10);
+ strtoul(f, &end, 10);
if (end > f)
{
fprintf_format.append(f, end - f);
@@ -1346,7 +1347,8 @@ DNBPrintf (nub_process_t pid, nub_thread_t tid, nub_addr_t base_addr, FILE *file
if (isdigit(*f))
{
fprintf_format += '.';
- precision = strtoul(f, &end, 10);
+ //precision = strtoul(f, &end, 10);
+ strtoul(f, &end, 10);
if (end > f)
{
fprintf_format.append(f, end - f);
@@ -1453,7 +1455,7 @@ DNBPrintf (nub_process_t pid, nub_thread_t tid, nub_addr_t base_addr, FILE *file
byte_size = sizeof(char);
else if (length_modifiers & length_mod_h)
byte_size = sizeof(short);
- if (length_modifiers & length_mod_ll)
+ else if (length_modifiers & length_mod_ll)
byte_size = sizeof(long long);
else if (length_modifiers & length_mod_l)
byte_size = sizeof(long);
diff --git a/lldb/tools/debugserver/source/MacOSX/MachException.cpp b/lldb/tools/debugserver/source/MacOSX/MachException.cpp
index ead512ea148..9856867d11e 100644
--- a/lldb/tools/debugserver/source/MacOSX/MachException.cpp
+++ b/lldb/tools/debugserver/source/MacOSX/MachException.cpp
@@ -122,7 +122,6 @@ catch_mach_exception_raise_state_identity
mach_msg_type_number_t *new_stateCnt
)
{
- kern_return_t kret;
if (DNBLogCheckLogBit(LOG_EXCEPTIONS))
{
DNBLogThreaded("::%s ( exc_port = 0x%4.4x, thd_port = 0x%4.4x, tsk_port = 0x%4.4x, exc_type = %d ( %s ), exc_data[%d] = { 0x%llx, 0x%llx })",
@@ -135,8 +134,8 @@ catch_mach_exception_raise_state_identity
(uint64_t)(exc_data_count > 0 ? exc_data[0] : 0xBADDBADD),
(uint64_t)(exc_data_count > 1 ? exc_data[1] : 0xBADDBADD));
}
- kret = mach_port_deallocate (mach_task_self (), task_port);
- kret = mach_port_deallocate (mach_task_self (), thread_port);
+ mach_port_deallocate (mach_task_self (), task_port);
+ mach_port_deallocate (mach_task_self (), thread_port);
return KERN_FAILURE;
}
@@ -229,7 +228,7 @@ MachException::Data::GetStopInfo(struct DNBThreadStopInfo *stop_info) const
if (desc < end_desc)
{
const char *sig_str = SysSignal::Name(soft_signal);
- desc += snprintf(desc, end_desc - desc, " EXC_SOFT_SIGNAL( %i ( %s ))", soft_signal, sig_str ? sig_str : "unknown signal");
+ snprintf(desc, end_desc - desc, " EXC_SOFT_SIGNAL( %i ( %s ))", soft_signal, sig_str ? sig_str : "unknown signal");
}
}
else
diff --git a/lldb/tools/debugserver/source/MacOSX/MachProcess.cpp b/lldb/tools/debugserver/source/MacOSX/MachProcess.cpp
index 4d787782c60..2dcbb6727cd 100644
--- a/lldb/tools/debugserver/source/MacOSX/MachProcess.cpp
+++ b/lldb/tools/debugserver/source/MacOSX/MachProcess.cpp
@@ -421,8 +421,7 @@ MachProcess::DoSIGSTOP (bool clear_bps_and_wps, bool allow_running, uint32_t *th
{
DisableAllBreakpoints (true);
DisableAllWatchpoints (true);
- // The static analyzer complains about this, but just leave the following line in.
- clear_bps_and_wps = false;
+ //clear_bps_and_wps = false;
}
uint32_t thread_idx = m_thread_list.GetThreadIndexForThreadStoppedWithSignal (SIGSTOP);
if (thread_idx_ptr)
@@ -1865,18 +1864,20 @@ MachProcess::ForkChildForPTraceDebugging
// If our parent is setgid, lets make sure we don't inherit those
// extra powers due to nepotism.
- ::setgid (getgid ());
+ if (::setgid (getgid ()) == 0)
+ {
- // Let the child have its own process group. We need to execute
- // this call in both the child and parent to avoid a race condition
- // between the two processes.
- ::setpgid (0, 0); // Set the child process group to match its pid
+ // Let the child have its own process group. We need to execute
+ // this call in both the child and parent to avoid a race condition
+ // between the two processes.
+ ::setpgid (0, 0); // Set the child process group to match its pid
- // Sleep a bit to before the exec call
- ::sleep (1);
+ // Sleep a bit to before the exec call
+ ::sleep (1);
- // Turn this process into
- ::execv (path, (char * const *)argv);
+ // Turn this process into
+ ::execv (path, (char * const *)argv);
+ }
// Exit with error code. Child process should have taken
// over in above exec call and if the exec fails it will
// exit the child process below.
diff --git a/lldb/tools/debugserver/source/MacOSX/MachThreadList.cpp b/lldb/tools/debugserver/source/MacOSX/MachThreadList.cpp
index b8044fe6c7f..8e35069fd8a 100644
--- a/lldb/tools/debugserver/source/MacOSX/MachThreadList.cpp
+++ b/lldb/tools/debugserver/source/MacOSX/MachThreadList.cpp
@@ -470,9 +470,9 @@ MachThreadList::DisableHardwareBreakpoint (const DNBBreakpoint* bp) const
uint32_t
MachThreadList::EnableHardwareWatchpoint (const DNBBreakpoint* wp) const
{
+ uint32_t hw_index = INVALID_NUB_HW_INDEX;
if (wp != NULL)
{
- uint32_t hw_index;
PTHREAD_MUTEX_LOCKER (locker, m_threads_mutex);
const uint32_t num_threads = m_threads.size();
for (uint32_t idx = 0; idx < num_threads; ++idx)
@@ -492,9 +492,8 @@ MachThreadList::EnableHardwareWatchpoint (const DNBBreakpoint* wp) const
// Use an arbitrary thread to signal the completion of our transaction.
if (num_threads)
m_threads[0]->HardwareWatchpointStateChanged();
- return hw_index;
}
- return INVALID_NUB_HW_INDEX;
+ return hw_index;
}
bool
diff --git a/lldb/tools/debugserver/source/RNBRemote.cpp b/lldb/tools/debugserver/source/RNBRemote.cpp
index 9f447c7821e..4b2571dc26b 100644
--- a/lldb/tools/debugserver/source/RNBRemote.cpp
+++ b/lldb/tools/debugserver/source/RNBRemote.cpp
@@ -1674,7 +1674,7 @@ set_logging (const char *p)
}
}
// Did we get a properly formatted logging bitmask?
- if (*p == ';')
+ if (p && *p == ';')
{
// Enable DNB logging
DNBLogSetLogCallback(ASLLogCallback, NULL);
@@ -2028,14 +2028,21 @@ void
register_value_in_hex_fixed_width (std::ostream& ostrm,
nub_process_t pid,
nub_thread_t tid,
- const register_map_entry_t* reg)
+ const register_map_entry_t* reg,
+ const DNBRegisterValue *reg_value_ptr)
{
if (reg != NULL)
{
- DNBRegisterValue val;
- if (DNBThreadGetRegisterValueByID (pid, tid, reg->nub_info.set, reg->nub_info.reg, &val))
+ DNBRegisterValue reg_value;
+ if (reg_value_ptr == NULL)
+ {
+ if (DNBThreadGetRegisterValueByID (pid, tid, reg->nub_info.set, reg->nub_info.reg, &reg_value))
+ reg_value_ptr = &reg_value;
+ }
+
+ if (reg_value_ptr)
{
- append_hex_value (ostrm, val.value.v_uint8, reg->gdb_size, false);
+ append_hex_value (ostrm, reg_value_ptr->value.v_uint8, reg->gdb_size, false);
}
else
{
@@ -2063,7 +2070,8 @@ void
gdb_regnum_with_fixed_width_hex_register_value (std::ostream& ostrm,
nub_process_t pid,
nub_thread_t tid,
- const register_map_entry_t* reg)
+ const register_map_entry_t* reg,
+ const DNBRegisterValue *reg_value_ptr)
{
// Output the register number as 'NN:VVVVVVVV;' where NN is a 2 bytes HEX
// gdb register number, and VVVVVVVV is the correct number of hex bytes
@@ -2071,7 +2079,7 @@ gdb_regnum_with_fixed_width_hex_register_value (std::ostream& ostrm,
if (reg != NULL)
{
ostrm << RAWHEX8(reg->gdb_regnum) << ':';
- register_value_in_hex_fixed_width (ostrm, pid, tid, reg);
+ register_value_in_hex_fixed_width (ostrm, pid, tid, reg, reg_value_ptr);
ostrm << ';';
}
}
@@ -2173,15 +2181,18 @@ RNBRemote::SendStopReplyPacketForThread (nub_thread_t tid)
if (g_num_reg_entries == 0)
InitializeRegisters ();
- DNBRegisterValue reg_value;
- for (uint32_t reg = 0; reg < g_num_reg_entries; reg++)
+ if (g_reg_entries != NULL)
{
- if (g_reg_entries[reg].expedite)
+ DNBRegisterValue reg_value;
+ for (uint32_t reg = 0; reg < g_num_reg_entries; reg++)
{
- if (!DNBThreadGetRegisterValueByID (pid, tid, g_reg_entries[reg].nub_info.set, g_reg_entries[reg].nub_info.reg, &reg_value))
- continue;
+ if (g_reg_entries[reg].expedite)
+ {
+ if (!DNBThreadGetRegisterValueByID (pid, tid, g_reg_entries[reg].nub_info.set, g_reg_entries[reg].nub_info.reg, &reg_value))
+ continue;
- gdb_regnum_with_fixed_width_hex_register_value (ostrm, pid, tid, &g_reg_entries[reg]);
+ gdb_regnum_with_fixed_width_hex_register_value (ostrm, pid, tid, &g_reg_entries[reg], &reg_value);
+ }
}
}
@@ -2496,7 +2507,7 @@ RNBRemote::HandlePacket_g (const char *p)
}
for (uint32_t reg = 0; reg < g_num_reg_entries; reg++)
- register_value_in_hex_fixed_width (ostrm, pid, tid, &g_reg_entries[reg]);
+ register_value_in_hex_fixed_width (ostrm, pid, tid, &g_reg_entries[reg], NULL);
return SendPacket (ostrm.str ());
}
@@ -2695,7 +2706,6 @@ RNBRemote::HandlePacket_v (const char *p)
}
else if (strstr (p, "vCont") == p)
{
- rnb_err_t rnb_err = rnb_success;
typedef struct
{
nub_thread_t tid;
@@ -2747,7 +2757,7 @@ RNBRemote::HandlePacket_v (const char *p)
break;
default:
- rnb_err = HandlePacket_ILLFORMED (__FILE__, __LINE__, p, "Unsupported action in vCont packet");
+ HandlePacket_ILLFORMED (__FILE__, __LINE__, p, "Unsupported action in vCont packet");
break;
}
if (*c == ':')
@@ -3194,7 +3204,7 @@ RNBRemote::HandlePacket_p (const char *p)
}
else
{
- register_value_in_hex_fixed_width (ostrm, pid, tid, reg_entry);
+ register_value_in_hex_fixed_width (ostrm, pid, tid, reg_entry, NULL);
}
return SendPacket (ostrm.str());
}
diff --git a/lldb/tools/debugserver/source/debugserver.cpp b/lldb/tools/debugserver/source/debugserver.cpp
index 32749257710..fe988483fc8 100644
--- a/lldb/tools/debugserver/source/debugserver.cpp
+++ b/lldb/tools/debugserver/source/debugserver.cpp
@@ -1141,6 +1141,7 @@ main (int argc, char *argv[])
int listen_port = INT32_MAX;
char str[PATH_MAX];
+ str[0] = '\0';
if (g_lockdown_opt == 0 && g_applist_opt == 0)
{
diff --git a/lldb/tools/driver/Driver.cpp b/lldb/tools/driver/Driver.cpp
index aa21db98334..ab69b24b947 100644
--- a/lldb/tools/driver/Driver.cpp
+++ b/lldb/tools/driver/Driver.cpp
@@ -722,7 +722,7 @@ Driver::ParseArgs (int argc, const char *argv[], FILE *out_fh, bool &exit)
{
// Skip any options we consumed with getopt_long
argc -= optind;
- argv += optind;
+ //argv += optind; // Commented out to keep static analyzer happy
if (argc > 0)
::fprintf (out_fh, "Warning: program arguments are ignored when attaching.\n");
OpenPOWER on IntegriCloud