This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Fix libtool.m4 dlopen lookup for mingw
- From: Joel Brobecker <brobecker at adacore dot com>
- To: Pavel Chupin <pavel dot v dot chupin at gmail dot com>
- Cc: gdb-patches at sourceware dot org, "H.J. Lu" <hjl dot tools at gmail dot com>
- Date: Tue, 27 Nov 2012 09:11:42 +0100
- Subject: Re: [PATCH] Fix libtool.m4 dlopen lookup for mingw
- References: <CANwJu1-ObTbjMgehfWOY7xTtkaEx3=3Kw-eqfhPJLA3f91MA1A@mail.gmail.com>
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