aboutsummaryrefslogtreecommitdiffstats
path: root/src/grt/grt-cdynload.c
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2019-04-27 07:53:50 +0200
committerTristan Gingold <tgingold@free.fr>2019-04-27 07:53:50 +0200
commitc67c81a8fb726c151180d31d79faabe2b291a496 (patch)
tree04b5888d32102e6d10439fa1f0344440a0d4be09 /src/grt/grt-cdynload.c
parent031afa181b327ffef008614914567f8ccc828446 (diff)
downloadghdl-c67c81a8fb726c151180d31d79faabe2b291a496.tar.gz
ghdl-c67c81a8fb726c151180d31d79faabe2b291a496.tar.bz2
ghdl-c67c81a8fb726c151180d31d79faabe2b291a496.zip
grt: rename grt-dynload.[ch] to grt-cdynload.[ch]
Diffstat (limited to 'src/grt/grt-cdynload.c')
-rw-r--r--src/grt/grt-cdynload.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/grt/grt-cdynload.c b/src/grt/grt-cdynload.c
new file mode 100644
index 000000000..af595f454
--- /dev/null
+++ b/src/grt/grt-cdynload.c
@@ -0,0 +1,52 @@
+#if defined(__WIN32__)
+#include <windows.h>
+void *
+grt_dynload_open (const char *path)
+{
+ return (void *)LoadLibrary (path);
+}
+
+void *
+grt_dynload_symbol (void *handle, const char *symbol)
+{
+ return (void *)GetProcAddress ((HMODULE)handle, symbol);
+}
+
+const char *
+grt_dynload_error (void)
+{
+ static char msg[256];
+
+ FormatMessage
+ (FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL,
+ GetLastError (),
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ (LPTSTR) &msg,
+ sizeof (msg) - 1,
+ NULL);
+ return msg;
+}
+
+#else
+
+#include <dlfcn.h>
+
+void *
+grt_dynload_open (const char *path)
+{
+ return dlopen (path, RTLD_LAZY);
+}
+
+void *
+grt_dynload_symbol (void *handle, const char *symbol)
+{
+ return dlsym (handle, symbol);
+}
+
+const char *
+grt_dynload_error (void)
+{
+ return dlerror ();
+}
+#endif