[v2] RISC-V: Avoid calloc() poisoning on musl

Message ID 20230311202705.3135051-1-sam@gentoo.org
State Dropped
Headers
Series [v2] RISC-V: Avoid calloc() poisoning on musl |

Commit Message

Sam James March 11, 2023, 8:27 p.m. UTC
  This fixes errors like:
```
In file included from /usr/include/pthread.h:30,
                 from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/riscv64-gentoo-linux-musl/bits/gthr-default.h:35,
                 from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/riscv64-gentoo-linux-musl/bits/gthr.h:148,
                 from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/ext/atomicity.h:35,
                 from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/bits/ios_base.h:39,
                 from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/ios:42,
                 from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/istream:38,
                 from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/sstream:38,
                 from /var/tmp/portage/sys-devel/gcc-13.0.1_pre20230305/work/gcc-13-20230305/gcc/config/riscv/genrvv-type-indexer.cc:22:
/usr/include/sched.h:84:7: error: attempt to use poisoned "calloc"
   84 | void *calloc(size_t, size_t);
      |       ^
/usr/include/sched.h:124:36: error: attempt to use poisoned "calloc"
  124 | #define CPU_ALLOC(n) ((cpu_set_t *)calloc(1,CPU_ALLOC_SIZE(n)))
      |                                    ^
make[3]: *** [Makefile:2855: build/genrvv-type-indexer.o] Error 1
```

See also 3b21c21f3f5726823e19728fdd1571a14aae0fb3 and 49d508065bdd36fb1a9b6aad9666b1edb5e06474,
which was fixed in PR106102.

gcc/ChangeLog:
	* config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
	adding <pthread.h> include.

v2: fix changelog.

Signed-off-by: Sam James <sam@gentoo.org>
---
 gcc/ChangeLog                           | 5 +++++
 gcc/config/riscv/genrvv-type-indexer.cc | 1 +
 2 files changed, 6 insertions(+)
  

Comments

Andrew Pinski March 11, 2023, 8:32 p.m. UTC | #1
On Sat, Mar 11, 2023 at 12:27 PM Sam James via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> This fixes errors like:
> ```
> In file included from /usr/include/pthread.h:30,
>                  from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/riscv64-gentoo-linux-musl/bits/gthr-default.h:35,
>                  from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/riscv64-gentoo-linux-musl/bits/gthr.h:148,
>                  from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/ext/atomicity.h:35,
>                  from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/bits/ios_base.h:39,
>                  from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/ios:42,
>                  from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/istream:38,
>                  from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/sstream:38,
>                  from /var/tmp/portage/sys-devel/gcc-13.0.1_pre20230305/work/gcc-13-20230305/gcc/config/riscv/genrvv-type-indexer.cc:22:
> /usr/include/sched.h:84:7: error: attempt to use poisoned "calloc"
>    84 | void *calloc(size_t, size_t);
>       |       ^
> /usr/include/sched.h:124:36: error: attempt to use poisoned "calloc"
>   124 | #define CPU_ALLOC(n) ((cpu_set_t *)calloc(1,CPU_ALLOC_SIZE(n)))
>       |                                    ^
> make[3]: *** [Makefile:2855: build/genrvv-type-indexer.o] Error 1
> ```
>
> See also 3b21c21f3f5726823e19728fdd1571a14aae0fb3 and 49d508065bdd36fb1a9b6aad9666b1edb5e06474,
> which was fixed in PR106102.
>
> gcc/ChangeLog:
>         * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
>         adding <pthread.h> include.


Is 100% not the correct fix and will break if you are doing a cross
compiler building on mingw to riscv.

You should add/handle INCLUDE_SSTREAM to system.h instead and then
define INCLUDE_SSTREAM in genrvv-type-indexer.cc.
In fact, INCLUDE_PTHREAD_H support should be removed since it is no
longer being used for the jit front-end (that was moved over to
std::mutex instead).

Thanks,
Andrew

>
> v2: fix changelog.
>
> Signed-off-by: Sam James <sam@gentoo.org>
> ---
>  gcc/ChangeLog                           | 5 +++++
>  gcc/config/riscv/genrvv-type-indexer.cc | 1 +
>  2 files changed, 6 insertions(+)
>
> diff --git a/gcc/ChangeLog b/gcc/ChangeLog
> index c9e557ce833..f8a1c37f76e 100644
> --- a/gcc/ChangeLog
> +++ b/gcc/ChangeLog
> @@ -1,3 +1,8 @@
> +2023-03-11  Sam James  <sam@gentoo.org>
> +
> +       * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
> +       adding <pthread.h> include.
> +
>  2023-03-10  Jakub Jelinek  <jakub@redhat.com>
>
>         PR target/107703
> diff --git a/gcc/config/riscv/genrvv-type-indexer.cc b/gcc/config/riscv/genrvv-type-indexer.cc
> index 0ef1d766002..b286ec84132 100644
> --- a/gcc/config/riscv/genrvv-type-indexer.cc
> +++ b/gcc/config/riscv/genrvv-type-indexer.cc
> @@ -14,6 +14,7 @@ along with GCC; see the file COPYING3.  If not see
>  <http://www.gnu.org/licenses/>.  */
>
>  #include "bconfig.h"
> +#define INCLUDE_PTHREAD_H
>  #include "system.h"
>  #include "errors.h"
>
> --
> 2.39.2
>
  
