[v3] Improve test coverage of strlen function

Message ID 20210531180812.501625-1-skpgkp2@gmail.com
State New
Headers show
Series
  • [v3] Improve test coverage of strlen function
Related show

Commit Message

Szabolcs Nagy via Libc-alpha May 31, 2021, 6:08 p.m.
This patch covers the following conditions:

- Strings start with different alignments and end at the page boundary
  with less than 64 byte length.
- Strings starts with different alignments and cross page boundary with
  fixed length.
---
 string/test-strlen.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

-- 
2.31.1

Comments

Szabolcs Nagy via Libc-alpha May 31, 2021, 6:21 p.m. | #1
On Mon, May 31, 2021 at 11:08 AM Sunil K Pandey <skpgkp2@gmail.com> wrote:
>

> This patch covers the following conditions:

>

> - Strings start with different alignments and end at the page boundary

>   with less than 64 byte length.

> - Strings starts with different alignments and cross page boundary with

>   fixed length.

> ---

>  string/test-strlen.c | 15 ++++++++++++++-

>  1 file changed, 14 insertions(+), 1 deletion(-)

>

> diff --git a/string/test-strlen.c b/string/test-strlen.c

> index 6e67d1f1f1..c9a7afb339 100644

> --- a/string/test-strlen.c

> +++ b/string/test-strlen.c

> @@ -79,7 +79,7 @@ do_test (size_t align, size_t len)

>  {

>    size_t i;

>

> -  align &= 63;

> +  align &= (getpagesize () / sizeof (CHAR)) - 1;

>    if (align + sizeof (CHAR) * len >= page_size)

>      return;

>

> @@ -160,6 +160,19 @@ test_main (void)

>        do_test (sizeof (CHAR) * i, (size_t)((1 << i) / 1.5));

>      }

>

> +  /* Test strings near page boundary */

> +

> +  size_t maxlength = 64 / sizeof (CHAR) - 1;

> +  size_t pagesize = getpagesize () / sizeof (CHAR);

> +

> +  for (i = maxlength ; i > 1; --i)

> +    {

> +      /* String stays on the same page.  */

> +      do_test (pagesize - i, i - 1);

> +      /* String crosses page boundary.  */

> +      do_test (pagesize - i, maxlength);

> +    }

> +

>    do_random_tests ();

>    return ret;

>  }

> --

> 2.31.1

>


LGTM.

Reviewed-by: H.J. Lu <hjl.tools@gmail.com>


Thanks.

-- 
H.J.
Szabolcs Nagy via Libc-alpha June 2, 2021, 12:40 p.m. | #2
On Mon, May 31, 2021 at 11:21:50AM -0700, H.J. Lu wrote:
> On Mon, May 31, 2021 at 11:08 AM Sunil K Pandey <skpgkp2@gmail.com> wrote:

> >

> > This patch covers the following conditions:

> >

> > - Strings start with different alignments and end at the page boundary

> >   with less than 64 byte length.

> > - Strings starts with different alignments and cross page boundary with

> >   fixed length.

> > ---

> >  string/test-strlen.c | 15 ++++++++++++++-

> >  1 file changed, 14 insertions(+), 1 deletion(-)

> >

> > diff --git a/string/test-strlen.c b/string/test-strlen.c

> > index 6e67d1f1f1..c9a7afb339 100644

> > --- a/string/test-strlen.c

> > +++ b/string/test-strlen.c

> > @@ -79,7 +79,7 @@ do_test (size_t align, size_t len)

> >  {

> >    size_t i;

> >

> > -  align &= 63;

> > +  align &= (getpagesize () / sizeof (CHAR)) - 1;

> >    if (align + sizeof (CHAR) * len >= page_size)

> >      return;

> >

> > @@ -160,6 +160,19 @@ test_main (void)

> >        do_test (sizeof (CHAR) * i, (size_t)((1 << i) / 1.5));

> >      }

> >

> > +  /* Test strings near page boundary */

> > +

> > +  size_t maxlength = 64 / sizeof (CHAR) - 1;

> > +  size_t pagesize = getpagesize () / sizeof (CHAR);

> > +

> > +  for (i = maxlength ; i > 1; --i)

> > +    {

> > +      /* String stays on the same page.  */

> > +      do_test (pagesize - i, i - 1);

> > +      /* String crosses page boundary.  */

> > +      do_test (pagesize - i, maxlength);

> > +    }

