LLVM API Documentation

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_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 558 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 356 of file ExternalFunctions.cpp.

References llvm::Type::DoubleTy, llvm::Type::FloatTy, GV, Out, llvm::Type::SByteTy, llvm::ExecutionEngine::StoreValueToMemory(), TheInterpreter, Ty, 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::getTypeID(), and Ty.

Referenced by llvm::ConstantStruct::ConstantStruct(), and lookupFunction().

static size_t GV_to_size_t ( GenericValue  GV  )  [static]

Definition at line 508 of file ExternalFunctions.cpp.

References GV.

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 466 of file ExternalFunctions.cpp.

References GV.

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

Definition at line 121 of file ExternalFunctions.cpp.

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

Definition at line 127 of file ExternalFunctions.cpp.

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

Definition at line 115 of file ExternalFunctions.cpp.

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

Definition at line 533 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 635 of file ExternalFunctions.cpp.

References F, and lle_X_getc().

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

Definition at line 148 of file ExternalFunctions.cpp.

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

Definition at line 133 of file ExternalFunctions.cpp.

References llvm::Interpreter::addAtExitHandler(), GV, llvm::GVTOP(), and TheInterpreter.

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

Definition at line 173 of file ExternalFunctions.cpp.

References GV, and llvm::GVTOP().

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

Definition at line 160 of file ExternalFunctions.cpp.

References llvm::PTOGV().

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

Definition at line 142 of file ExternalFunctions.cpp.

References llvm::Interpreter::exitCalled(), and TheInterpreter.

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

Definition at line 189 of file ExternalFunctions.cpp.

References GV.

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

Definition at line 568 of file ExternalFunctions.cpp.

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

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

Definition at line 576 of file ExternalFunctions.cpp.

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

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

Definition at line 656 of file ExternalFunctions.cpp.

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

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

Definition at line 619 of file ExternalFunctions.cpp.

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

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

Definition at line 605 of file ExternalFunctions.cpp.

References getFILE, and llvm::GVTOP().

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

Definition at line 213 of file ExternalFunctions.cpp.

References GV.

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

Definition at line 561 of file ExternalFunctions.cpp.

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

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

Definition at line 665 of file ExternalFunctions.cpp.

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

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

Definition at line 640 of file ExternalFunctions.cpp.

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

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

Definition at line 585 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 166 of file ExternalFunctions.cpp.

References llvm::GVTOP().

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

Definition at line 612 of file ExternalFunctions.cpp.

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

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

Definition at line 595 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 627 of file ExternalFunctions.cpp.

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

Referenced by lle_X__IO_getc().

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

Definition at line 205 of file ExternalFunctions.cpp.

References GV.

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

Definition at line 154 of file ExternalFunctions.cpp.

References llvm::PTOGV().

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

Definition at line 546 of file ExternalFunctions.cpp.

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

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

Definition at line 539 of file ExternalFunctions.cpp.

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

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

Definition at line 181 of file ExternalFunctions.cpp.

References GV.

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

Definition at line 346 of file ExternalFunctions.cpp.

References Buffer, GV, lle_X_sprintf(), M, and llvm::PTOGV().

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

Definition at line 263 of file ExternalFunctions.cpp.

References GV, and llvm::GVTOP().

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

Definition at line 248 of file ExternalFunctions.cpp.

References GV.

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

Definition at line 449 of file ExternalFunctions.cpp.

References ByteswapSCANFResults(), GV, and llvm::GVTOP().

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

Definition at line 272 of file ExternalFunctions.cpp.

References Buffer, llvm::ExecutionEngine::getModule(), llvm::Module::getPointerSize(), GV, llvm::GVTOP(), llvm::Module::Pointer64, and TheInterpreter.

Referenced by lle_X_fprintf(), and lle_X_printf().

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

Definition at line 197 of file ExternalFunctions.cpp.

References GV.

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

Definition at line 256 of file ExternalFunctions.cpp.

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

Definition at line 433 of file ExternalFunctions.cpp.

References ByteswapSCANFResults(), GV, and llvm::GVTOP().

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

Definition at line 486 of file ExternalFunctions.cpp.

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

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

Definition at line 478 of file ExternalFunctions.cpp.

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

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

Definition at line 492 of file ExternalFunctions.cpp.

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

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

Definition at line 527 of file ExternalFunctions.cpp.

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

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

Definition at line 520 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 648 of file ExternalFunctions.cpp.

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

static ExFunc lookupFunction ( const Function F  )  [static]

Definition at line 63 of file ExternalFunctions.cpp.

References F, FuncNames, Functions, llvm::Type::getContainedType(), llvm::Type::getNumContainedTypes(), and getTypeID().

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

static GenericValue size_t_to_GV ( size_t  n  )  [static]

Definition at line 497 of file ExternalFunctions.cpp.

References 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.

Referenced by ByteswapSCANFResults(), llvm::Interpreter::callExternalFunction(), lle_X_atexit(), lle_X_exit(), and lle_X_sprintf().