For processes which are not in one of the "launched and stopped" state, 'target variable' command

should use Target::ReadMemory() call to read from the file section offset address.
Also remove the @expectedFailure decorator..

'target variable' command fails if the target program has been run
rdar://problem/9763907

llvm-svn: 149629
This commit is contained in:
Johnny Chen 2012-02-02 19:55:18 +00:00
parent b6d6508b16
commit fd72fbef41
2 changed files with 14 additions and 2 deletions

View File

@ -425,7 +425,20 @@ Value::GetValueAsData (ExecutionContext *exe_ctx,
{
Address so_addr(address, objfile->GetSectionList());
addr_t load_address = so_addr.GetLoadAddress (exe_ctx->GetTargetPtr());
if (load_address != LLDB_INVALID_ADDRESS)
bool process_launched_and_stopped = false;
if (exe_ctx->GetProcessPtr())
switch (exe_ctx->GetProcessPtr()->GetState())
{
default:
break;
case eStateInvalid:
case eStateSuspended:
case eStateCrashed:
case eStateStopped:
process_launched_and_stopped = true;
}
// Don't use the load address if the process has exited.
if (load_address != LLDB_INVALID_ADDRESS && process_launched_and_stopped)
{
resolved = true;
address = load_address;

View File

@ -36,7 +36,6 @@ class targetCommandTestCase(TestBase):
# rdar://problem/9763907
# 'target variable' command fails if the target program has been run
@unittest2.expectedFailure
@unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
def test_target_variable_command_with_dsym(self):
"""Test 'target variable' command before and after starting the inferior."""