forked from OSchip/llvm-project
parent
f5b0135c6b
commit
2078234697
|
@ -1161,48 +1161,6 @@ bool ABISysV_x86_64::PrepareTrivialCall(Thread &thread, addr_t sp,
|
|||
ProcessSP process_sp(thread.GetProcess());
|
||||
|
||||
RegisterValue reg_value;
|
||||
|
||||
#if 0
|
||||
// This code adds an extra frame so that we don't lose the function that we came from
|
||||
// by pushing the PC and the FP and then writing the current FP to point to the FP value
|
||||
// we just pushed. It is disabled for now until the stack backtracing code can be debugged.
|
||||
|
||||
// Save current PC
|
||||
const RegisterInfo *fp_reg_info = reg_ctx->GetRegisterInfo (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_FP);
|
||||
if (reg_ctx->ReadRegister(pc_reg_info, reg_value))
|
||||
{
|
||||
if (log)
|
||||
log->Printf("Pushing the current PC onto the stack: 0x%" PRIx64 ": 0x%" PRIx64, (uint64_t)sp, reg_value.GetAsUInt64());
|
||||
|
||||
if (!process_sp->WritePointerToMemory(sp, reg_value.GetAsUInt64(), error))
|
||||
return false;
|
||||
|
||||
sp -= 8;
|
||||
|
||||
// Save current FP
|
||||
if (reg_ctx->ReadRegister(fp_reg_info, reg_value))
|
||||
{
|
||||
if (log)
|
||||
log->Printf("Pushing the current FP onto the stack: 0x%" PRIx64 ": 0x%" PRIx64, (uint64_t)sp, reg_value.GetAsUInt64());
|
||||
|
||||
if (!process_sp->WritePointerToMemory(sp, reg_value.GetAsUInt64(), error))
|
||||
return false;
|
||||
}
|
||||
// Setup FP backchain
|
||||
reg_value.SetUInt64 (sp);
|
||||
|
||||
if (log)
|
||||
log->Printf("Writing FP: 0x%" PRIx64 " (for FP backchain)", reg_value.GetAsUInt64());
|
||||
|
||||
if (!reg_ctx->WriteRegister(fp_reg_info, reg_value))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
sp -= 8;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (log)
|
||||
log->Printf("Pushing the return address onto the stack: 0x%" PRIx64
|
||||
": 0x%" PRIx64,
|
||||
|
|
Loading…
Reference in New Issue