From: "Pierre Muller" <pierre.muller@ics-cnrs.unistra.fr>
To: "'Pedro Alves'" <palves@redhat.com>,
"'asmwarrior'" <asmwarrior@gmail.com>
Cc: "'GDB Development'" <gdb@sourceware.org>,
"'Binutils Development'" <binutils@sourceware.org>
Subject: [RFC] BFD MinGW/Cygwin build error in bfd/peiXXgen.c
Date: Wed, 18 Dec 2013 13:03:00 -0000 [thread overview]
Message-ID: <002101cefbf1$7554b9a0$5ffe2ce0$@muller@ics-cnrs.unistra.fr> (raw)
In-Reply-To: <52B1738D.4010409@redhat.com>
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;
> -----Message d'origine-----
> De : binutils-owner@sourceware.org [mailto:binutils-
> owner@sourceware.org] De la part de Pedro Alves
> Envoyé : mercredi 18 décembre 2013 11:06
> À : asmwarrior
> Cc : GDB Development; Binutils Development
> Objet : Re: BFD MinGW build error: implicit declaration of function
> 'wcsncasecmp'
>
> Hi there,
>
> Adding the binutils folks. (bfd is maintained by binutils.)
>
> Looks like fallout from the .rsrc merge support.
>
> On 12/18/2013 09:53 AM, asmwarrior wrote:
> > I see the build error when I build GDB(git head) under MSYS+MinGW,
> here the is build log
> >
> > mv -f .deps/pe-i386.Tpo .deps/pe-i386.Plo
> > rm -f peigen.c
> > sed -e s/XX/pe/g < ../../binutils-gdb/bfd/peXXigen.c > peigen.new
> > mv -f peigen.new peigen.c
> > /bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -
> I../../binutils-gdb/bfd -D__USE_MINGW_FSEEK -I. -I../../binutils-
> gdb/bfd -I../../binutils-gdb/bfd/../include -DHAVE_i386pe_vec -
> DHAVE_i386pei_vec -DHAVE_bfd_elf32_i386_vec -
> DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -
> DBINDIR='"/mingw/bin"' -W -Wall -Wstrict-prototypes -Wmissing-
> prototypes -Wshadow -Wno-format -Werror -O0 -g -D__USE_MINGW_ACCESS -MT
> peigen.lo -MD -MP -MF .deps/peigen.Tpo -c -o peigen.lo peigen.c
> > libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../../binutils-gdb/bfd -
> D__USE_MINGW_FSEEK -I. -I../../binutils-gdb/bfd -I../../binutils-
> gdb/bfd/../include -DHAVE_i386pe_vec -DHAVE_i386pei_vec -
> DHAVE_bfd_elf32_i386_vec -DHAVE_bfd_elf32_little_generic_vec -
> DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"/mingw/bin\" -W -Wall -
> Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wno-format -Werror -
> O0 -g -D__USE_MINGW_ACCESS -MT peigen.lo -MD -MP -MF .deps/peigen.Tpo -
> c peigen.c -o peigen.o
> > peigen.c: In function 'rsrc_cmp':
> > peigen.c:3006:7: error: implicit declaration of function
> 'wcsncasecmp' [-Werror=implicit-function-declaration]
> > res = wcsncasecmp (& awc, & bwc, 1);
> > ^
> > cc1.exe: all warnings being treated as errors
> > make[4]: *** [peigen.lo] Error 1
> > make[4]: Leaving directory `/f/build_gdb/mybuild/bfd'
> > make[3]: *** [all-recursive] Error 1
> > make[3]: Leaving directory `/f/build_gdb/mybuild/bfd'
> > make[2]: *** [all] Error 2
> >
> > I just see this is related to the change of this commit:
> >
> > Revision: 5879bb8fc592e4aea85bdc2a84381d89850e5770
> > Author: Nick Clifton <nickc@redhat.com>
> > Date: 2013-12-17 23:39:13
> > Message:
> > * peXXigen.c: Include wchar.h if available.
> >
> > Include safe-ctype.h.
> > (HighBitSet, SetHighBit, WithoutHighBit): New macros.
> > (pe_print_resource_entries): Rename to
> > rsrc_print_resource_entries. Handle names that are not RVAs.
> > (pe_print_resource_directory): Rename to
> > rsrc_print_resource_directory.
> > (pe_print_rsrc): Rename to rsrc_print_section. Corrupt
> > computation of RVA bias.
> > (rsrc_count_entries): New function.
> > (rsrc_count_directory): New function.
> > (rsrc_parse_entry): New function.
> > (rsrc_parse_entries): New function.
> > (rsrc_parse_directory): New function.
> > (rsrc_write_string): New function.
> > (rsrc_compute_rva): New function.
> > (rsrc_write_leaf): New function.
> > (rsrc_write_entry): New function.
> > (rsrc_write_directory): New function.
> > (u16_mbtouc): New function.
> > (rsrc_cmp): New function.
> > (rsrc_print_name): New function.
> > (rsrc_resource_name): New function.
> > (rsrc_merge_string_entries): New function.
> > (rsrc_sort_entries): New function.
> > (rsrc_attach_chain): New function.
> > (rsrc_merge): New function.
> > (rsrc_process_section): New function - merges the contents of a
> > .rsrc section.
> > (_bfd_XXi_final_link_postscript): Call rsrc_process_section.
> > * configure.in (AC_CHECK_HEADERS): Add wchar.h
> > * config.in: Regenerate.
> > * configure: Regenerate.
> > ----
> > Modified: bfd/ChangeLog
> > Modified: bfd/config.in
> > Modified: bfd/configure
> > Modified: bfd/configure.in
> > Modified: bfd/peXXigen.c
> >
> > In my ststem, wchar.h exists, but I see there is no
> functionwcsncasecmp() here.
> >
> > Thanks
> >
> > Yuanhui Zhang
> >
>
>
> --
> Pedro Alves
next prev parent reply other threads:[~2013-12-18 13:03 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 ` Pierre Muller [this message]
2013-12-18 17:52 ` [RFC] BFD MinGW/Cygwin build error in bfd/peiXXgen.c 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 ` [RFC] " asmwarrior
[not found] ` <52b19d19.0850420a.7b6a.52dcSMTPIN_ADDED_BROKEN@mx.google.com>
2013-12-18 17:56 ` 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='002101cefbf1$7554b9a0$5ffe2ce0$@muller@ics-cnrs.unistra.fr' \
--to=pierre.muller@ics-cnrs.unistra.fr \
--cc=asmwarrior@gmail.com \
--cc=binutils@sourceware.org \
--cc=gdb@sourceware.org \
--cc=palves@redhat.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