[v3] Improve test coverage of strlen function
Checks
Commit Message
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(-)
Comments
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.
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.
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.
>
@@ -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;
}