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
This commit is contained in:
Reid Spencer 2004-05-25 08:46:15 +00:00
parent ec55b08fd0
commit 0098bdfb97

View File

@ -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) {