public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: simon.cook@embecosm.com
Cc: gdb@sourceware.org
Subject: Re: Unable to build GDB on Windows
Date: Mon, 28 Sep 2020 17:43:43 +0300	[thread overview]
Message-ID: <83zh5aklls.fsf@gnu.org> (raw)
In-Reply-To: <833632m10q.fsf@gnu.org> (message from Eli Zaretskii via Gdb on Mon, 28 Sep 2020 17:25:25 +0300)

> Date: Mon, 28 Sep 2020 17:25:25 +0300
> From: Eli Zaretskii via Gdb <gdb@sourceware.org>
> Cc: gdb@sourceware.org
> 
> > From: Simon Cook <simon.cook@embecosm.com>
> > Date: Mon, 28 Sep 2020 14:47:25 +0100
> > 
> > I've been trying to build top of tree GDB on Windows (natively under
> > the MSYS2 environment), and haven't been able to link successfully due
> > to undefined symbols after linking against gnulib:
> > 
> >     CXXLD  gdb.exe
> >   ../gnulib/import/libgnu.a(getrandom.o): In function `getrandom':
> >   C:\msys64s\home\simon\work\b\gnulib\import/../../../binutils-gdb/gnulib/import/getrandom.c:129:
> > undefined reference to `BCryptGenRandom'
> >   collect2.exe: error: ld returned 1 exit status
> > 
> > Reading through the source file and gnulib/import/m4/getrandom.m4, it
> > suggests that in my case if bcrypt can be guaranteed to be present
> > then I should add -lbcrypt to my linker flags to resolve these
> > references, and indeed if I execute the failing gdb link command and
> > add -lbcrypt at the end then my link succeeds.

Btw, looking at Gnulib's getrandom.c, my conclusion is that a GDB
built on Windows 7 and later will be unable to run on older versions
of Windows, because it will have a static dependency on bcrypt.dll and
the BCryptGenRandom function from that DLL.  IOW, such a GDB will
refuse to run on older Windows systems.

OTOH, if you build on Windows before 7, the produced binary will be
able to run on newer versions of Windows by dynamically loading
bcrypt.dll (when available) at run time, and using a fallback
otherwise.

Perhaps no one cares about Windows 7 and older anymore, but I just
wanted to say this FTR, in case someone bumps into such a problem.

  reply	other threads:[~2020-09-28 14:43 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-28 13:47 Simon Cook
2020-09-28 14:25 ` Eli Zaretskii
2020-09-28 14:43   ` Eli Zaretskii [this message]
2020-09-28 15:15     ` Joel Brobecker
2020-09-28 15:21       ` Eli Zaretskii
2020-09-28 15:17     ` Christian Biesinger
2020-09-28 15:23       ` Eli Zaretskii
2020-09-28 15:29         ` Eli Zaretskii
2020-09-28 15:02   ` Simon Cook
2020-09-28 15:14     ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83zh5aklls.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=gdb@sourceware.org \
    --cc=simon.cook@embecosm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).