[PATCH] Fix libtool.m4 dlopen lookup for mingw

Joel Brobecker brobecker@adacore.com
Tue Nov 27 08:11:00 GMT 2012


Hi Pavel,

> Attached patch removes mingw from special cases of dlopen lookup. It
> allows dlopen to be found later in libdl and have it added properly as
> -ldl in bfd and sim builds.
> 
> To reproduce the problem:
> 
> ../configure --enable-plugins --target=arm-linux-android
> --host=i586-pc-mingw32msvc --build=i386-linux-gnu
> make
> 
> Error:
> ../../bfd/libbfd.a(plugin.o): In function `try_load_plugin':
> /tmp/gdb/BUILD/bfd/../../bfd/plugin.c:170: undefined reference to `dlopen'
> /tmp/gdb/BUILD/bfd/../../bfd/plugin.c:177: undefined reference to `dlsym'
> /tmp/gdb/BUILD/bfd/../../bfd/plugin.c:173: undefined reference to `dlerror'
> 
> ChangeLog:
> 
> 2012-11-27  Pavel Chupin  <pavel.v.chupin@intel.com>
> 
>         Fix libtool.m4 libdl lookup for mingw
>         * libtool.m4: Remove mingw from special case of dlopen lookup
>         * bfd/configure: Regenerate.
>         * sim/arm/configure: Regenerate.
>         * sim/avr/configure: Regenerate.
>         * sim/bfin/configure: Regenerate.
>         * sim/common/configure: Regenerate.
>         * sim/cr16/configure: Regenerate.
>         * sim/cris/configure: Regenerate.
>         * sim/d10v/configure: Regenerate.
>         * sim/erc32/configure: Regenerate.
>         * sim/frv/configure: Regenerate.
>         * sim/h8300/configure: Regenerate.
>         * sim/iq2000/configure: Regenerate.
>         * sim/lm32/configure: Regenerate.
>         * sim/m32c/configure: Regenerate.
>         * sim/m32r/configure: Regenerate.
>         * sim/m68hc11/configure: Regenerate.
>         * sim/mcore/configure: Regenerate.
>         * sim/microblaze/configure: Regenerate.
>         * sim/mips/configure: Regenerate.
>         * sim/mn10300/configure: Regenerate.
>         * sim/moxie/configure: Regenerate.
>         * sim/rl78/configure: Regenerate.
>         * sim/rx/configure: Regenerate.
>         * sim/sh/configure: Regenerate.
>         * sim/sh64/configure: Regenerate.
>         * sim/v850/configure: Regenerate.

Thanks for sending this patch.

Changes to the root directory are controled by the GCC developers,
so you will need to send your patch there for approval. But looking
at your patch, I am wondering whether it is actually right. I have
two reasons for questioning your patch:

  - I don't think MinGW actually provides libdl, at least not by default.
    Your change would probably break the build for those who do not
    have the dlfcn extension installed;

  - Looking at bfd/plugin.c, there are implementations of these
    dlfcn functions provided by that file for Windows.
    These implementations are guarded by:

        #if !defined (HAVE_DLFCN_H) && defined (HAVE_WINDOWS_H)

I am guessing that your MinGW install has dlfcn.h. Perhaps the problem
would need to be fixed in bfd instead (binutils AT sourceware dot org).

-- 
Joel



More information about the Gdb-patches mailing list