Project import
diff --git a/libstdc++/MODULE_LICENSE_BSD b/libstdc++/MODULE_LICENSE_BSD
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/libstdc++/MODULE_LICENSE_BSD
diff --git a/libstdc++/NOTICE b/libstdc++/NOTICE
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/libstdc++/NOTICE
diff --git a/libstdc++/include/new b/libstdc++/include/new
new file mode 100644
index 0000000..cffab6e
--- /dev/null
+++ b/libstdc++/include/new
@@ -0,0 +1,35 @@
+/* -*- c++ -*- */
+#ifndef __NEW__
+#define __NEW__
+
+#include <stddef.h>
+
+extern "C++" {
+
+namespace std {
+  using ::size_t;
+  struct nothrow_t {};
+  extern const nothrow_t nothrow;
+}
+
+void* operator new(std::size_t);
+void* operator new(std::size_t, const std::nothrow_t&);
+void operator delete(void*) throw();
+// TODO: void operator delete(void*, std::size_t) throw();
+void operator delete(void*, const std::nothrow_t&) throw();
+
+void* operator new[](std::size_t);
+void* operator new[](std::size_t, const std::nothrow_t&);
+void operator delete[](void*) throw();
+// TODO: void operator delete[](void*, std::size_t) throw();
+void operator delete[](void*, const std::nothrow_t&) throw();
+
+// These four are not replaceable, so should be inlined.
+inline void* operator new(std::size_t, void* p) { return p; }
+inline void* operator new[](std::size_t, void* p) { return p; }
+inline void operator delete(void*, void*) throw() { }
+inline void operator delete[](void*, void*) throw() { }
+
+}  // extern C++
+
+#endif // __NEW__