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 557 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 355 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 507 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 465 of file ExternalFunctions.cpp.

References GV.

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

Definition at line 120 of file ExternalFunctions.cpp.

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

Definition at line 126 of file ExternalFunctions.cpp.

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

Definition at line 114 of file ExternalFunctions.cpp.

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

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

References F, and lle_X_getc().

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

Definition at line 147 of file ExternalFunctions.cpp.

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

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

References GV, and llvm::GVTOP().

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

Definition at line 159 of file ExternalFunctions.cpp.

References llvm::PTOGV().

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

Definition at line 141 of file ExternalFunctions.cpp.

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

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

Definition at line 188 of file ExternalFunctions.cpp.

References GV.

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

Definition at line 567 of file ExternalFunctions.cpp.

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

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

Definition at line 575 of file ExternalFunctions.cpp.

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

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

Definition at line 655 of file ExternalFunctions.cpp.

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

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

Definition at line 618 of file ExternalFunctions.cpp.

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

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

Definition at line 604 of file ExternalFunctions.cpp.

References getFILE, and llvm::GVTOP().

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

Definition at line 212 of file ExternalFunctions.cpp.

References GV.

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

Definition at line 560 of file ExternalFunctions.cpp.

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

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

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

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

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

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

References llvm::GVTOP().

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

Definition at line 611 of file ExternalFunctions.cpp.

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

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

Definition at line 594 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 626 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 204 of file ExternalFunctions.cpp.

References GV.

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

Definition at line 153 of file ExternalFunctions.cpp.

References llvm::PTOGV().

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

Definition at line 545 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 538 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 180 of file ExternalFunctions.cpp.

References GV.

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

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

References GV, and llvm::GVTOP().

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

Definition at line 247 of file ExternalFunctions.cpp.

References GV.

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

Definition at line 448 of file ExternalFunctions.cpp.

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

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

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

References GV.

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

Definition at line 255 of file ExternalFunctions.cpp.

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

Definition at line 432 of file ExternalFunctions.cpp.

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

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

Definition at line 485 of file ExternalFunctions.cpp.

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

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

Definition at line 477 of file ExternalFunctions.cpp.

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

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

Definition at line 491 of file ExternalFunctions.cpp.

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

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

Definition at line 526 of file ExternalFunctions.cpp.

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

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

Definition at line 519 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 647 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 496 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().