diff -Nbaur binutils-2.22/bfd/bfd-in2.h binutils-2.22-ppc/bfd/bfd-in2.h --- binutils-2.22/bfd/bfd-in2.h 2011-09-16 02:15:18.000000000 +0100 +++ binutils-2.22-ppc/bfd/bfd-in2.h 2012-04-03 15:06:10.000000000 +0100 @@ -38,6 +38,8 @@ #include "ansidecl.h" #include "symcat.h" +#include + #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) #ifndef SABER /* This hack is to avoid a problem with some strict ANSI C preprocessors. @@ -308,8 +310,6 @@ && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE \ && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS) -/* Forward define. */ -struct stat; typedef enum bfd_print_symbol { diff -Nbaur binutils-2.22/bfd/bfd-in.h binutils-2.22-ppc/bfd/bfd-in.h --- binutils-2.22/bfd/bfd-in.h 2011-09-16 02:15:18.000000000 +0100 +++ binutils-2.22-ppc/bfd/bfd-in.h 2012-04-03 15:06:10.000000000 +0100 @@ -31,6 +31,8 @@ #include "ansidecl.h" #include "symcat.h" +#include + #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) #ifndef SABER /* This hack is to avoid a problem with some strict ANSI C preprocessors. @@ -301,8 +303,6 @@ && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE \ && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS) -/* Forward define. */ -struct stat; typedef enum bfd_print_symbol { diff -Nbaur binutils-2.22/bfd/config.in binutils-2.22-ppc/bfd/config.in --- binutils-2.22/bfd/config.in 2011-05-12 08:41:40.000000000 +0100 +++ binutils-2.22-ppc/bfd/config.in 2012-04-03 14:50:51.000000000 +0100 @@ -245,6 +245,9 @@ /* Define if has win32_pstatus_t. */ #undef HAVE_WIN32_PSTATUS_T +/* Define to 1 if you have the header file. */ +#undef HAVE_WINDOWS_H + /* Define to 1 if you have the header file. */ #undef HAVE_ZLIB_H diff -Nbaur binutils-2.22/bfd/configure binutils-2.22-ppc/bfd/configure --- binutils-2.22/bfd/configure 2011-11-21 11:55:48.000000000 +0000 +++ binutils-2.22-ppc/bfd/configure 2012-04-03 14:50:59.000000000 +0100 @@ -13508,6 +13508,22 @@ fi + +for ac_header in windows.h dlfcn.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether string.h and strings.h may both be included" >&5 $as_echo_n "checking whether string.h and strings.h may both be included... " >&6; } if test "${gcc_cv_header_string+set}" = set; then : diff -Nbaur binutils-2.22/bfd/configure.in binutils-2.22-ppc/bfd/configure.in --- binutils-2.22/bfd/configure.in 2011-11-21 11:55:46.000000000 +0000 +++ binutils-2.22-ppc/bfd/configure.in 2012-04-03 14:51:23.000000000 +0100 @@ -190,6 +190,9 @@ GCC_HEADER_STDINT(bfd_stdint.h) AC_HEADER_TIME AC_HEADER_DIRENT + +AC_CHECK_HEADERS(windows.h dlfcn.h) + ACX_HEADER_STRING AC_CHECK_FUNCS(fcntl getpagesize setitimer sysconf fdopen getuid getgid fileno) AC_CHECK_FUNCS(strtoull) diff -Nbaur binutils-2.22/bfd/plugin.c binutils-2.22-ppc/bfd/plugin.c --- binutils-2.22/bfd/plugin.c 2011-07-11 16:03:07.000000000 +0100 +++ binutils-2.22-ppc/bfd/plugin.c 2012-04-03 14:51:32.000000000 +0100 @@ -25,7 +25,13 @@ #if BFD_SUPPORTS_PLUGINS #include +#ifdef HAVE_DLFCN_H #include +#elif defined (HAVE_WINDOWS_H) +#include +#else +#error Unknown how to handle dynamic-load-libraries. +#endif #include #include "plugin-api.h" #include "sysdep.h" @@ -34,6 +40,37 @@ #include "libiberty.h" #include +#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 ATTRIBUTE_UNUSED +dlclose (void *handle) +{ + FreeLibrary (handle); + return 0; +} + +static const char * +dlerror (void) +{ + return "Unable to load DLL."; +} + +#endif /* !defined (HAVE_DLFCN_H) && defined (HAVE_WINDOWS_H) */ + #define bfd_plugin_close_and_cleanup _bfd_generic_close_and_cleanup #define bfd_plugin_bfd_free_cached_info _bfd_generic_bfd_free_cached_info #define bfd_plugin_new_section_hook _bfd_generic_new_section_hook