diff --git a/libmaxsi/Makefile b/libmaxsi/Makefile index 6fcd0eed..ced95129 100644 --- a/libmaxsi/Makefile +++ b/libmaxsi/Makefile @@ -54,6 +54,7 @@ time.o \ random.o \ abs.o \ env.o \ +dlfcn.o \ integer.o \ c++.o \ memory.o \ diff --git a/libmaxsi/dlfcn.cpp b/libmaxsi/dlfcn.cpp new file mode 100644 index 00000000..758522cb --- /dev/null +++ b/libmaxsi/dlfcn.cpp @@ -0,0 +1,54 @@ +/******************************************************************************* + + COPYRIGHT(C) JONAS 'SORTIE' TERMANSEN 2012. + + This file is part of LibMaxsi. + + LibMaxsi is free software: you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the Free + Software Foundation, either version 3 of the License, or (at your option) + any later version. + + LibMaxsi is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + details. + + You should have received a copy of the GNU Lesser General Public License + along with LibMaxsi. If not, see . + + dlfcn.cpp + Dynamic linking. + +*******************************************************************************/ + +#include +#include + +static const char* dlerrormsg = NULL; + +extern "C" void* dlopen(const char* filename, int mode) +{ + dlerrormsg = "Sortix does not yet support dynamic linking"; + fprintf(stderr, "%s: loading file: %s\n", dlerrormsg, filename); + return NULL; +} + +extern "C" void* dlsym(void* handle, const char* name) +{ + dlerrormsg = "Sortix does not yet support dynamic linking"; + fprintf(stderr, "%s: resolving symbol: %s\n", dlerrormsg, name); + return NULL; +} + +extern "C" int dlclose(void* handle) +{ + return 0; +} + +extern "C" char* dlerror(void* handle) +{ + const char* result = dlerrormsg; + dlerrormsg = NULL; + return (char*) dlerrormsg; +} diff --git a/libmaxsi/include/dlfcn.h b/libmaxsi/include/dlfcn.h new file mode 100644 index 00000000..8b6f6371 --- /dev/null +++ b/libmaxsi/include/dlfcn.h @@ -0,0 +1,44 @@ +/******************************************************************************* + + COPYRIGHT(C) JONAS 'SORTIE' TERMANSEN 2012. + + This file is part of LibMaxsi. + + LibMaxsi is free software: you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License as published by the Free + Software Foundation, either version 3 of the License, or (at your option) + any later version. + + LibMaxsi is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more + details. + + You should have received a copy of the GNU Lesser General Public License + along with LibMaxsi. If not, see . + + dlfcn.h + Dynamic linking. + +*******************************************************************************/ + +#ifndef _DLFCN_H +#define _DLFCN_H 1 + +#include + +__BEGIN_DECLS + +#define RTLD_LAZY (1<<0) +#define RTLD_NOW (1<<1) +#define RTLD_GLOBAL (1<<8) +#define RTLD_LOCAL 0 /* Bit 8 is not set. */ + +int dlclose(void* handle); +char* dlerror(void* handle); +void* dlopen(const char* filename, int mode); +void* dlsym(void* handle, const char* name); + +__END_DECLS + +#endif