1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
#include "unistd.h"
#include <cassert>
#include <cstdio>
#include <cstdlib>
#include <cerrno>
#include "third_party/printf/printf.h"
#ifdef errno
#undef errno
#endif
int errno{};
extern "C" [[noreturn]] void vApplicationMallocFailedHook(void)
{
for (;;);
}
extern "C" [[noreturn]] void vApplicationStackOverflowHook(void *task_handle, char *task_name)
{
(void) task_handle;
(void) task_name;
for (;;);
}
extern "C" void vApplicationIdleHook(void)
{
}
extern "C" [[noreturn]] void _exit(int __status)
{
(void) __status;
for (;;);
}
/* func can be NULL, in which case no function information is given. */
extern "C" [[noreturn]] void __assert_func (
const char *file, int line, const char *func, const char *failedexpr)
{
dprintf(STDERR_FILENO,
"assertion \"%s\" failed: file \"%s\", line %d%s%s\n",
failedexpr, file, line,
func ? ", function: " : "", func ? func : "");
abort();
/* NOTREACHED */
}
extern "C" ssize_t read(int fd, void *buf, size_t nbytes)
{
(void) fd;
(void) buf;
(void) nbytes;
errno = ENOSYS;
return -1;
}
extern "C" ssize_t write(int fd, const void *buf, size_t nbytes)
{
(void) fd;
(void) buf;
(void) nbytes;
errno = ENOSYS;
return -1;
}
static void dputchar2(char c, void* fd)
{
write(reinterpret_cast<int>(fd), &c, 1);
}
static void dputchar(char c, int fd)
{
write(fd, &c, 1);
}
extern "C" int dprintf(int fd, const char * format, ...)
{
va_list args;
va_start(args, format);
const int ret = vfctprintf(dputchar2, reinterpret_cast<void *>(fd), format, args);
va_end(args);
return ret;
}
extern "C" int vdprintf(int fd, const char * format, va_list args)
{
return vfctprintf(dputchar2, reinterpret_cast<void *>(fd), format, args);
}
extern "C" void putchar_(char c)
{
dputchar(c, STDIN_FILENO);
}
|