From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3841 invoked by alias); 19 May 2017 15:22:59 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 3818 invoked by uid 89); 19 May 2017 15:22:58 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.9 required=5.0 tests=BAYES_00,KAM_LAZY_DOMAIN_SECURITY,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=no version=3.3.2 spammy=jun, Jun X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 19 May 2017 15:22:57 +0000 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8111380C00; Fri, 19 May 2017 15:22:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 8111380C00 Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=palves@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 8111380C00 Received: from [127.0.0.1] (ovpn04.gateway.prod.ext.ams2.redhat.com [10.39.146.4]) by smtp.corp.redhat.com (Postfix) with ESMTP id D5AF718A66; Fri, 19 May 2017 15:22:56 +0000 (UTC) Subject: Re: MinGW compilation warnings in libiberty's xstrndup.c To: Eli Zaretskii , gcc-patches@gcc.gnu.org References: <83h90vcqo6.fsf@gnu.org> Cc: gdb-patches@sourceware.org, Thomas Schwinge From: Pedro Alves Message-ID: <60a354b0-6c1a-15ea-177a-8bdb198c8c03@redhat.com> Date: Fri, 19 May 2017 15:27:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <83h90vcqo6.fsf@gnu.org> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-SW-Source: 2017-05/txt/msg01584.txt.bz2 [Adding Thomas] On 05/08/2017 04:30 PM, Eli Zaretskii wrote: > When compiling libiberty (as part of GDB) with MinGW on MS-Windows, I > see the following warning: > > gcc -c -DHAVE_CONFIG_H -O2 -gdwarf-4 -g3 -D__USE_MINGW_ACCESS -I. -I./../include -W -Wall -Wwrite-strings -Wc++-compat -Wstrict-prototypes -pedantic -D_GNU_SOURCE ./xstrndup.c -o xstrndup.o > ./xstrndup.c: In function 'xstrndup': > ./xstrndup.c:51:16: warning: implicit declaration of function 'strnlen' [-Wimplicit-function-declaration] > size_t len = strnlen (s, n); > ^ > > This happens because libiberty.h uses incorrect guards for the > prototype of strnlen: > > #if defined (HAVE_DECL_STRNLEN) && !HAVE_DECL_STRNLEN > extern size_t strnlen (const char *, size_t); > #endif > > It should use HAVE_STRNLEN instead, because that's the only > strnlen-related macro defined in config.g when strnlen is probed by > the configure script. Looks like the declaration check got added to gcc's configure, but not elsewhere, with: commit d968efeac356364c01445013a1a3660e5087cb15 Author: tschwinge AuthorDate: Tue Jun 10 09:45:00 2014 +0000 [PR lto/61334] Declare prototype for strnlen, if needed. include/ * libiberty.h [defined (HAVE_DECL_STRNLEN) && !HAVE_DECL_STRNLEN] (strnlen): New prototype. gcc/ * configure.ac: Use gcc_AC_CHECK_DECLS to check for strnlen prototype. * config.in: Regenerate. * configure: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211401 138bc75d-0d04-0410-961f-82ee72b054a4 But then, xstrndup.c has at the top: #ifdef HAVE_STRING_H #include #else # ifdef HAVE_STRINGS_H # include # endif #endif So I would expect your build to pick the strnlen declaration from one of the string.h or strings.h mingw headers. Why didn't it? Thanks, Pedro Alves