summaryrefslogtreecommitdiffstats
path: root/lldb/source
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2012-12-18 23:45:33 +0000
committerGreg Clayton <gclayton@apple.com>2012-12-18 23:45:33 +0000
commit0b510bca73be0ced95a68b1accfd3bf4fdc290ae (patch)
tree5d9e2eff7283b12b11f906557e281142fa935c35 /lldb/source
parent7aafc4bcddd7f50d10390bb76f69c71f99528a3b (diff)
downloadbcm5719-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.cpp15
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;
OpenPOWER on IntegriCloud