Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: asmwarrior <asmwarrior@gmail.com>
To: Pierre Muller <pierre.muller@ics-cnrs.unistra.fr>,
	 'Pedro Alves' <palves@redhat.com>
Cc: 'GDB Development' <gdb@sourceware.org>,
	 'Binutils Development' <binutils@sourceware.org>
Subject: Re: [RFC] BFD MinGW/Cygwin build error in bfd/peiXXgen.c
Date: Wed, 18 Dec 2013 13:25:00 -0000	[thread overview]
Message-ID: <52B1A20C.6090607@gmail.com> (raw)
In-Reply-To: <52b19d01.22cbc20a.69b0.ffffb29eSMTPIN_ADDED_BROKEN@mx.google.com>

On 2013-12-18 21:02, Pierre Muller wrote:
>   Cygwin also fails to compile bfd/peigen.c, itself gebnerated
> from source bfd/peXXigen.c.
>
>   The patch below allows to compile both for mingw32 and cygwin hosts.
> To fix the unknown wcsncasecmp function for mingw32 hosts,
> I added this code:
>
> +#ifdef __MINGW32__
> +#define wcsncasecmp wcsnicmp
> +#endif
>   I think that using the Windows API function wcsnicmp
> here is OK, but I don't know if the code should be somehow modified to
> accept wcsncasecmp function if it is added later to mingw hosts...
>
> Pierre Muller
>
>
> bfd/ChangeLog entry:
>
> 2013-12-18  Pierre Muller  <muller@sourceware.org>
>
> 	peXXigen.c (u16_mbtouc): Avoid unused function warning by exculding if
> 	__CYGWIN__ or __MINGW32__ macro is defined.
> 	(rsrc_cmp): Fix short Windows OS version. Also use this code
> 	for mingw32 systems.
> 	[__MINGW32__]: Alias wcsncasecmp function to Windows API wcsnicmp function.
>
> diff --git a/bfd/peXXigen.c b/bfd/peXXigen.c
> index 5e2a876..05c7d8b 100644
> --- a/bfd/peXXigen.c
> +++ b/bfd/peXXigen.c
> @@ -2930,7 +2930,7 @@ rsrc_write_directory (rsrc_write_data * data,
>    BFD_ASSERT (nt == next_entry);
>  }
>
> -#ifdef HAVE_WCHAR_H
> +#if defined HAVE_WCHAR_H && ! defined __CYGWIN__ && ! defined __MINGW32__
>  /* Return the length (number of units) of the first character in S,
>     putting its 'ucs4_t' representation in *PUC.  */
>
> @@ -2979,9 +2979,16 @@ rsrc_cmp (bfd_boolean is_name, rsrc_entry * a, rsrc_entry * b)
>    /* We have to perform a case insenstive, unicode string comparison...  */
>    int res;
>
> -#ifdef __CYGWIN__
> +#if defined  __CYGWIN__ || defined __MINGW32__
> +#ifdef __MINGW32__
> +#define wcsncasecmp wcsnicmp
> +#endif
>    /* Under Cygwin unicode == UTF-16 == wchar_t.
>       FIXME: The same is true for MingGW - we should test for that too.  */
> +  bfd_byte *    astring = a->name_id.name.string;
> +  unsigned int  alen    = a->name_id.name.len;
> +  bfd_byte *    bstring = b->name_id.name.string;
> +  unsigned int  blen    = b->name_id.name.len;
>    res = wcsncasecmp ((const wchar_t *) astring + 2, (const wchar_t *) bstring + 2, min (alen, blen));
>  #elif defined HAVE_WCHAR_H
>    unsigned int  i;
Thanks, just test this patch, it fix the build error under MinGW-Build 4.8.2 + MSYS.

Yuanhui Zhang


  parent reply	other threads:[~2013-12-18 13:25 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-18  9:54 GDB MinGW build error: implicit declaration of function 'wcsncasecmp' asmwarrior
2013-12-18  9:58 ` asmwarrior
2013-12-18 10:06 ` BFD " Pedro Alves
2013-12-18 12:50   ` asmwarrior
2013-12-18 15:47     ` Eli Zaretskii
2013-12-18 13:03   ` [RFC] BFD MinGW/Cygwin build error in bfd/peiXXgen.c Pierre Muller
2013-12-18 17:52     ` nick clifton
2013-12-19 11:45       ` [RFC-v2] " Pierre Muller
2013-12-19 12:41         ` nick clifton
2013-12-19 13:02           ` Mark Kettenis
2013-12-19 13:18           ` Pierre Muller
2013-12-19 15:13             ` nick clifton
     [not found]   ` <52b19d01.22cbc20a.69b0.ffffb29eSMTPIN_ADDED_BROKEN@mx.google.com>
2013-12-18 13:25     ` asmwarrior [this message]
     [not found]   ` <52b19d19.0850420a.7b6a.52dcSMTPIN_ADDED_BROKEN@mx.google.com>
2013-12-18 17:56     ` [RFC] " Pedro Alves
2013-12-19 11:15       ` nick clifton
2013-12-18 15:35 ` GDB MinGW build error: implicit declaration of function 'wcsncasecmp' 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=52B1A20C.6090607@gmail.com \
    --to=asmwarrior@gmail.com \
    --cc=binutils@sourceware.org \
    --cc=gdb@sourceware.org \
    --cc=palves@redhat.com \
    --cc=pierre.muller@ics-cnrs.unistra.fr \
    /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