From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 114096 invoked by alias); 8 May 2017 15:00:38 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 113880 invoked by uid 89); 8 May 2017 15:00:25 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,KAM_STOCKGEN,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 spammy=guile X-HELO: eggs.gnu.org Received: from eggs.gnu.org (HELO eggs.gnu.org) (208.118.235.92) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 08 May 2017 15:00:23 +0000 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d7k97-0003NN-Mt for gdb-patches@sourceware.org; Mon, 08 May 2017 11:00:24 -0400 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:53074) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d7k97-0003NJ-Ka for gdb-patches@sourceware.org; Mon, 08 May 2017 11:00:21 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:1485 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1d7k97-0005Ut-1y for gdb-patches@sourceware.org; Mon, 08 May 2017 11:00:21 -0400 Date: Mon, 08 May 2017 15:00:00 -0000 Message-Id: <83o9v3cs25.fsf@gnu.org> From: Eli Zaretskii To: gdb-patches@sourceware.org In-reply-to: <20170504194442.63AAF60B72@joel.gnat.com> (message from Joel Brobecker on Thu, 4 May 2017 12:44:42 -0700 (PDT)) Subject: Re: GDB 7.99.91 MinGW compilation error in cli-script.c Reply-to: Eli Zaretskii References: <20170504194442.63AAF60B72@joel.gnat.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-IsSubscribed: yes X-SW-Source: 2017-05/txt/msg00186.txt.bz2 The error manifests itself as follows: g++ -std=gnu++11 -O2 -gdwarf-4 -g3 -I. -I. -I./common -I./config -DLOCALEDIR="\"d:/usr/share/locale\"" -DHAVE_CONFIG_H -I./../include/opcode -I./../opcodes/.. -I./../readline/.. -I../bfd -I./../bfd -I./../include -I../libdecnumber -I./../libdecnumber -I./gnulib/import -Ibuild-gnulib/import -DTUI=1 -Id:/usr/include -Id:/usr/include/guile/2.0 -Id:/usr/include -Id:/usr/Python26/include -Id:/usr/Python26/include -Wall -Wpointer-arith -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -Wempty-body -Wunused-but-set-parameter -Wunused-but-set-variable -Wno-sign-compare -Wno-narrowing -Wno-format -c -o cli-script.o -MT cli-script.o -MMD -MP -MF .deps/cli-script.Tpo cli/cli-script.c cli/cli-script.c: In member function 'std::__cxx11::string user_args::insert_args(const char*) const': cli/cli-script.c:809:16: error: 'to_string' is not a member of 'std' new_line += std::to_string (m_args.size ()); ^ Makefile:1888: recipe for target `cli-script.o' failed make[2]: *** [cli-script.o] Error 1 The reason is that std::to_string is guarded by the symbol _GLIBCXX_HAVE_BROKEN_VSWPRINTF, which mingw.org's MinGW defines in its os_defines.h, because msvcrt.dll's implementation of vswprintf is incompatible with what C++11 expects. So GDB assumes here without testing that this method is available, which is not true at least on one platform. How best to solve this? I worked around by providing my own implementation based on std::ostringstream, but I'm not sure this is TRT. An alternative would be to use some less problematic API, since currently cli-script.c is the only user of this method, and its needs are quite modest. And if we do provide a replacement for to_string, should the configure script probe for it, or should we condition it specifically on MinGW and _GLIBCXX_HAVE_BROKEN_VSWPRINTF? Thoughts?