diff options
author | Greg Clayton <gclayton@apple.com> | 2012-12-18 23:45:33 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2012-12-18 23:45:33 +0000 |
commit | 0b510bca73be0ced95a68b1accfd3bf4fdc290ae (patch) | |
tree | 5d9e2eff7283b12b11f906557e281142fa935c35 /lldb/source | |
parent | 7aafc4bcddd7f50d10390bb76f69c71f99528a3b (diff) | |
download | bcm5719-llvm-0b510bca73be0ced95a68b1accfd3bf4fdc290ae.tar.gz bcm5719-llvm-0b510bca73be0ced95a68b1accfd3bf4fdc290ae.zip |
Don't read the SP when getting argument values from registers in case the SP isn't available. We don't want the availability of SP to limit when we get get arguments from registers.
llvm-svn: 170476
Diffstat (limited to 'lldb/source')
-rw-r--r-- | lldb/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/lldb/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp b/lldb/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp index 08532f20873..d25c9b427a7 100644 --- a/lldb/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp +++ b/lldb/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp @@ -332,10 +332,7 @@ ABIMacOSX_arm::GetArgumentValues (Thread &thread, if (!reg_ctx) return false; - addr_t sp = reg_ctx->GetSP(0); - - if (!sp) - return false; + addr_t sp = 0; for (uint32_t value_idx = 0; value_idx < num_values; ++value_idx) { @@ -405,6 +402,14 @@ ABIMacOSX_arm::GetArgumentValues (Thread &thread, } else { + if (sp == 0) + { + // Read the stack pointer if it already hasn't been read + sp = reg_ctx->GetSP(0); + if (sp == 0) + return false; + } + // Arguments 5 on up are on the stack const uint32_t arg_byte_size = (bit_width + (8-1)) / 8; Error error; @@ -421,7 +426,7 @@ ABIMacOSX_arm::GetArgumentValues (Thread &thread, ValueObjectSP ABIMacOSX_arm::GetReturnValueObjectImpl (Thread &thread, - lldb_private::ClangASTType &ast_type) const + lldb_private::ClangASTType &ast_type) const { Value value; ValueObjectSP return_valobj_sp; |