This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] malloc: Add mallopt test.


On Thu, May 01, 2014 at 08:54:56AM +0100, Will Newton wrote:
> On 8 April 2014 11:34, Will Newton <will.newton@linaro.org> wrote:
> > ChangeLog:
> >
> > 2014-04-08  Will Newton  <will.newton@linaro.org>
> >
> >     * malloc/Makefile (tests): Add tst-mallopt.
> >     * malloc/tst-mallopt.c: New file.
> > ---
> >  malloc/Makefile      |  2 +-
> >  malloc/tst-mallopt.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++
> >  2 files changed, 76 insertions(+), 1 deletion(-)
> >  create mode 100644 malloc/tst-mallopt.c
> 
> Ping?
> 
> This API is pretty tricky to test well as it doesn't reliably signal
> errors, but this test does give the function a simple workout.

... which is a bug.  The function should succeed only when it
encounters valid parameters.

This test looks good to me for the current implementation though, with
the understanding that it will be enhanced when mallopt is fixed to
correctly signal errors.

Siddhesh

> 
> > diff --git a/malloc/Makefile b/malloc/Makefile
> > index 2871726..d962331 100644
> > --- a/malloc/Makefile
> > +++ b/malloc/Makefile
> > @@ -27,7 +27,7 @@ headers := $(dist-headers) obstack.h mcheck.h
> >  tests := mallocbug tst-malloc tst-valloc tst-calloc tst-obstack \
> >          tst-mallocstate tst-mcheck tst-mallocfork tst-trim1 \
> >          tst-malloc-usable tst-realloc tst-posix_memalign \
> > -        tst-pvalloc tst-memalign
> > +        tst-pvalloc tst-memalign tst-mallopt
> >  test-srcs = tst-mtrace
> >
> >  routines = malloc morecore mcheck mtrace obstack
> > diff --git a/malloc/tst-mallopt.c b/malloc/tst-mallopt.c
> > new file mode 100644
> > index 0000000..9569b7d
> > --- /dev/null
> > +++ b/malloc/tst-mallopt.c
> > @@ -0,0 +1,75 @@
> > +/* Copyright (C) 2014 Free Software Foundation, Inc.
> > +   This file is part of the GNU C Library.
> > +
> > +   The GNU C Library is free software; you can redistribute it and/or
> > +   modify it under the terms of the GNU Lesser General Public
> > +   License as published by the Free Software Foundation; either
> > +   version 2.1 of the License, or (at your option) any later version.
> > +
> > +   The GNU C Library is distributed in the hope that it will be useful,
> > +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> > +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> > +   Lesser General Public License for more details.
> > +
> > +   You should have received a copy of the GNU Lesser General Public
> > +   License along with the GNU C Library; if not, see
> > +   <http://www.gnu.org/licenses/>.  */
> > +
> > +#include <malloc.h>
> > +#include <stdio.h>
> > +#include <string.h>
> > +
> > +static int errors = 0;
> > +
> > +static void
> > +merror (const char *msg)
> > +{
> > +  ++errors;
> > +  printf ("Error: %s\n", msg);
> > +}
> > +
> > +static int
> > +do_test (void)
> > +{
> > +  int ret;
> > +
> > +  ret = mallopt(M_CHECK_ACTION, 1);
> > +
> > +  if (ret != 1)
> > +    merror ("mallopt (M_CHECK_ACTION, 1) failed.");
> > +
> > +  ret = mallopt(M_MMAP_MAX, 64*1024);
> > +
> > +  if (ret != 1)
> > +    merror ("mallopt (M_MMAP_MAX, 64*1024) failed.");
> > +
> > +  ret = mallopt(M_MMAP_THRESHOLD, 64*1024);
> > +
> > +  if (ret != 1)
> > +    merror ("mallopt (M_MMAP_THRESHOLD, 64*1024) failed.");
> > +
> > +  ret = mallopt(M_MXFAST, 0);
> > +
> > +  if (ret != 1)
> > +    merror ("mallopt (M_MXFAST, 0) failed.");
> > +
> > +  ret = mallopt(M_PERTURB, 0xa5);
> > +
> > +  if (ret != 1)
> > +    merror ("mallopt (M_PERTURB, 0xa5) failed.");
> > +
> > +  ret = mallopt(M_TOP_PAD, 64*1024);
> > +
> > +  if (ret != 1)
> > +    merror ("mallopt (M_TOP_PAD, 64*1024) failed.");
> > +
> > +  ret = mallopt(M_TRIM_THRESHOLD, -1);
> > +
> > +  if (ret != 1)
> > +    merror ("mallopt (M_TRIM_THRESHOLD, -1) failed.");
> > +
> > +  return errors != 0;
> > +}
> > +
> > +#define TEST_FUNCTION do_test ()
> > +#include "../test-skeleton.c"
> > --
> > 1.8.1.4
> >
> 
> 
> 
> -- 
> Will Newton
> Toolchain Working Group, Linaro

Attachment: pgpmfkDJ6sswJ.pgp
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]