https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109814
Bug ID: 109814 Summary: freestanding using cmath does not compile anymore Product: gcc Version: 13.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: lestofante88 at gmail dot com Target Milestone: --- My code stop compiling after updating from arm-none-eabi-gcc (Arch Repository) 12.2.0 to arm-none-eabi-gcc (Arch Repository) 13.1.0 (cant easily test any version in-between) My understanding is that I am incorrectly using non-freestand library in freestand mode (cmath in this case). The problem with this is i am quite sure in embedded a lot of project does. This breakage, even if technically correct, may create a lot of issue in embedded projects and may deserve a special handling, would that be good communication of the breaking changes, or revert. REPRODUCE: - create a file test.cpp containing #include <cmath> - compile with arm-none-eabi-g++ --freestanding -c test.cpp RESULT On gcc 12.2.0: compilation successful On gcc 13.1.0: In file included from /usr/arm-none-eabi/include/c++/13.1.0/cmath:41, from test.cpp:1: /usr/arm-none-eabi/include/c++/13.1.0/bits/requires_hosted.h:34:4: error: #error "This header is not available in freestanding mode." 34 | # error "This header is not available in freestanding mode." | ^~~~~ In file included from /usr/arm-none-eabi/include/c++/13.1.0/bits/specfun.h:47, from /usr/arm-none-eabi/include/c++/13.1.0/cmath:3716: /usr/arm-none-eabi/include/c++/13.1.0/tr1/gamma.tcc: In function '_Tp std::__detail::__log_gamma(_Tp)': /usr/arm-none-eabi/include/c++/13.1.0/tr1/gamma.tcc:236:18: error: '__throw_domain_error' is not a member of 'std'; did you mean '__throw_runtime_error'? 236 | std::__throw_domain_error(__N("Argument is nonpositive integer " | ^~~~~~~~~~~~~~~~~~~~ | __throw_runtime_error [...] the error repeat for multiple functions.