On Fri, 14 Aug 2020 at 22:23, Casey St.Fleur via Gcc-help <gcc-help@xxxxxxxxxxx> wrote: > > Hi all, > > I am trying to build GCC 10.2 using Ubuntu's Arm cross compiler. > > But I am getting the following error, > > ../../../../../gcc-10.2.0/libstdc++-v3/src/c++17/memory_resource.cc:92:5: error: ‘__constinit’ does not name a type > 92 | __constinit constant_init<newdel_res_t> newdel_res{}; > | ^~~~~~~~~~~ > ../../../../../gcc-10.2.0/libstdc++-v3/src/c++17/memory_resource.cc:93:5: error: ‘__constinit’ does not name a type > 93 | __constinit constant_init<null_res_t> null_res{}; > | ^~~~~~~~~~~ > ../../../../../gcc-10.2.0/libstdc++-v3/src/c++17/memory_resource.cc:146:5: error: ‘__constinit’ does not name a type > 146 | __constinit constant_init<atomic_mem_res> default_res{&newdel_res.obj}; > | ^~~~~~~~~~~ > ../../../../../gcc-10.2.0/libstdc++-v3/src/c++17/memory_resource.cc: In function ‘std::pmr::memory_resource* std::pmr::new_delete_resource()’: > ../../../../../gcc-10.2.0/libstdc++-v3/src/c++17/memory_resource.cc:154:13: error: ‘newdel_res’ was not declared in this scope > 154 | { return &newdel_res.obj; } > | ^~~~~~~~~~ > ../../../../../gcc-10.2.0/libstdc++-v3/src/c++17/memory_resource.cc: In function ‘std::pmr::memory_resource* std::pmr::null_memory_resource()’: > ../../../../../gcc-10.2.0/libstdc++-v3/src/c++17/memory_resource.cc:158:13: error: ‘null_res’ was not declared in this scope > 158 | { return &null_res.obj; } > | ^~~~~~~~ > ../../../../../gcc-10.2.0/libstdc++-v3/src/c++17/memory_resource.cc: In function ‘std::pmr::memory_resource* std::pmr::set_default_resource(std::pmr::memory_resource*)’: > ../../../../../gcc-10.2.0/libstdc++-v3/src/c++17/memory_resource.cc:165:12: error: ‘default_res’ was not declared in this scope; did you mean ‘default_delete’? > 165 | return default_res.obj.exchange(r); > | ^~~~~~~~~~~ > | default_delete > ../../../../../gcc-10.2.0/libstdc++-v3/src/c++17/memory_resource.cc: In function ‘std::pmr::memory_resource* std::pmr::get_default_resource()’: > ../../../../../gcc-10.2.0/libstdc++-v3/src/c++17/memory_resource.cc:170:12: error: ‘default_res’ was not declared in this scope; did you mean ‘default_delete’? > 170 | { return default_res.obj.load(); } > | ^~~~~~~~~~~ > | default_delete > > It looks like build is failing because it is trying to build a C++ 17 feature using a C++ 20 keyword. I am not sure what to do from here, any help is greatly appreciated . __constinit is not a C++20 keyword, it's a GCC extension. The C++20 keyword is 'constinit'. The GCC extension is supported since GCC 10.1, so the errors you are getting mean that libstdc++ is not being built by the right compiler.