From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17151 invoked by alias); 21 May 2017 15:33:41 -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 17105 invoked by uid 89); 21 May 2017 15:33:39 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-11.0 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_2,GIT_PATCH_3,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 spammy=Hx-languages-length:1991 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; Sun, 21 May 2017 15:33:38 +0000 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dCSrR-0000UB-3O for gdb-patches@sourceware.org; Sun, 21 May 2017 11:33:40 -0400 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:44388) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dCSrQ-0000U5-WB; Sun, 21 May 2017 11:33:37 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3719 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1dCSrQ-0000YE-4L; Sun, 21 May 2017 11:33:36 -0400 Date: Sun, 21 May 2017 15:33:00 -0000 Message-Id: <83vaouns1q.fsf@gnu.org> From: Eli Zaretskii To: Pedro Alves CC: brobecker@adacore.com, simon.marchi@polymtl.ca, gdb-patches@sourceware.org In-reply-to: <7017128a-7b51-5436-657b-58807d04eb02@redhat.com> (message from Pedro Alves on Fri, 19 May 2017 12:23:06 +0100) Subject: Re: GDB 7.99.91 MinGW compilation error in cli-script.c Reply-to: Eli Zaretskii References: <20170504194442.63AAF60B72@joel.gnat.com> <83o9v3cs25.fsf@gnu.org> <91d9fc6cc7c07674a0b5cd02e7b1502b@polymtl.ca> <8360h38r1r.fsf@gnu.org> <20170517143136.mdnstf2u2jiydvnd@adacore.com> <83fug35v70.fsf@gnu.org> <83y3tt2ow0.fsf@gnu.org> <83vaox2j0w.fsf@gnu.org> <7017128a-7b51-5436-657b-58807d04eb02@redhat.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/msg00484.txt.bz2 > Cc: brobecker@adacore.com, simon.marchi@polymtl.ca, gdb-patches@sourceware.org > From: Pedro Alves > Date: Fri, 19 May 2017 12:23:06 +0100 > > On 05/19/2017 12:17 PM, Eli Zaretskii wrote: > > > Fine with me, but Someone(TM) should figure out what to use instead of > > "#if 0". > > > > Something around > __MINGW32__ / _GLIBCXX_USE_C99 / _GLIBCXX_HAVE_BROKEN_VSWPRINTF ? Here's what I came up with. OK to commit? --- gdb/common/common-utils.h~0 2017-04-17 17:09:57.000000000 +0300 +++ gdb/common/common-utils.h 2017-05-21 10:01:22.219168100 +0300 @@ -22,6 +22,7 @@ #include #include +#include /* If possible, define FUNCTION_NAME, a macro containing the name of the function being defined. Since this macro may not always be @@ -63,6 +64,42 @@ std::string string_printf (const char* fmt, ...) ATTRIBUTE_PRINTF (1, 2); +/* Returns a string representation of VAL. Replacement for C++11 + std::to_string for hosts that lack it. */ + +namespace gdb { + +#define REPLACE_TO_STRING 0 + +#ifdef __MINGW32__ +# include <_mingw.h> +# ifndef _GLIBCXX_USE_C99 +# undef REPLACE_TO_STRING +# define REPLACE_TO_STRING 1 +# endif +#endif + +#if REPLACE_TO_STRING + +template +inline std::string +to_string (const T &val) +{ + std::stringstream ss; + + ss << val; + return ss.str (); +} + +#else /* !REPLACE_TO_STRING */ + +using std::to_string; + +#endif + +#undef REPLACE_TO_STRING +} + /* Make a copy of the string at PTR with LEN characters (and add a null character at the end in the copy). Uses malloc to get the space. Returns the address of the copy. */ --- gdb/cli/cli-script.c~0 2017-04-17 17:09:57.000000000 +0300 +++ gdb/cli/cli-script.c 2017-05-21 09:36:17.610252500 +0300 @@ -806,7 +818,7 @@ user_args::insert_args (const char *line if (p[4] == 'c') { - new_line += std::to_string (m_args.size ()); + new_line += gdb::to_string (m_args.size ()); line = p + 5; } else