From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22909 invoked by alias); 24 May 2013 08:53:22 -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 22878 invoked by uid 89); 24 May 2013 08:53:22 -0000 X-Spam-SWARE-Status: No, score=-8.1 required=5.0 tests=AWL,BAYES_00,KHOP_THREADED,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS,TW_XS autolearn=ham version=3.3.1 Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Fri, 24 May 2013 08:53:21 +0000 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r4O8rHwA023071 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 24 May 2013 04:53:17 -0400 Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id r4O8rF1J027731; Fri, 24 May 2013 04:53:16 -0400 Message-ID: <519F2A7A.4050002@redhat.com> Date: Fri, 24 May 2013 08:53:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130311 Thunderbird/17.0.4 MIME-Version: 1.0 To: Joel Brobecker CC: Sergio Durigan Junior , Svante Signell , gdb-patches@sourceware.org Subject: Re: Small patch to enable build of gdb-7.6 for GNU/Hurd References: <1369326967.8127.33.camel@s1499.it.kth.se> <20130524042734.GG4017@adacore.com> In-Reply-To: <20130524042734.GG4017@adacore.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-SW-Source: 2013-05/txt/msg00916.txt.bz2 On 05/24/2013 05:27 AM, Joel Brobecker wrote: > On Thu, May 23, 2013 at 11:59:46PM -0300, Sergio Durigan Junior wrote: >> Thanks for your patch, Svante. >> >> On Thursday, May 23 2013, Svante Signell wrote: >> >>> --- a/gdb/nto-tdep.c 2013-05-23 14:28:24.000000000 +0000 >>> +++ b/gdb/nto-tdep.c 2013-05-23 15:01:24.000000000 +0000 >>> @@ -147,9 +147,11 @@ nto_find_and_open_solib (char *solib, un >>> void >>> nto_init_solib_absolute_prefix (void) >>> { >>> - char buf[PATH_MAX * 2], arch_path[PATH_MAX]; >>> + char *buf, *arch_path; >>> char *nto_root, *endian; >>> const char *arch; >>> + int arch_len, len; >>> +#define FMT "set solib-absolute-prefix %s" >>> >>> nto_root = nto_target (); >>> if (strcmp (gdbarch_bfd_arch_info (target_gdbarch ())->arch_name, "i386") == 0) >>> @@ -172,9 +174,13 @@ nto_init_solib_absolute_prefix (void) >>> == BFD_ENDIAN_BIG ? "be" : "le"; >>> } >>> >>> - xsnprintf (arch_path, sizeof (arch_path), "%s/%s%s", nto_root, arch, endian); >>> + arch_len = strlen (nto_root) + 1 + strlen (arch) + strlen (endian) + 1; >>> + arch_path = alloca (arch_len); >>> + xsnprintf (arch_path, arch_len, "%s/%s%s", nto_root, arch, endian); >>> >>> - xsnprintf (buf, sizeof (buf), "set solib-absolute-prefix %s", arch_path); >>> + len = strlen (FMT) - 2 + strlen (arch_path) + 1; >>> + buf = alloca (len); >>> + xsnprintf (buf, len, FMT, arch_path); >> >> When I define things in the middle of functions/code, I usually #undef >> them just after I finished using, to avoid conflicts with others >> #defines. Specially when the #define is called "FMT", which is very >> generic IMO. > > Agreed. > > And quite honestly, I find this use of a macro in the middle of > a function quite ugly and unnecessary, no matter what was done > before. My preference mirrors Tom's suggestion, but failing that, > I'd rather FMT be a const char * or a const char []. Agreed. const char fmt[] = "..." is better than 'const char *', as the latter gives you an unnecessary extra pointer. Make that 'static const char fmt[] = "...";' even. But really alloca for potentially large/unbounded buffers is evil. xstrprintf plus a cleanup would definitely be my preference. -- Pedro Alves