mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
Add command line option -entry-funcion to override entry function (default is main).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58779 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5e136c0f37
commit
ec740e325c
@ -49,6 +49,13 @@ namespace {
|
||||
|
||||
cl::opt<std::string>
|
||||
TargetTriple("mtriple", cl::desc("Override target triple for module"));
|
||||
|
||||
cl::opt<std::string>
|
||||
EntryFunc("entry-function",
|
||||
cl::desc("Specify the entry function (default = 'main') "
|
||||
"of the executable"),
|
||||
cl::value_desc("function"),
|
||||
cl::init("main"));
|
||||
|
||||
cl::opt<std::string>
|
||||
FakeArgv0("fake-argv0",
|
||||
@ -140,9 +147,9 @@ int main(int argc, char **argv, char * const *envp) {
|
||||
// using the contents of Args to determine argc & argv, and the contents of
|
||||
// EnvVars to determine envp.
|
||||
//
|
||||
Function *MainFn = Mod->getFunction("main");
|
||||
if (!MainFn) {
|
||||
std::cerr << "'main' function not found in module.\n";
|
||||
Function *EntryFn = Mod->getFunction(EntryFunc);
|
||||
if (!EntryFn) {
|
||||
std::cerr << '\'' << EntryFunc << "\' function not found in module.\n";
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -160,13 +167,13 @@ int main(int argc, char **argv, char * const *envp) {
|
||||
if (NoLazyCompilation) {
|
||||
for (Module::iterator I = Mod->begin(), E = Mod->end(); I != E; ++I) {
|
||||
Function *Fn = &*I;
|
||||
if (Fn != MainFn && !Fn->isDeclaration())
|
||||
if (Fn != EntryFn && !Fn->isDeclaration())
|
||||
EE->getPointerToFunction(Fn);
|
||||
}
|
||||
}
|
||||
|
||||
// Run main.
|
||||
int Result = EE->runFunctionAsMain(MainFn, InputArgv, envp);
|
||||
int Result = EE->runFunctionAsMain(EntryFn, InputArgv, envp);
|
||||
|
||||
// Run static destructors.
|
||||
EE->runStaticConstructorsDestructors(true);
|
||||
|
Loading…
Reference in New Issue
Block a user