On Tue, 17 Mar 2026 at 18:24, Joseph Myers <[email protected]> wrote:
>
> On Tue, 17 Mar 2026, Gerald Pfeifer wrote:
>
> > It looks like this broke bootstrap on FreeBSD 13/amd64:
> >
> > libtool: link: ( cd ".libs" && rm -f "libc++23convenience.la" && ln -s 
> > "../libc++23convenience.la" "libc++23convenience.la" )
> > std.cc:3799:14: error: exporting 'int feclearexcept(int)' that does not 
> > have external linkage
> >  3799 |   using std::feclearexcept;
> >       |              ^~~~~~~~~~~~~
> > In file included from 
> > /scratch/tmp/gerald/OBJ-0317-0208/x86_64-unknown-freebsd13.5/libstdc++-v3/include/fenv.h:41,
> >                  from 
> > /scratch/tmp/gerald/OBJ-0317-0208/x86_64-unknown-freebsd13.5/libstdc++-v3/include/cfenv:43,
> >                  from 
> > /scratch/tmp/gerald/OBJ-0317-0208/x86_64-unknown-freebsd13.5/libstdc++-v3/include/x86_64-unknown-freebsd13.5/bits/stdc++.h:123,
> >                  from std.cc:26:
> > /usr/include/fenv.h:265:1: note: 'int feclearexcept(int)' declared here 
> > with internal linkage
>
> My build-many-glibcs.py bot is also showing a similar error for
> alpha-linux-gnu and sh4-linux-gnu.  The error in those cases is of the
> form:
>
> std.cc:4126:14: error: exporting 'typedef __gnuc_va_list va_list' that does 
> not have external linkage
>  4126 |   using std::va_list;
>       |              ^~~~~~~
> <built-in>: note: 'typedef struct __va_list_tag __va_list_tag' declared here 
> with internal linkage
>
> (and it appeared some time between commits
> a1f1a60fc6490e677d63b637cc268b513749cc5c and
> 9c2e4b6ac0b165684f8e924b9a1970b8468d120f, which is a range including this
> one).

Yes, it will be the same commit. C++ modules do not allow functions
and types with internal linkage to be exported, so TUs which would
cause undiagnosed ODR violations in normal code because ill-formed in
modules.

Anyway, I've reverted the patch now. We will have to figure out how to
deal with funky targets. If va_list does not have external linkage on
those targets, then it's already undefined to use it in C++, so really
that needs to be fixed in those targets. Or we hack workarounds into
the C++ front end for these system headers.

>
> https://sourceware.org/pipermail/libc-testresults/2026q1/014489.html
>
> --
> Joseph S. Myers
> [email protected]
>

Reply via email to