Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Luis Machado <lgustavo@codesourcery.com>
To: Doug Evans <dje@google.com>
Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: Re: [PATCH, testsuite] Prevent warnings due to dummy malloc calls.
Date: Tue, 26 Nov 2013 21:50:00 -0000	[thread overview]
Message-ID: <52951318.8010809@codesourcery.com> (raw)
In-Reply-To: <CADPb22Q6StsbEnoGbdWx3wGAZp43rKMvV5PwJuXS3MUL11p72g@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 1838 bytes --]

On 11/26/2013 07:12 PM, Doug Evans wrote:
> On Tue, Nov 26, 2013 at 11:19 AM, Luis Machado
> <lgustavo@codesourcery.com> 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

[-- Attachment #2: malloc_v2.diff --]
[-- Type: text/x-patch, Size: 2664 bytes --]

2013-11-26  Luis Machado  <lgustavo@codesourcery.com>

	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);
 }

  reply	other threads:[~2013-11-26 21:32 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-26 21:32 Luis Machado
2013-11-26 21:50 ` Doug Evans
2013-11-26 21:50   ` Luis Machado [this message]
2013-11-27 14:44     ` Luis Machado

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52951318.8010809@codesourcery.com \
    --to=lgustavo@codesourcery.com \
    --cc=dje@google.com \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox