|
@@ -396,32 +396,6 @@ char* strstr(const char* haystack, const char* needle)
|
|
return const_cast<char*>(haystack);
|
|
return const_cast<char*>(haystack);
|
|
}
|
|
}
|
|
|
|
|
|
-void* memchr(const void* ptr, int c, size_t size)
|
|
|
|
-{
|
|
|
|
- char ch = c;
|
|
|
|
- auto* cptr = (const char*)ptr;
|
|
|
|
- for (size_t i = 0; i < size; ++i) {
|
|
|
|
- if (cptr[i] == ch)
|
|
|
|
- return const_cast<char*>(cptr + i);
|
|
|
|
- }
|
|
|
|
- return nullptr;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-void* malloc(size_t s)
|
|
|
|
-{
|
|
|
|
- return kmalloc(s);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-void* realloc(void* p, size_t s)
|
|
|
|
-{
|
|
|
|
- return krealloc(p, s);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-void free(void* p)
|
|
|
|
-{
|
|
|
|
- return kfree(p);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
// Functions that are automatically called by the C++ compiler.
|
|
// Functions that are automatically called by the C++ compiler.
|
|
// Declare them first, to tell the silly compiler that they are indeed being used.
|
|
// Declare them first, to tell the silly compiler that they are indeed being used.
|
|
[[noreturn]] void __stack_chk_fail() __attribute__((used));
|
|
[[noreturn]] void __stack_chk_fail() __attribute__((used));
|