diff options
author | Dave Korn <dave.korn@artimi.com> | 2010-10-15 16:21:41 +0000 |
---|---|---|
committer | Dave Korn <dave.korn@artimi.com> | 2010-10-15 16:21:41 +0000 |
commit | 3917d5d5ca1bed255ee9bd0a0b38360505ce5b4c (patch) | |
tree | 2cd98ae08c668c0f8121c6421d40f1e68f3a6697 /ld/plugin.c | |
parent | d4cb7acdd8134607c321fc33c91696d672f49b1d (diff) | |
download | gdb-3917d5d5ca1bed255ee9bd0a0b38360505ce5b4c.zip gdb-3917d5d5ca1bed255ee9bd0a0b38360505ce5b4c.tar.gz gdb-3917d5d5ca1bed255ee9bd0a0b38360505ce5b4c.tar.bz2 |
Provide win32-based dlapi replacements on windows platforms without dlfcn.h.
ld/ChangeLog:
* configure.in: If <dlfcn.h> can't be found, try for <Windows.h>
* configure: Regenerate.
* config.in: Likewise.
* plugin.c [!HAVE_DLFCN_H && HAVE_WINDOWS_H] (dlopen): Provide
trival LoadLibrary-based replacement for Windows systems.
[!HAVE_DLFCN_H && HAVE_WINDOWS_H] (dlsym): Likewise trivial
replacement based on GetProcAddress.
[!HAVE_DLFCN_H && HAVE_WINDOWS_H] (dlsym): Likewise FreeLibrary.
* sysdep.h: Don't infer presence of <dlfcn.h> from ENABLE_PLUGINS
anymore, use its own guard.
Diffstat (limited to 'ld/plugin.c')
-rw-r--r-- | ld/plugin.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/ld/plugin.c b/ld/plugin.c index 0c88ef8..c1961c5 100644 --- a/ld/plugin.c +++ b/ld/plugin.c @@ -32,6 +32,9 @@ #include "plugin.h" #include "plugin-api.h" #include "elf-bfd.h" +#if !defined (HAVE_DLFCN_H) && defined (HAVE_WINDOWS_H) +#include <Windows.h> +#endif /* The suffix to append to the name of the real (claimed) object file when generating a dummy BFD to hold the IR symbols sent from the @@ -128,6 +131,31 @@ static const enum ld_plugin_tag tv_header_tags[] = /* How many entries in the constant leading part of the tv array. */ static const size_t tv_header_size = ARRAY_SIZE (tv_header_tags); +#if !defined (HAVE_DLFCN_H) && defined (HAVE_WINDOWS_H) + +#define RTLD_NOW 0 /* Dummy value. */ + +static void * +dlopen (const char *file, int mode ATTRIBUTE_UNUSED) +{ + return LoadLibrary (file); +} + +static void * +dlsym (void *handle, const char *name) +{ + return GetProcAddress (handle, name); +} + +static int +dlclose (void *handle) +{ + FreeLibrary (handle); + return 0; +} + +#endif /* !defined (HAVE_DLFCN_H) && defined (HAVE_WINDOWS_H) */ + /* Helper function for exiting with error status. */ static int set_plugin_error (const char *plugin) |