summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp
diff options
context:
space:
mode:
authorAidan Dodds <aidan@codeplay.com>2015-11-12 17:39:42 +0000
committerAidan Dodds <aidan@codeplay.com>2015-11-12 17:39:42 +0000
commit74b396d9cb5e44e4c57bebd11d8a7aa9e552f5db (patch)
tree2b26ae88c19449b8f71bae5211388be563cdb5e3 /lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp
parentfb16a3ac9a803a2cd5eda704067294e2a6b7b7dd (diff)
downloadbcm5719-llvm-74b396d9cb5e44e4c57bebd11d8a7aa9e552f5db.tar.gz
bcm5719-llvm-74b396d9cb5e44e4c57bebd11d8a7aa9e552f5db.zip
Allow renderscript runtime to read MIPS target arguments.
llvm-svn: 252914
Diffstat (limited to 'lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp')
-rw-r--r--lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp42
1 files changed, 41 insertions, 1 deletions
diff --git a/lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp b/lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp
index 78b78e56749..51e793fbbff 100644
--- a/lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp
+++ b/lldb/source/Plugins/LanguageRuntime/RenderScript/RenderScriptRuntime/RenderScriptRuntime.cpp
@@ -665,6 +665,45 @@ RenderScriptRuntime::GetArgSimple(ExecutionContext &context, uint32_t arg, uint6
}
break;
}
+ case llvm::Triple::ArchType::mipsel:
+ {
+
+ // read from the registers
+ if (arg < 4){
+ const RegisterInfo* rArg = reg_ctx->GetRegisterInfoAtIndex(arg + 4);
+ RegisterValue rVal;
+ success = reg_ctx->ReadRegister(rArg, rVal);
+ if (success)
+ {
+ *data = rVal.GetAsUInt64();
+ }
+ else
+ {
+ if (log)
+ log->Printf("RenderScriptRuntime::GetArgSimple() - Mips - Error while reading the argument #%d", arg);
+ }
+
+ }
+
+ // read from the stack
+ else
+ {
+ uint64_t sp = reg_ctx->GetSP();
+ uint32_t offset = arg * sizeof(uint32_t);
+ process->ReadMemory(sp + offset, &data, sizeof(uint32_t), error);
+ if (error.Fail())
+ {
+ if (log)
+ log->Printf ("RenderScriptRuntime::GetArgSimple - error reading Mips stack: %s.", error.AsCString());
+ }
+ else
+ {
+ success = true;
+ }
+ }
+
+ break;
+ }
case llvm::Triple::ArchType::mips64el:
{
// read from the registers
@@ -883,11 +922,12 @@ RenderScriptRuntime::LoadRuntimeHooks(lldb::ModuleSP module, ModuleKind kind)
if (targetArchType != llvm::Triple::ArchType::x86
&& targetArchType != llvm::Triple::ArchType::arm
&& targetArchType != llvm::Triple::ArchType::aarch64
+ && targetArchType != llvm::Triple::ArchType::mipsel
&& targetArchType != llvm::Triple::ArchType::mips64el
)
{
if (log)
- log->Printf ("RenderScriptRuntime::LoadRuntimeHooks - Unable to hook runtime. Only X86, ARM, Mips64 supported currently.");
+ log->Printf ("RenderScriptRuntime::LoadRuntimeHooks - Unable to hook runtime. Only X86, ARM, Mips supported currently.");
return;
}
OpenPOWER on IntegriCloud