LLVM API Documentation

Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

ExternalFunctions.cpp File Reference

#include "Interpreter.h"
#include "llvm/DerivedTypes.h"
#include "llvm/Module.h"
#include "llvm/System/DynamicLibrary.h"
#include "llvm/Target/TargetData.h"
#include <cmath>
#include <csignal>
#include <map>

Include dependency graph for ExternalFunctions.cpp:

Go to the source code of this file.

Defines

#define getFILE(ptr)   ((FILE*)ptr)

Typedefs

typedef GenericValue(* ExFunc )(FunctionType *, const vector< GenericValue > &)

Functions

static char getTypeID (const Type *Ty)
static ExFunc lookupFunction (const Function *F)
GenericValue lle_Vb_putchar (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_ii_putchar (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_VB_putchar (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_atexit (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_exit (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_abort (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_malloc (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_calloc (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_free (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_atoi (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_pow (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_exp (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_sqrt (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_log (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_floor (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_drand48 (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_lrand48 (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_srand48 (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_rand (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_srand (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_puts (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_sprintf (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_printf (FunctionType *M, const vector< GenericValue > &Args)
static void ByteswapSCANFResults (const char *Fmt, void *Arg0, void *Arg1, void *Arg2, void *Arg3, void *Arg4, void *Arg5, void *Arg6, void *Arg7, void *Arg8)
GenericValue lle_X_sscanf (FunctionType *M, const vector< GenericValue > &args)
GenericValue lle_X_scanf (FunctionType *M, const vector< GenericValue > &args)
GenericValue lle_i_clock (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_strcmp (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_strcat (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_strcpy (FunctionType *M, const vector< GenericValue > &Args)
static GenericValue size_t_to_GV (size_t n)
static size_t GV_to_size_t (GenericValue GV)
GenericValue lle_X_strlen (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_strdup (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X___strdup (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_memset (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_memcpy (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_fopen (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_fclose (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_feof (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_fread (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_fwrite (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_fgets (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_freopen (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_fflush (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_getc (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X__IO_getc (FunctionType *F, const vector< GenericValue > &Args)
GenericValue lle_X_fputc (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_ungetc (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_ferror (FunctionType *M, const vector< GenericValue > &Args)
GenericValue lle_X_fprintf (FunctionType *M, const vector< GenericValue > &Args)

Variables

static std::map< const Function *,
ExFunc
Functions
static std::map< std::string,
ExFunc
FuncNames
static InterpreterTheInterpreter


Define Documentation

#define getFILE ptr   )     ((FILE*)ptr)
 

Definition at line 555 of file ExternalFunctions.cpp.

Referenced by lle_X_fclose(), lle_X_feof(), lle_X_ferror(), lle_X_fflush(), lle_X_fgets(), lle_X_fprintf(), lle_X_fputc(), lle_X_fread(), lle_X_freopen(), lle_X_fwrite(), lle_X_getc(), and lle_X_ungetc().


Typedef Documentation

typedef GenericValue(* ExFunc)(FunctionType *, const vector< GenericValue > &)
 

Definition at line 34 of file ExternalFunctions.cpp.


Function Documentation

static void ByteswapSCANFResults const char *  Fmt,
void *  Arg0,
void *  Arg1,
void *  Arg2,
void *  Arg3,
void *  Arg4,
void *  Arg5,
void *  Arg6,
void *  Arg7,
void *  Arg8
[static]
 

Definition at line 353 of file ExternalFunctions.cpp.

References llvm::Type::DoubleTy, llvm::Type::FloatTy, llvm::Intrinsic::memcpy, Out, llvm::Type::SByteTy, llvm::ExecutionEngine::StoreValueToMemory(), llvm::Type::UIntTy, llvm::Type::ULongTy, and llvm::Type::UShortTy.

Referenced by lle_X_scanf(), and lle_X_sscanf().

static char getTypeID const Type Ty  )  [static]
 

Definition at line 40 of file ExternalFunctions.cpp.

References llvm::Type::ArrayTyID, llvm::Type::BoolTyID, llvm::Type::DoubleTyID, llvm::Type::FloatTyID, llvm::Type::FunctionTyID, llvm::Type::getTypeID(), llvm::Type::IntTyID, llvm::Type::LongTyID, llvm::Type::OpaqueTyID, llvm::Type::PointerTyID, llvm::Type::SByteTyID, llvm::Type::ShortTyID, llvm::Type::StructTyID, llvm::Type::UByteTyID, llvm::Type::UIntTyID, llvm::Type::ULongTyID, llvm::Type::UShortTyID, and llvm::Type::VoidTyID.

Referenced by lookupFunction().

static size_t GV_to_size_t GenericValue  GV  )  [static]
 

Definition at line 505 of file ExternalFunctions.cpp.

References llvm::GenericValue::UIntVal, and llvm::GenericValue::ULongVal.

Referenced by lle_X_fread(), lle_X_fwrite(), lle_X_memcpy(), and lle_X_memset().

GenericValue lle_i_clock FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 463 of file ExternalFunctions.cpp.

References llvm::GenericValue::IntVal.

GenericValue lle_ii_putchar FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 118 of file ExternalFunctions.cpp.

GenericValue lle_VB_putchar FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 124 of file ExternalFunctions.cpp.

GenericValue lle_Vb_putchar FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 112 of file ExternalFunctions.cpp.

GenericValue lle_X___strdup FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 530 of file ExternalFunctions.cpp.

References llvm::GVTOP(), llvm::PTOGV(), and strdup.

GenericValue lle_X__IO_getc FunctionType F,
const vector< GenericValue > &  Args
 

Definition at line 632 of file ExternalFunctions.cpp.

References lle_X_getc().

GenericValue lle_X_abort FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 145 of file ExternalFunctions.cpp.

GenericValue lle_X_atexit FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 130 of file ExternalFunctions.cpp.

References llvm::Interpreter::addAtExitHandler(), llvm::GVTOP(), and llvm::GenericValue::IntVal.

GenericValue lle_X_atoi FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 170 of file ExternalFunctions.cpp.

References llvm::GVTOP(), and llvm::GenericValue::IntVal.

GenericValue lle_X_calloc FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 157 of file ExternalFunctions.cpp.

References llvm::PTOGV().

GenericValue lle_X_drand48 FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 220 of file ExternalFunctions.cpp.

References llvm::GenericValue::DoubleVal.

GenericValue lle_X_exit FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 139 of file ExternalFunctions.cpp.

References llvm::Interpreter::exitCalled().

GenericValue lle_X_exp FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 186 of file ExternalFunctions.cpp.

References llvm::GenericValue::DoubleVal.

GenericValue lle_X_fclose FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 565 of file ExternalFunctions.cpp.

References getFILE, llvm::GVTOP(), and llvm::GenericValue::IntVal.

GenericValue lle_X_feof FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 573 of file ExternalFunctions.cpp.

References getFILE, llvm::GVTOP(), and llvm::GenericValue::IntVal.

GenericValue lle_X_ferror FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 653 of file ExternalFunctions.cpp.

References getFILE, llvm::GVTOP(), and llvm::GenericValue::IntVal.

GenericValue lle_X_fflush FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 616 of file ExternalFunctions.cpp.

References getFILE, llvm::GVTOP(), and llvm::GenericValue::IntVal.

GenericValue lle_X_fgets FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 602 of file ExternalFunctions.cpp.

References getFILE, and llvm::GVTOP().

GenericValue lle_X_floor FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 210 of file ExternalFunctions.cpp.

References llvm::GenericValue::DoubleVal.

GenericValue lle_X_fopen FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 558 of file ExternalFunctions.cpp.

References llvm::GVTOP(), and llvm::PTOGV().

GenericValue lle_X_fprintf FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 662 of file ExternalFunctions.cpp.

References getFILE, llvm::GVTOP(), lle_X_sprintf(), and llvm::PTOGV().

GenericValue lle_X_fputc FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 637 of file ExternalFunctions.cpp.

References getFILE, llvm::GVTOP(), and llvm::GenericValue::IntVal.

GenericValue lle_X_fread FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 582 of file ExternalFunctions.cpp.

References getFILE, GV_to_size_t(), llvm::GVTOP(), and size_t_to_GV().

GenericValue lle_X_free FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 163 of file ExternalFunctions.cpp.

References llvm::GVTOP().

GenericValue lle_X_freopen FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 609 of file ExternalFunctions.cpp.

References getFILE, llvm::GVTOP(), and llvm::PTOGV().

GenericValue lle_X_fwrite FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 592 of file ExternalFunctions.cpp.

References getFILE, GV_to_size_t(), llvm::GVTOP(), and size_t_to_GV().

GenericValue lle_X_getc FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 624 of file ExternalFunctions.cpp.

References getFILE, llvm::GVTOP(), and llvm::GenericValue::IntVal.

Referenced by lle_X__IO_getc().

GenericValue lle_X_log FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 202 of file ExternalFunctions.cpp.

References llvm::GenericValue::DoubleVal.

GenericValue lle_X_lrand48 FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 228 of file ExternalFunctions.cpp.

References llvm::GenericValue::IntVal.

GenericValue lle_X_malloc FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 151 of file ExternalFunctions.cpp.

References llvm::PTOGV().

GenericValue lle_X_memcpy FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 543 of file ExternalFunctions.cpp.

References GV_to_size_t(), llvm::GVTOP(), llvm::Intrinsic::memcpy, and llvm::PTOGV().

GenericValue lle_X_memset FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 536 of file ExternalFunctions.cpp.

References GV_to_size_t(), llvm::GVTOP(), llvm::Intrinsic::memset, and llvm::PTOGV().

GenericValue lle_X_pow FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 178 of file ExternalFunctions.cpp.

References llvm::GenericValue::DoubleVal.

GenericValue lle_X_printf FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 343 of file ExternalFunctions.cpp.

References lle_X_sprintf(), and llvm::PTOGV().

GenericValue lle_X_puts FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 260 of file ExternalFunctions.cpp.

References llvm::GVTOP(), and llvm::GenericValue::IntVal.

GenericValue lle_X_rand FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 245 of file ExternalFunctions.cpp.

References llvm::GenericValue::IntVal.

GenericValue lle_X_scanf FunctionType M,
const vector< GenericValue > &  args
 

Definition at line 446 of file ExternalFunctions.cpp.

References ByteswapSCANFResults(), llvm::GVTOP(), and llvm::GenericValue::IntVal.

GenericValue lle_X_sprintf FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 269 of file ExternalFunctions.cpp.

References llvm::ExecutionEngine::getModule(), llvm::Module::getPointerSize(), llvm::GVTOP(), llvm::GenericValue::IntVal, and llvm::Module::Pointer64.

Referenced by lle_X_fprintf(), and lle_X_printf().

GenericValue lle_X_sqrt FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 194 of file ExternalFunctions.cpp.

References llvm::GenericValue::DoubleVal.

GenericValue lle_X_srand FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 253 of file ExternalFunctions.cpp.

GenericValue lle_X_srand48 FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 236 of file ExternalFunctions.cpp.

GenericValue lle_X_sscanf FunctionType M,
const vector< GenericValue > &  args
 

Definition at line 430 of file ExternalFunctions.cpp.

References ByteswapSCANFResults(), llvm::GVTOP(), and llvm::GenericValue::IntVal.

GenericValue lle_X_strcat FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 483 of file ExternalFunctions.cpp.

References llvm::GVTOP(), and llvm::PTOGV().

GenericValue lle_X_strcmp FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 475 of file ExternalFunctions.cpp.

References llvm::GVTOP(), llvm::GenericValue::IntVal, and llvm::ISD::Ret.

GenericValue lle_X_strcpy FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 489 of file ExternalFunctions.cpp.

References llvm::GVTOP(), and llvm::PTOGV().

GenericValue lle_X_strdup FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 524 of file ExternalFunctions.cpp.

References llvm::GVTOP(), llvm::PTOGV(), and strdup.

GenericValue lle_X_strlen FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 517 of file ExternalFunctions.cpp.

References llvm::GVTOP(), and size_t_to_GV().

GenericValue lle_X_ungetc FunctionType M,
const vector< GenericValue > &  Args
 

Definition at line 645 of file ExternalFunctions.cpp.

References getFILE, llvm::GVTOP(), and llvm::GenericValue::IntVal.

static ExFunc lookupFunction const Function F  )  [static]
 

Definition at line 63 of file ExternalFunctions.cpp.

References FuncNames, Functions, llvm::Type::getContainedType(), llvm::Function::getFunctionType(), llvm::Value::getName(), llvm::Type::getNumContainedTypes(), getTypeID(), and llvm::sys::DynamicLibrary::SearchForAddressOfSymbol().

Referenced by llvm::Interpreter::callExternalFunction().

static GenericValue size_t_to_GV size_t  n  )  [static]
 

Definition at line 494 of file ExternalFunctions.cpp.

References llvm::ISD::Ret, llvm::GenericValue::UIntVal, and llvm::GenericValue::ULongVal.

Referenced by lle_X_fread(), lle_X_fwrite(), and lle_X_strlen().


Variable Documentation

std::map<std::string, ExFunc> FuncNames [static]
 

Definition at line 36 of file ExternalFunctions.cpp.

Referenced by lookupFunction().

std::map<const Function *, ExFunc> Functions [static]
 

Definition at line 35 of file ExternalFunctions.cpp.

Referenced by llvm::Interpreter::callExternalFunction(), llvm::ProgramInfo::getSourceFunctions(), and lookupFunction().

Interpreter* TheInterpreter [static]
 

Definition at line 38 of file ExternalFunctions.cpp.