diff --git a/repos/base-linux/lib/mk/lx_hybrid.mk b/repos/base-linux/lib/mk/lx_hybrid.mk index 43f93b6ee1..f76f4256a1 100644 --- a/repos/base-linux/lib/mk/lx_hybrid.mk +++ b/repos/base-linux/lib/mk/lx_hybrid.mk @@ -2,6 +2,10 @@ SRC_CC += lx_hybrid.cc new_delete.cc capability_space.cc SRC_CC += signal_transmitter.cc signal.cc SRC_C += libgcc.c +# new_delete.cc uses libsupc++ which means we need to access +# its include directory. +STDINC := yes + vpath new_delete.cc $(BASE_DIR)/src/lib/cxx vpath lx_hybrid.cc $(REP_DIR)/src/lib/lx_hybrid vpath libgcc.c $(REP_DIR)/src/lib/lx_hybrid diff --git a/repos/base/src/lib/cxx/new_delete.cc b/repos/base/src/lib/cxx/new_delete.cc index 62bb3563ec..eca8dee86f 100644 --- a/repos/base/src/lib/cxx/new_delete.cc +++ b/repos/base/src/lib/cxx/new_delete.cc @@ -11,10 +11,14 @@ * under the terms of the GNU Affero General Public License version 3. */ +/* Genode includes */ #include #include #include +/* C++ runtime includes */ +#include + using Genode::size_t; using Genode::Allocator; using Genode::Deallocator; @@ -86,3 +90,9 @@ __attribute__((weak)) void operator delete (void *, unsigned long, std::align_va Genode::error("cxx: operator delete (void *, unsigned long, std::align_val_t) called - not implemented. " "A working implementation is available in the 'stdcxx' library."); } + +__attribute__((weak)) void operator delete (void *, std::align_val_t) noexcept +{ + Genode::error("cxx: operator delete (void *, std::align_val_t) called - not implemented. " + "A working implementation is available in the 'stdcxx' library."); +}