> > +

> >    do_random_tests ();

> >    return ret;

> >  }

> > --

> > 2.31.1

> >

> 

> LGTM.

> 

> Reviewed-by: H.J. Lu <hjl.tools@gmail.com>

> 


Hi Sunil,

I am checking it in for you.  Please get an account on sourceware.org:

https://sourceware.org/

and use me as sponsor.

Thanks.

H.J.
Szabolcs Nagy via Libc-alpha June 2, 2021, 5:51 p.m. | #3
Hi,

I am an Intel employee, working on glibc for x86. I have an
account(skpgkp2) on sourceware.org.

Can someone please tell me how to get write access to glibc git repo.

Thanks,
Sunil Pandey


On Wed, Jun 2, 2021 at 5:40 AM H.J. Lu <hjl.tools@gmail.com> wrote:

> On Mon, May 31, 2021 at 11:21:50AM -0700, H.J. Lu wrote:

> > On Mon, May 31, 2021 at 11:08 AM Sunil K Pandey <skpgkp2@gmail.com>

> wrote:

> > >

> > > This patch covers the following conditions:

> > >

> > > - Strings start with different alignments and end at the page boundary

> > >   with less than 64 byte length.

> > > - Strings starts with different alignments and cross page boundary with

> > >   fixed length.

> > > ---

> > >  string/test-strlen.c | 15 ++++++++++++++-

> > >  1 file changed, 14 insertions(+), 1 deletion(-)

> > >

> > > diff --git a/string/test-strlen.c b/string/test-strlen.c

> > > index 6e67d1f1f1..c9a7afb339 100644

> > > --- a/string/test-strlen.c

> > > +++ b/string/test-strlen.c

> > > @@ -79,7 +79,7 @@ do_test (size_t align, size_t len)

> > >  {

> > >    size_t i;

> > >

> > > -  align &= 63;

> > > +  align &= (getpagesize () / sizeof (CHAR)) - 1;

> > >    if (align + sizeof (CHAR) * len >= page_size)

> > >      return;

> > >

> > > @@ -160,6 +160,19 @@ test_main (void)

> > >        do_test (sizeof (CHAR) * i, (size_t)((1 << i) / 1.5));

> > >      }

> > >

> > > +  /* Test strings near page boundary */

> > > +

> > > +  size_t maxlength = 64 / sizeof (CHAR) - 1;

> > > +  size_t pagesize = getpagesize () / sizeof (CHAR);

> > > +

> > > +  for (i = maxlength ; i > 1; --i)

> > > +    {

> > > +      /* String stays on the same page.  */

> > > +      do_test (pagesize - i, i - 1);

> > > +      /* String crosses page boundary.  */

> > > +      do_test (pagesize - i, maxlength);

> > > +    }

> > > +

> > >    do_random_tests ();

> > >    return ret;

> > >  }

> > > --

> > > 2.31.1

> > >

> >

> > LGTM.

> >

> > Reviewed-by: H.J. Lu <hjl.tools@gmail.com>

> >

>

> Hi Sunil,

>

> I am checking it in for you.  Please get an account on sourceware.org:

>

> https://sourceware.org/

>

> and use me as sponsor.

>

> Thanks.

>

> H.J.

>

Patch

diff --git a/string/test-strlen.c b/string/test-strlen.c
index 6e67d1f1f1..c9a7afb339 100644
--- a/string/test-strlen.c
+++ b/string/test-strlen.c
@@ -79,7 +79,7 @@  do_test (size_t align, size_t len)
 {
   size_t i;
 
-  align &= 63;
+  align &= (getpagesize () / sizeof (CHAR)) - 1;
   if (align + sizeof (CHAR) * len >= page_size)
     return;
 
@@ -160,6 +160,19 @@  test_main (void)
       do_test (sizeof (CHAR) * i, (size_t)((1 << i) / 1.5));
     }
 
+  /* Test strings near page boundary */
+
+  size_t maxlength = 64 / sizeof (CHAR) - 1;
+  size_t pagesize = getpagesize () / sizeof (CHAR);
+
+  for (i = maxlength ; i > 1; --i)
+    {
+      /* String stays on the same page.  */
+      do_test (pagesize - i, i - 1);
+      /* String crosses page boundary.  */
+      do_test (pagesize - i, maxlength);
+    }
+
   do_random_tests ();
   return ret;
 }