makefile: move pdlibc to extlib, add C++ stub standard headers

It now kind of compiles with x86_64-elf gcc (does not link though)
This commit is contained in:
2021-11-04 20:15:58 +08:00
parent 964893b14a
commit 98f92a9958
48 changed files with 134 additions and 28 deletions

View File

@ -1,7 +1,6 @@
#pragma once
#include <cstddef>
#include <limits>
#include <stddef.h>
#include <new>
#include "memory.h"
@ -30,11 +29,11 @@ public:
template<typename Other>
constexpr kAllocator(const kAllocator<Other> &) {}
Type *allocate(std::size_t n) {
Type *allocate(size_t n) {
return kMalloc(n * sizeof(Type));
}
void deallocate(Type *p, std::size_t n) {
void deallocate(Type *p, size_t n) {
kFree(p);
}
};
@ -59,25 +58,25 @@ bool operator!=(const kAllocator<T> &, const kAllocator<U> &) {
//
// operators new and delete only call kMalloc/kFree, so C++ code
// must stay after paging setup
void *operator new(std::size_t size);
void *operator new[](std::size_t size);
void *operator new(size_t size);
void *operator new[](size_t size);
#if __cplusplus >= 201703L
void *operator new(std::size_t size, std::align_val_t align);
void *operator new[](std::size_t size, std::align_val_t align);
void *operator new(size_t size, std::align_val_t align);
void *operator new[](size_t size, std::align_val_t align);
#endif
void operator delete(void *ptr) noexcept;
void operator delete[](void *ptr) noexcept;
#if __cplusplus >= 201402L
void operator delete(void *ptr, std::size_t size) noexcept;
void operator delete[](void *ptr, std::size_t size) noexcept;
void operator delete(void *ptr, size_t size) noexcept;
void operator delete[](void *ptr, size_t size) noexcept;
#endif
#if __cplusplus >= 201703L
void operator delete(void *ptr, std::align_val_t align) noexcept;
void operator delete[](void *ptr, std::align_val_t align) noexcept;
void operator delete(void *ptr, std::size_t size, std::align_val_t align) noexcept;
void operator delete[](void *ptr, std::size_t size, std::align_val_t align) noexcept;
void operator delete(void *ptr, size_t size, std::align_val_t align) noexcept;
void operator delete[](void *ptr, size_t size, std::align_val_t align) noexcept;
#endif
#endif // HELOS

View File

@ -3,25 +3,25 @@
#include "../extlib/dlmalloc/malloc-2.8.6.h"
void *operator new(std::size_t size) { return kMalloc(size); }
void *operator new[](std::size_t size) { return kMalloc(size); }
void *operator new(size_t size) { return kMalloc(size); }
void *operator new[](size_t size) { return kMalloc(size); }
void operator delete(void *ptr) noexcept { kFree(ptr); }
void operator delete[](void *ptr) noexcept { kFree(ptr); }
#if __cplusplus >= 201703L
void *operator new(std::size_t size, std::align_val_t align) { return dlmemalign((size_t)align, size); }
void *operator new[](std::size_t size, std::align_val_t align) { return dlmemalign((size_t)align, size); }
void *operator new(size_t size, std::align_val_t align) { return dlmemalign((size_t)align, size); }
void *operator new[](size_t size, std::align_val_t align) { return dlmemalign((size_t)align, size); }
#endif
#if __cplusplus >= 201402L
void operator delete(void *ptr, std::size_t size) noexcept { kFree(ptr); }
void operator delete[](void *ptr, std::size_t size) noexcept { kFree(ptr); }
void operator delete(void *ptr, size_t size) noexcept { kFree(ptr); }
void operator delete[](void *ptr, size_t size) noexcept { kFree(ptr); }
#endif
#if __cplusplus >= 201703L
void operator delete(void *ptr, std::align_val_t align) noexcept { kFree(ptr); }
void operator delete[](void *ptr, std::align_val_t align) noexcept { kFree(ptr); }
void operator delete(void *ptr, std::size_t size, std::align_val_t align) noexcept { kFree(ptr); }
void operator delete[](void *ptr, std::size_t size, std::align_val_t align) noexcept { kFree(ptr); }
void operator delete(void *ptr, size_t size, std::align_val_t align) noexcept { kFree(ptr); }
void operator delete[](void *ptr, size_t size, std::align_val_t align) noexcept { kFree(ptr); }
#endif