diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2007-03-06 03:12:55 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2007-03-06 03:12:55 +0000 |
commit | 124294bc59dab9ec57fd7072cec574a4464ec59f (patch) | |
tree | 262fc69fa13ab047808dedc4487a64c9275381a7 /tools/lli/lli.cpp | |
parent | 38f6a15df69c271c3bebf648642041b31380e31a (diff) | |
download | external_llvm-124294bc59dab9ec57fd7072cec574a4464ec59f.zip external_llvm-124294bc59dab9ec57fd7072cec574a4464ec59f.tar.gz external_llvm-124294bc59dab9ec57fd7072cec574a4464ec59f.tar.bz2 |
Obtain the exit function before execution just in case the module
disappears before we get to calling the exit function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34953 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/lli/lli.cpp')
-rw-r--r-- | tools/lli/lli.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/tools/lli/lli.cpp b/tools/lli/lli.cpp index c02d2a4..225180b 100644 --- a/tools/lli/lli.cpp +++ b/tools/lli/lli.cpp @@ -124,6 +124,10 @@ int main(int argc, char **argv, char * const *envp) { return -1; } + // If the program doesn't explicitly call exit, we will need the Exit + // function later on to make an explicit call, so get the function now. + Constant *Exit = Mod->getOrInsertFunction("exit", Type::VoidTy, + Type::Int32Ty, NULL); // Run static constructors. EE->runStaticConstructorsDestructors(false); @@ -133,14 +137,12 @@ int main(int argc, char **argv, char * const *envp) { // Run static destructors. EE->runStaticConstructorsDestructors(true); - // If the program didn't explicitly call exit, call exit now, for the - // program. This ensures that any atexit handlers get called correctly. - Constant *Exit = Mod->getOrInsertFunction("exit", Type::VoidTy, - Type::Int32Ty, NULL); + // If the program didn't call exit explicitly, we should call it now. + // This ensures that any atexit handlers get called correctly. if (Function *ExitF = dyn_cast<Function>(Exit)) { std::vector<GenericValue> Args; GenericValue ResultGV; - ResultGV.Int32Val = Result; + ResultGV.IntVal = APInt(32, Result); Args.push_back(ResultGV); EE->runFunction(ExitF, Args); std::cerr << "ERROR: exit(" << Result << ") returned!\n"; |