From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7762 invoked by alias); 26 Nov 2013 21:32:59 -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 7749 invoked by uid 89); 26 Nov 2013 21:32:58 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.4 required=5.0 tests=AWL,BAYES_50,RDNS_NONE,URIBL_BLOCKED autolearn=no version=3.3.2 X-HELO: relay1.mentorg.com Received: from Unknown (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 26 Nov 2013 21:31:31 +0000 Received: from svr-orw-fem-01.mgc.mentorg.com ([147.34.98.93]) by relay1.mentorg.com with esmtp id 1VlQDz-00019o-VZ from Luis_Gustavo@mentor.com ; Tue, 26 Nov 2013 13:31:16 -0800 Received: from NA1-MAIL.mgc.mentorg.com ([147.34.98.181]) by svr-orw-fem-01.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.4675); Tue, 26 Nov 2013 13:31:15 -0800 Received: from [172.30.2.203] ([172.30.2.203]) by NA1-MAIL.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.3959); Tue, 26 Nov 2013 13:31:14 -0800 Message-ID: <52951318.8010809@codesourcery.com> Date: Tue, 26 Nov 2013 21:50:00 -0000 From: Luis Machado Reply-To: lgustavo@codesourcery.com User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 To: Doug Evans CC: "gdb-patches@sourceware.org" Subject: Re: [PATCH, testsuite] Prevent warnings due to dummy malloc calls. References: <5294F42D.6020007@codesourcery.com> In-Reply-To: Content-Type: multipart/mixed; boundary="------------070106080204010003090404" X-IsSubscribed: yes X-SW-Source: 2013-11/txt/msg00826.txt.bz2 This is a multi-part message in MIME format. --------------070106080204010003090404 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-length: 1838 On 11/26/2013 07:12 PM, Doug Evans wrote: > On Tue, Nov 26, 2013 at 11:19 AM, Luis Machado > wrote: >> Hi, >> >> When running GDB's testsuite with libraries/compilers that are more >> restrictive in terms of warnings, i've found that some tests were failing >> due to malloc being called but not having its return value assigned to any >> variables, leading to this warning: >> >> warning: ignoring return value of 'malloc', declared with attribute >> warn_unused_result [-Wunused-result] >> >> The following patch adjusts those testcases to silence the warnings by (1) >> assigning malloc's return value and (2) freeing that pointer later on. >> >> In the case of gdb.base/randomize.c, we're missing a free call, which leads >> to an unused variable warning. >> >> Ok? > > Coping with these kinds of warnings is a really slippery slope, the > testsuite is just not ready IMO. Agreed. I had the greatest idea of checking other warnings in the testsuite... but i came back to my senses and dropped it for now. :-) > OTOH, I don't mind changes like this particular one. > > One nit: Please change all occurrences of this: > > + if (p != NULL) > + free (p); > > to this > > + free (p); > > It's simpler and equally correct. Done! > > The randomize.c case is a bit odd, printing p after it's freed. > Maybe just add a comment explaining why things are the way they are? > > diff --git a/gdb/testsuite/gdb.base/randomize.c > b/gdb/testsuite/gdb.base/randomize.c > index 6a65663..127a4c7 100644 > --- a/gdb/testsuite/gdb.base/randomize.c > +++ b/gdb/testsuite/gdb.base/randomize.c > @@ -24,5 +24,8 @@ int main() > p = malloc (1); > > + if (p != NULL) > + free (p); > + > return 0; /* print p */ > } > Yeah, this really needs a different change, as done in the attached patch. Thanks! Luis --------------070106080204010003090404 Content-Type: text/x-patch; name="malloc_v2.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="malloc_v2.diff" Content-length: 2664 2013-11-26 Luis Machado gdb/testsuite/ * gdb.base/callfuncs.c (main): Assign malloc's return value and free it afterwards. * gdb.base/charset-malloc.c (malloc_stub): Likewise. * gdb.base/printcmds.c (main): Likewise. * gdb.base/randomize.c (main): Free "p". * gdb.base/setvar.c (dummy): Assign malloc's return value and free it afterwards. diff --git a/gdb/testsuite/gdb.base/callfuncs.c b/gdb/testsuite/gdb.base/callfuncs.c index 0d76ee9..c645e0a 100644 --- a/gdb/testsuite/gdb.base/callfuncs.c +++ b/gdb/testsuite/gdb.base/callfuncs.c @@ -652,9 +652,10 @@ voidfunc (void) int main () { - malloc(1); + void *p = malloc (1); t_double_values(double_val1, double_val2); t_structs_c(struct_val1); + free (p); return 0 ; } diff --git a/gdb/testsuite/gdb.base/charset-malloc.c b/gdb/testsuite/gdb.base/charset-malloc.c index 58242a2..565f872 100644 --- a/gdb/testsuite/gdb.base/charset-malloc.c +++ b/gdb/testsuite/gdb.base/charset-malloc.c @@ -31,5 +31,6 @@ malloc_stub (void) { /* charset.exp wants to allocate memory for constants. So make sure malloc gets linked into the program. */ - malloc (1); + void *p = malloc (1); + free (p); } diff --git a/gdb/testsuite/gdb.base/printcmds.c b/gdb/testsuite/gdb.base/printcmds.c index d80c13d..57e04e6 100644 --- a/gdb/testsuite/gdb.base/printcmds.c +++ b/gdb/testsuite/gdb.base/printcmds.c @@ -218,10 +218,11 @@ char invalid_RRR[] = "aaaaaaaaaaaaaaaaaaaa" int main () { - malloc(1); + void *p = malloc (1); /* Prevent AIX linker from removing variables. */ return ctable1[0] + ctable2[0] + int1dim[0] + int2dim[0][0] + int3dim[0][0][0] + int4dim[0][0][0][0] + teststring[0] + *parrays -> array1 + a1[0] + a2[0]; + free (p); } diff --git a/gdb/testsuite/gdb.base/randomize.c b/gdb/testsuite/gdb.base/randomize.c index 6a65663..4c91626 100644 --- a/gdb/testsuite/gdb.base/randomize.c +++ b/gdb/testsuite/gdb.base/randomize.c @@ -24,5 +24,6 @@ int main() p = malloc (1); - return 0; /* print p */ + free (p); /* print p */ + return 0; } diff --git a/gdb/testsuite/gdb.base/setvar.c b/gdb/testsuite/gdb.base/setvar.c index 3a80b22..5d08602 100644 --- a/gdb/testsuite/gdb.base/setvar.c +++ b/gdb/testsuite/gdb.base/setvar.c @@ -204,7 +204,7 @@ dummy () { /* setvar.exp wants to allocate memory for constants. So make sure malloc gets linked into the program. */ - malloc (1); + void *p = malloc (1); /* Some linkers (e.g. on AIX) remove unreferenced variables, so make sure to reference them. */ @@ -278,4 +278,5 @@ dummy () sef.field = s1; uef.field = u1; #endif + free (p); } --------------070106080204010003090404--