diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2004-05-25 08:46:15 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2004-05-25 08:46:15 +0000 |
commit | 0098bdfb9723c48c144fa9534ae1fe2ffb1c0f13 (patch) | |
tree | 7c3722f5869a18fa4326404c77e0fa406110f3b6 /lib/ExecutionEngine/Interpreter | |
parent | ec55b08fd0dbe3191507ad81b93ab446254ee611 (diff) | |
download | external_llvm-0098bdfb9723c48c144fa9534ae1fe2ffb1c0f13.zip external_llvm-0098bdfb9723c48c144fa9534ae1fe2ffb1c0f13.tar.gz external_llvm-0098bdfb9723c48c144fa9534ae1fe2ffb1c0f13.tar.bz2 |
Get rid of a wart: useless getFILE function is now a cast macro.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13747 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/ExecutionEngine/Interpreter')
-rw-r--r-- | lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp | 44 |
1 files changed, 2 insertions, 42 deletions
diff --git a/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp b/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp index 9246c0b..96d5d56 100644 --- a/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp +++ b/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp @@ -22,7 +22,6 @@ #include "Interpreter.h" #include "llvm/DerivedTypes.h" #include "llvm/Module.h" -#include "llvm/SymbolTable.h" #include "llvm/Target/TargetData.h" #include "Support/DynamicLinker.h" #include "Config/dlfcn.h" @@ -541,47 +540,8 @@ GenericValue lle_X_memcpy(FunctionType *M, const vector<GenericValue> &Args) { //===----------------------------------------------------------------------===// // getFILE - Turn a pointer in the host address space into a legit pointer in -// the interpreter address space. For the most part, this is an identity -// transformation, but if the program refers to stdio, stderr, stdin then they -// have pointers that are relative to the __iob array. If this is the case, -// change the FILE into the REAL stdio stream. -// -static FILE *getFILE(void *Ptr) { - static Module *LastMod = 0; - static PointerTy IOBBase = 0; - static unsigned FILESize; - - if (LastMod != &TheInterpreter->getModule()) { // Module change or initialize? - Module *M = LastMod = &TheInterpreter->getModule(); - - // Check to see if the currently loaded module contains an __iob symbol... - GlobalVariable *IOB = 0; - SymbolTable &ST = M->getSymbolTable(); - for (SymbolTable::iterator I = ST.begin(), E = ST.end(); I != E; ++I) { - SymbolTable::VarMap &M = I->second; - for (SymbolTable::VarMap::iterator J = M.begin(), E = M.end(); - J != E; ++J) - if (J->first == "__iob") - if ((IOB = dyn_cast<GlobalVariable>(J->second))) - break; - if (IOB) break; - } - } - - // Check to see if this is a reference to __iob... - if (IOBBase) { - unsigned FDNum = ((unsigned long)Ptr-IOBBase)/FILESize; - if (FDNum == 0) - return stdin; - else if (FDNum == 1) - return stdout; - else if (FDNum == 2) - return stderr; - } - - return (FILE*)Ptr; -} - +// the interpreter address space. This is an identity transformation. +#define getFILE(ptr) ((FILE*)ptr) // FILE *fopen(const char *filename, const char *mode); GenericValue lle_X_fopen(FunctionType *M, const vector<GenericValue> &Args) { |