forked from OSchip/llvm-project
Fixed a problem where function calls on i386 weren't
being generated correctly. Also added a messy way to single-step through expressions that I will improve soon. llvm-svn: 117342
This commit is contained in:
parent
40d871fa24
commit
be3a1b14dc
|
@ -88,8 +88,12 @@ ClangExpressionDeclMap::~ClangExpressionDeclMap()
|
|||
}
|
||||
|
||||
if (m_materialized_location)
|
||||
{
|
||||
{
|
||||
//#define SINGLE_STEP_EXPRESSIONS
|
||||
|
||||
#ifndef SINGLE_STEP_EXPRESSIONS
|
||||
m_exe_ctx.process->DeallocateMemory(m_materialized_location);
|
||||
#endif
|
||||
m_materialized_location = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -467,13 +467,19 @@ ClangExpressionParser::MakeJIT (lldb::addr_t &func_addr,
|
|||
|
||||
std::string error_string;
|
||||
|
||||
llvm::Reloc::Model relocation_model = llvm::TargetMachine::getRelocationModel();
|
||||
|
||||
llvm::TargetMachine::setRelocationModel(llvm::Reloc::PIC_);
|
||||
|
||||
m_execution_engine.reset(llvm::ExecutionEngine::createJIT (module,
|
||||
&error_string,
|
||||
m_jit_mm,
|
||||
CodeGenOpt::Default,
|
||||
CodeGenOpt::Less,
|
||||
true,
|
||||
CodeModel::Small));
|
||||
|
||||
llvm::TargetMachine::setRelocationModel(relocation_model);
|
||||
|
||||
if (!m_execution_engine.get())
|
||||
{
|
||||
err.SetErrorToGenericError();
|
||||
|
|
|
@ -335,6 +335,9 @@ IRForTarget::RewriteObjCSelector(Instruction* selector_load,
|
|||
if (!m_decl_map->GetFunctionAddress (g_sel_registerName_str, srN_addr))
|
||||
return false;
|
||||
|
||||
if (log)
|
||||
log->Printf("Found sel_registerName at 0x%llx", srN_addr);
|
||||
|
||||
// Build the function type: struct objc_selector *sel_registerName(uint8_t*)
|
||||
|
||||
// The below code would be "more correct," but in actuality what's required is uint8_t*
|
||||
|
|
|
@ -276,10 +276,13 @@ ThreadPlanCallFunction::RunState ()
|
|||
void
|
||||
ThreadPlanCallFunction::DidPush ()
|
||||
{
|
||||
//#define SINGLE_STEP_EXPRESSIONS
|
||||
|
||||
#ifndef SINGLE_STEP_EXPRESSIONS
|
||||
m_subplan_sp.reset(new ThreadPlanRunToAddress(m_thread, m_start_addr, m_stop_other_threads));
|
||||
|
||||
m_thread.QueueThreadPlan(m_subplan_sp, false);
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
Loading…
Reference in New Issue