Andrew Pinski March 11, 2023, 8:33 p.m. UTC | #2
On Sat, Mar 11, 2023 at 12:32 PM Andrew Pinski <pinskia@gmail.com> wrote:
>
> On Sat, Mar 11, 2023 at 12:27 PM Sam James via Gcc-patches
> <gcc-patches@gcc.gnu.org> wrote:
> >
> > This fixes errors like:
> > ```
> > In file included from /usr/include/pthread.h:30,
> >                  from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/riscv64-gentoo-linux-musl/bits/gthr-default.h:35,
> >                  from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/riscv64-gentoo-linux-musl/bits/gthr.h:148,
> >                  from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/ext/atomicity.h:35,
> >                  from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/bits/ios_base.h:39,
> >                  from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/ios:42,
> >                  from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/istream:38,
> >                  from /usr/lib/gcc/riscv64-gentoo-linux-musl/12/include/g++-v12/sstream:38,
> >                  from /var/tmp/portage/sys-devel/gcc-13.0.1_pre20230305/work/gcc-13-20230305/gcc/config/riscv/genrvv-type-indexer.cc:22:
> > /usr/include/sched.h:84:7: error: attempt to use poisoned "calloc"
> >    84 | void *calloc(size_t, size_t);
> >       |       ^
> > /usr/include/sched.h:124:36: error: attempt to use poisoned "calloc"
> >   124 | #define CPU_ALLOC(n) ((cpu_set_t *)calloc(1,CPU_ALLOC_SIZE(n)))
> >       |                                    ^
> > make[3]: *** [Makefile:2855: build/genrvv-type-indexer.o] Error 1
> > ```
> >
> > See also 3b21c21f3f5726823e19728fdd1571a14aae0fb3 and 49d508065bdd36fb1a9b6aad9666b1edb5e06474,
> > which was fixed in PR106102.
> >
> > gcc/ChangeLog:
> >         * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
> >         adding <pthread.h> include.
>
>
> Is 100% not the correct fix and will break if you are doing a cross
> compiler building on mingw to riscv.
>
> You should add/handle INCLUDE_SSTREAM to system.h instead and then
> define INCLUDE_SSTREAM in genrvv-type-indexer.cc.
> In fact, INCLUDE_PTHREAD_H support should be removed since it is no
> longer being used for the jit front-end (that was moved over to
> std::mutex instead).

One other note, you don't need to have the changelog change in the
commit, only in the commit message as the changelog is automatically
updated daily from the commits

Thanks,
Andrew

>
> Thanks,
> Andrew
>
> >
> > v2: fix changelog.
> >
> > Signed-off-by: Sam James <sam@gentoo.org>
> > ---
> >  gcc/ChangeLog                           | 5 +++++
> >  gcc/config/riscv/genrvv-type-indexer.cc | 1 +
> >  2 files changed, 6 insertions(+)
> >
> > diff --git a/gcc/ChangeLog b/gcc/ChangeLog
> > index c9e557ce833..f8a1c37f76e 100644
> > --- a/gcc/ChangeLog
> > +++ b/gcc/ChangeLog
> > @@ -1,3 +1,8 @@
> > +2023-03-11  Sam James  <sam@gentoo.org>
> > +
> > +       * config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
> > +       adding <pthread.h> include.
> > +
> >  2023-03-10  Jakub Jelinek  <jakub@redhat.com>
> >
> >         PR target/107703
> > diff --git a/gcc/config/riscv/genrvv-type-indexer.cc b/gcc/config/riscv/genrvv-type-indexer.cc
> > index 0ef1d766002..b286ec84132 100644
> > --- a/gcc/config/riscv/genrvv-type-indexer.cc
> > +++ b/gcc/config/riscv/genrvv-type-indexer.cc
> > @@ -14,6 +14,7 @@ along with GCC; see the file COPYING3.  If not see
> >  <http://www.gnu.org/licenses/>.  */
> >
> >  #include "bconfig.h"
> > +#define INCLUDE_PTHREAD_H
> >  #include "system.h"
> >  #include "errors.h"
> >
> > --
> > 2.39.2
> >
  

Patch

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c9e557ce833..f8a1c37f76e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@ 
+2023-03-11  Sam James  <sam@gentoo.org>
+
+	* config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
+	adding <pthread.h> include.
+
 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
 
 	PR target/107703
diff --git a/gcc/config/riscv/genrvv-type-indexer.cc b/gcc/config/riscv/genrvv-type-indexer.cc
index 0ef1d766002..b286ec84132 100644
--- a/gcc/config/riscv/genrvv-type-indexer.cc
+++ b/gcc/config/riscv/genrvv-type-indexer.cc
@@ -14,6 +14,7 @@  along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
 #include "bconfig.h"
+#define INCLUDE_PTHREAD_H
 #include "system.h"
 #include "errors.h"