https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109814

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2023-05-11
      Known to work|                            |12.3.0
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW
            Summary|freestanding using cmath    |[13/14 Regression]
                   |does not compile anymore    |freestanding using cmath
                   |                            |does not compile anymore
      Known to fail|                            |13.1.0, 14.0

--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
The new behaviour is documented at
https://gcc.gnu.org/onlinedocs/gcc-13.1.0/libstdc++/manual/manual/using.html
and
https://gcc.gnu.org/onlinedocs/gcc-13.1.0/libstdc++/manual/manual/using_dynamic_or_shared.html
and I've just added something to the release notes about it:
https://gcc.gnu.org/gcc-13/changes.html#libstdcxx

But that doesn't help anybody affected by this.

Is it just <cmath> that you're using? We could pretty easily remove the
<bits/requires_hosted.h> include from that file, and then you could include
<cmath> with -ffreestanding. But if you have a truly freestanding environment
(i.e. no libm present) then nothing in <cmath> is actually going to work.

If people are using more than just <cmath> with -ffreestanding then things get
harder. Where do we draw the line of what is part of the freestanding subset of
libstdc++? Do we just let people include everything, and it's their fault if
they create dependencies on malloc, __cxa_throw, RTTI etc.? That doesn't seem
nice.

Reply via email to