Skip to content

Commit

Permalink
Allow user-specified program entry point for llvm-rtdyld.
Browse files Browse the repository at this point in the history
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129446 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
Jim Grosbach committed Apr 13, 2011
1 parent 69e8132 commit 6b32e7e
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions tools/llvm-rtdyld/llvm-rtdyld.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,11 @@ Action(cl::desc("Action to perform:"),
"Load, link, and execute the inputs."),
clEnumValEnd));

static cl::opt<std::string>
EntryPoint("entry",
cl::desc("Function to call as entry point."),
cl::init("_main"));

/* *** */

// A trivial memory manager that doesn't do anything fancy, just uses the
Expand Down Expand Up @@ -93,10 +98,10 @@ static int executeInput() {
// Resolve all the relocations we can.
Dyld.resolveRelocations();

// Get the address of "_main".
void *MainAddress = Dyld.getSymbolAddress("_main");
// Get the address of the entry point (_main by default).
void *MainAddress = Dyld.getSymbolAddress(EntryPoint);
if (MainAddress == 0)
return Error("no definition for '_main'");
return Error("no definition for '" + EntryPoint + "'");

// Invalidate the instruction cache for each loaded function.
for (unsigned i = 0, e = MemMgr->FunctionMemory.size(); i != e; ++i) {
Expand Down

0 comments on commit 6b32e7e

Please sign in to comment.