Patchwork gdb/testsuite: Ensure test links in malloc and free

login
register
mail settings
Submitter Andrew Burgess
Date July 4, 2018, 4:36 p.m.
Message ID <20180704163647.4494-1-andrew.burgess@embecosm.com>
Download mbox | patch
Permalink /patch/28236/
State New
Headers show

Comments

Andrew Burgess - July 4, 2018, 4:36 p.m.
The test associated with the source file
gdb.base/share-env-with-gdbserver.c relies on calling malloc and free
within the inferior from GDB.  However, as the test source itself
makes no use of these functions, there's no requirement that they be
linked into the test executable.

This commit adds a dummy call to malloc and free to ensure they are
linked into the test executable.

gdb/testsuite/ChangeLog:

	* gdb.base/share-env-with-gdbserver.c (main): Add call to
	malloc/free.
---
 gdb/testsuite/ChangeLog                           | 5 +++++
 gdb/testsuite/gdb.base/share-env-with-gdbserver.c | 3 +++
 2 files changed, 8 insertions(+)
Simon Marchi - July 6, 2018, 2:12 a.m.
On 2018-07-04 12:36 PM, Andrew Burgess wrote:
> The test associated with the source file
> gdb.base/share-env-with-gdbserver.c relies on calling malloc and free
> within the inferior from GDB.  However, as the test source itself
> makes no use of these functions, there's no requirement that they be
> linked into the test executable.
> 
> This commit adds a dummy call to malloc and free to ensure they are
> linked into the test executable.
> 
> gdb/testsuite/ChangeLog:
> 
> 	* gdb.base/share-env-with-gdbserver.c (main): Add call to
> 	malloc/free.
> ---
>  gdb/testsuite/ChangeLog                           | 5 +++++
>  gdb/testsuite/gdb.base/share-env-with-gdbserver.c | 3 +++
>  2 files changed, 8 insertions(+)
> 
> diff --git a/gdb/testsuite/gdb.base/share-env-with-gdbserver.c b/gdb/testsuite/gdb.base/share-env-with-gdbserver.c
> index 2b821cd854..213dde3d6e 100644
> --- a/gdb/testsuite/gdb.base/share-env-with-gdbserver.c
> +++ b/gdb/testsuite/gdb.base/share-env-with-gdbserver.c
> @@ -29,6 +29,8 @@ my_getenv (const char *name)
>  int
>  main (int argc, char *argv[])
>  {
> +  /* Call malloc to ensure it is linked in.  */
> +  char *tmp = malloc (1);
>    const char *myvar = getenv ("GDB_TEST_VAR");
>  
>    if (myvar != NULL)
> @@ -36,5 +38,6 @@ main (int argc, char *argv[])
>    else
>      printf ("It failed.");
>  
> +  free (tmp);
>    return 0;	/* break-here */
>  }
> 

Hi Andrew,

That LGTM, though I'd be curious to know in which configuration you found
this was required.

Simon
Andrew Burgess - July 6, 2018, 1:20 p.m.
* Simon Marchi <simark@simark.ca> [2018-07-05 22:12:14 -0400]:

> On 2018-07-04 12:36 PM, Andrew Burgess wrote:
> > The test associated with the source file
> > gdb.base/share-env-with-gdbserver.c relies on calling malloc and free
> > within the inferior from GDB.  However, as the test source itself
> > makes no use of these functions, there's no requirement that they be
> > linked into the test executable.
> > 
> > This commit adds a dummy call to malloc and free to ensure they are
> > linked into the test executable.
> > 
> > gdb/testsuite/ChangeLog:
> > 
> > 	* gdb.base/share-env-with-gdbserver.c (main): Add call to
> > 	malloc/free.
> > ---
> >  gdb/testsuite/ChangeLog                           | 5 +++++
> >  gdb/testsuite/gdb.base/share-env-with-gdbserver.c | 3 +++
> >  2 files changed, 8 insertions(+)
> > 
> > diff --git a/gdb/testsuite/gdb.base/share-env-with-gdbserver.c b/gdb/testsuite/gdb.base/share-env-with-gdbserver.c
> > index 2b821cd854..213dde3d6e 100644
> > --- a/gdb/testsuite/gdb.base/share-env-with-gdbserver.c
> > +++ b/gdb/testsuite/gdb.base/share-env-with-gdbserver.c
> > @@ -29,6 +29,8 @@ my_getenv (const char *name)
> >  int
> >  main (int argc, char *argv[])
> >  {
> > +  /* Call malloc to ensure it is linked in.  */
> > +  char *tmp = malloc (1);
> >    const char *myvar = getenv ("GDB_TEST_VAR");
> >  
> >    if (myvar != NULL)
> > @@ -36,5 +38,6 @@ main (int argc, char *argv[])
> >    else
> >      printf ("It failed.");
> >  
> > +  free (tmp);
> >    return 0;	/* break-here */
> >  }
> > 
> 
> Hi Andrew,
> 
> That LGTM, though I'd be curious to know in which configuration you found
> this was required.

I was testing RiscV using newlib running on the built in GDB
simulator.

Without this fix the test is 18 PASS / 13 FAIL, with this fix 21 PASS
/ 9 FAIL / 1 UNTESTED.  Still some work to do, but I'm trying to clear
out some of the small fixes I have lying around.

Thanks,
Andrew

Patch

diff --git a/gdb/testsuite/gdb.base/share-env-with-gdbserver.c b/gdb/testsuite/gdb.base/share-env-with-gdbserver.c
index 2b821cd854..213dde3d6e 100644
--- a/gdb/testsuite/gdb.base/share-env-with-gdbserver.c
+++ b/gdb/testsuite/gdb.base/share-env-with-gdbserver.c
@@ -29,6 +29,8 @@  my_getenv (const char *name)
 int
 main (int argc, char *argv[])
 {
+  /* Call malloc to ensure it is linked in.  */
+  char *tmp = malloc (1);
   const char *myvar = getenv ("GDB_TEST_VAR");
 
   if (myvar != NULL)
@@ -36,5 +38,6 @@  main (int argc, char *argv[])
   else
     printf ("It failed.");
 
+  free (tmp);
   return 0;	/* break-here */
 }