mirror of
https://github.com/genodelabs/genode.git
synced 2025-01-19 03:06:39 +00:00
parent
47a2ad604c
commit
96627df4d4
@ -582,6 +582,7 @@ _ZThn8_N6Genode23Alarm_timeout_scheduler14handle_timeoutENS_8DurationE T
|
|||||||
_ZThn8_N6Genode23Alarm_timeout_schedulerD0Ev T
|
_ZThn8_N6Genode23Alarm_timeout_schedulerD0Ev T
|
||||||
_ZThn8_N6Genode23Alarm_timeout_schedulerD1Ev T
|
_ZThn8_N6Genode23Alarm_timeout_schedulerD1Ev T
|
||||||
_ZdlPv W
|
_ZdlPv W
|
||||||
|
_ZdlPvm W
|
||||||
_ZdlPvPN6Genode11DeallocatorE T
|
_ZdlPvPN6Genode11DeallocatorE T
|
||||||
_ZdlPvPN6Genode9AllocatorE W
|
_ZdlPvPN6Genode9AllocatorE W
|
||||||
_ZdlPvRN6Genode11DeallocatorE T
|
_ZdlPvRN6Genode11DeallocatorE T
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
/* libsupc++ includes */
|
/* libsupc++ includes */
|
||||||
#include <cxxabi.h>
|
#include <cxxabi.h>
|
||||||
|
#include <exception>
|
||||||
|
|
||||||
/* Genode includes */
|
/* Genode includes */
|
||||||
#include <base/log.h>
|
#include <base/log.h>
|
||||||
|
@ -64,7 +64,7 @@ void Genode::init_cxx_heap(Env &env)
|
|||||||
typedef unsigned long Block_header;
|
typedef unsigned long Block_header;
|
||||||
|
|
||||||
|
|
||||||
extern "C" void *malloc(unsigned size)
|
extern "C" void *malloc(size_t size)
|
||||||
{
|
{
|
||||||
/* enforce size to be a multiple of 4 bytes */
|
/* enforce size to be a multiple of 4 bytes */
|
||||||
size = (size + 3) & ~3;
|
size = (size + 3) & ~3;
|
||||||
@ -85,7 +85,7 @@ extern "C" void *malloc(unsigned size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
extern "C" void *calloc(unsigned nmemb, unsigned size)
|
extern "C" void *calloc(size_t nmemb, size_t size)
|
||||||
{
|
{
|
||||||
void *addr = malloc(nmemb*size);
|
void *addr = malloc(nmemb*size);
|
||||||
Genode::memset(addr, 0, nmemb*size);
|
Genode::memset(addr, 0, nmemb*size);
|
||||||
|
@ -13,10 +13,12 @@
|
|||||||
|
|
||||||
/* libsupc++ includes */
|
/* libsupc++ includes */
|
||||||
#include <cxxabi.h>
|
#include <cxxabi.h>
|
||||||
|
#include <exception>
|
||||||
|
|
||||||
/* Genode includes */
|
/* Genode includes */
|
||||||
#include <base/env.h>
|
#include <base/env.h>
|
||||||
#include <base/log.h>
|
#include <base/log.h>
|
||||||
|
#include <base/sleep.h>
|
||||||
#include <base/stdint.h>
|
#include <base/stdint.h>
|
||||||
#include <base/thread.h>
|
#include <base/thread.h>
|
||||||
#include <util/string.h>
|
#include <util/string.h>
|
||||||
@ -106,7 +108,7 @@ extern "C" __attribute__((weak)) void raise()
|
|||||||
** Support for libsupc++ **
|
** Support for libsupc++ **
|
||||||
***************************/
|
***************************/
|
||||||
|
|
||||||
extern "C" void *abort(void)
|
extern "C" void abort(void)
|
||||||
{
|
{
|
||||||
Genode::Thread const * const myself = Genode::Thread::myself();
|
Genode::Thread const * const myself = Genode::Thread::myself();
|
||||||
Genode::Thread::Name name = "unknown";
|
Genode::Thread::Name name = "unknown";
|
||||||
@ -120,22 +122,22 @@ extern "C" void *abort(void)
|
|||||||
if (name != "main")
|
if (name != "main")
|
||||||
genode_exit(1);
|
genode_exit(1);
|
||||||
|
|
||||||
|
Genode::sleep_forever();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
extern "C" int fputc(int, void*) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
extern "C" void *fputc(void) {
|
extern "C" int fputs(const char *s, void *) {
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
extern "C" void *fputs(const char *s, void *) {
|
|
||||||
Genode::warning("C++ runtime: ", s);
|
Genode::warning("C++ runtime: ", s);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
extern "C" void *fwrite(void) {
|
extern "C" size_t fwrite(const void*, size_t, size_t, void*) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,14 +149,14 @@ extern "C" int memcmp(const void *p0, const void *p1, size_t size)
|
|||||||
|
|
||||||
|
|
||||||
extern "C" __attribute__((weak))
|
extern "C" __attribute__((weak))
|
||||||
void *memcpy(void *dst, void *src, size_t n)
|
void *memcpy(void *dst, const void *src, size_t n)
|
||||||
{
|
{
|
||||||
return Genode::memcpy(dst, src, n);
|
return Genode::memcpy(dst, src, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
extern "C" __attribute__((weak))
|
extern "C" __attribute__((weak))
|
||||||
void *memmove(void *dst, void *src, size_t n)
|
void *memmove(void *dst, const void *src, size_t n)
|
||||||
{
|
{
|
||||||
return Genode::memmove(dst, src, n);
|
return Genode::memmove(dst, src, n);
|
||||||
}
|
}
|
||||||
@ -180,7 +182,7 @@ struct FILE;
|
|||||||
FILE *__stderrp;
|
FILE *__stderrp;
|
||||||
|
|
||||||
|
|
||||||
extern "C" void *strcat(void)
|
extern "C" char *strcat(char *, const char *)
|
||||||
{
|
{
|
||||||
Genode::warning("strcat - not yet implemented");
|
Genode::warning("strcat - not yet implemented");
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -72,3 +72,9 @@ __attribute__((weak)) void operator delete (void *)
|
|||||||
Genode::error("cxx: operator delete (void *) called - not implemented. "
|
Genode::error("cxx: operator delete (void *) called - not implemented. "
|
||||||
"A working implementation is available in the 'stdcxx' library.");
|
"A working implementation is available in the 'stdcxx' library.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__attribute__((weak)) void operator delete (void *, unsigned long)
|
||||||
|
{
|
||||||
|
Genode::error("cxx: operator delete (void *, unsigned long) called - not implemented. "
|
||||||
|
"A working implementation is available in the 'stdcxx' library.");
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user