Fix stdlib/tst-setcontext.c for GCC 12 -Warray-compare

Message ID alpine.DEB.2.22.394.2110041842230.3528554@digraph.polyomino.org.uk
State New
Headers show
Series
  • Fix stdlib/tst-setcontext.c for GCC 12 -Warray-compare
Related show

Commit Message

Joseph Myers Oct. 4, 2021, 6:42 p.m.
Building stdlib/tst-setcontext.c fails with GCC mainline:

tst-setcontext.c: In function 'f2':
tst-setcontext.c:61:16: error: comparison between two arrays [-Werror=array-compare]
   61 |   if (on_stack < st2 || on_stack >= st2 + sizeof (st2))
      |                ^
tst-setcontext.c:61:16: note: use '&on_stack[0] < &st2[0]' to compare the addresses

The comparison in this case is deliberate, so adjust it as suggested
in that note.

Tested with build-many-glibcs.py (GCC mainline) for aarch64-linux-gnu.


-- 
Joseph S. Myers
joseph@codesourcery.com

Comments

On 04/10/2021 15:42, Joseph Myers wrote:
> Building stdlib/tst-setcontext.c fails with GCC mainline:

> 

> tst-setcontext.c: In function 'f2':

> tst-setcontext.c:61:16: error: comparison between two arrays [-Werror=array-compare]

>    61 |   if (on_stack < st2 || on_stack >= st2 + sizeof (st2))

>       |                ^

> tst-setcontext.c:61:16: note: use '&on_stack[0] < &st2[0]' to compare the addresses

> 

> The comparison in this case is deliberate, so adjust it as suggested

> in that note.

> 

> Tested with build-many-glibcs.py (GCC mainline) for aarch64-linux-gnu.

> 



LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>


> diff --git a/stdlib/tst-setcontext.c b/stdlib/tst-setcontext.c

> index 1b511708c1..1c2925bb76 100644

> --- a/stdlib/tst-setcontext.c

> +++ b/stdlib/tst-setcontext.c

> @@ -58,7 +58,7 @@ f2 (void)

>    puts ("start f2");

>  

>    printf ("&on_stack=%p\n", on_stack);

> -  if (on_stack < st2 || on_stack >= st2 + sizeof (st2))

> +  if (&on_stack[0] < &st2[0] || &on_stack[0] >= st2 + sizeof (st2))

>      {

>        printf ("%s: memory stack is not where it belongs!", __FUNCTION__);

>        exit (1);

>

Patch

diff --git a/stdlib/tst-setcontext.c b/stdlib/tst-setcontext.c
index 1b511708c1..1c2925bb76 100644
--- a/stdlib/tst-setcontext.c
+++ b/stdlib/tst-setcontext.c
@@ -58,7 +58,7 @@  f2 (void)
   puts ("start f2");
 
   printf ("&on_stack=%p\n", on_stack);
-  if (on_stack < st2 || on_stack >= st2 + sizeof (st2))
+  if (&on_stack[0] < &st2[0] || &on_stack[0] >= st2 + sizeof (st2))
     {
       printf ("%s: memory stack is not where it belongs!", __FUNCTION__);
       exit (1);