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