On Wed, Oct 23, 2024 at 05:52:13PM +0000, Joseph Myers wrote:
> One test failing with a -std=gnu23 default that I wanted to
> investigate further is gcc.dg/pr114115.c.  Building with -std=gnu23
> produces a warning:
> 
> pr114115.c:18:8: warning: 'ifunc' resolver for 'foo_ifunc2' should return 
> 'void * (*)(void)' [-Wattribute-alias=]
> 
> It turns out that this warning (from cgraphunit.cc) is disabled for
> unprototyped functions.  It's not immediately obvious that being
> unprototyped has much to do with such incompatibilities of return type
> (void versus void *), but it still seems reasonable to address this
> warning by adding -std=gnu17 to the options for this testcase, so
> minimizing the perturbation to what it tests.

My preference would be just fix the bug in the testcase, i.e.
-void *foo_ifunc2() __attribute__((ifunc("foo_resolver")));
+void foo_ifunc2() __attribute__((ifunc("foo_resolver")));

I've verified it still FAILs with r14-9774 and PASSes with r14-9775
like that and given that the resolver returns bar which returns void
and similarly the resolver returns function pointer returning void,
I think we should go for that.
The void * vs. void doesn't matter for what the test is testing.
The test is derived from the CVE-2024-3094 exploit and I really don't
think we need to test acceptance for the bugs in it.

> --- a/gcc/testsuite/gcc.dg/pr114115.c
> +++ b/gcc/testsuite/gcc.dg/pr114115.c
> @@ -1,5 +1,5 @@
>  /* { dg-do compile } */
> -/* { dg-options "-O0 -fprofile-generate -fdump-tree-optimized" } */
> +/* { dg-options "-std=gnu17 -O0 -fprofile-generate -fdump-tree-optimized" } 
> */
>  /* { dg-require-profiling "-fprofile-generate" } */
>  /* { dg-require-ifunc "" } */
>  

        Jakub

Reply via email to