1
- From adcc64e89eb5e570e6ad2bc578fd8b891ee6bd9a Mon Sep 17 00:00:00 2001
1
+ From bf4093ec8e528fb9ebcb248d467784e3ecce47cb Mon Sep 17 00:00:00 2001
2
2
From: Andy-Python-Programmer <
[email protected] >
3
- Date: Fri, 17 Feb 2023 19:21:05 +1100
3
+ Date: Sat, 18 Feb 2023 14:53:00 +1100
4
4
Subject: [PATCH] <xxx>
5
5
6
6
---
7
7
.gitignore | 2 +
8
8
options/ansi/generic/stdlib-stubs.cpp | 185 ++++++++++++++++++++++++--
9
+ options/ansi/meson.build | 1 +
9
10
options/glibc/generic/execinfo.cpp | 5 +-
10
- options/posix/generic/dlfcn-stubs.cpp | 1 +
11
11
options/rtdl/generic/linker.cpp | 2 +-
12
- sysdeps/aero/generic/aero.cpp | 69 ++++++----
12
+ sysdeps/aero/generic/aero.cpp | 77 + ++++++----
13
13
sysdeps/aero/generic/filesystem.cpp | 51 ++++++-
14
14
sysdeps/aero/generic/sockets.cpp | 87 +++++++++++-
15
15
sysdeps/aero/generic/time.cpp | 24 ++++
16
- sysdeps/aero/include/aero/syscall.h | 9 ++
16
+ sysdeps/aero/include/aero/syscall.h | 10 ++
17
17
sysdeps/aero/meson.build | 1 +
18
- 11 files changed, 389 insertions(+), 47 deletions(-)
18
+ 11 files changed, 398 insertions(+), 47 deletions(-)
19
19
create mode 100644 sysdeps/aero/generic/time.cpp
20
20
21
21
diff --git a/.gitignore b/.gitignore
@@ -239,6 +239,18 @@ index c0e54fe..6d9cc52 100644
239
239
// TODO: Print PID only if POSIX option is enabled.
240
240
if (mlibc::globalConfig().debugMalloc)
241
241
mlibc::infoLogger() << "mlibc (PID ?): malloc() returns "
242
+ diff --git a/options/ansi/meson.build b/options/ansi/meson.build
243
+ index 0820de3..afd8bbe 100644
244
+ --- a/options/ansi/meson.build
245
+ +++ b/options/ansi/meson.build
246
+ @@ -47,6 +47,7 @@ if not no_headers
247
+ install_headers(
248
+ 'include/bits/ansi/timespec.h',
249
+ 'include/bits/ansi/time_t.h',
250
+ + 'include/bits/ansi/fenv.h',
251
+ subdir: 'bits/ansi'
252
+ )
253
+ endif
242
254
diff --git a/options/glibc/generic/execinfo.cpp b/options/glibc/generic/execinfo.cpp
243
255
index 3474615..10a2109 100644
244
256
--- a/options/glibc/generic/execinfo.cpp
@@ -256,18 +268,6 @@ index 3474615..10a2109 100644
256
268
}
257
269
258
270
char **backtrace_symbols(void *const *, int) {
259
- diff --git a/options/posix/generic/dlfcn-stubs.cpp b/options/posix/generic/dlfcn-stubs.cpp
260
- index fc9fd84..ab57631 100644
261
- --- a/options/posix/generic/dlfcn-stubs.cpp
262
- +++ b/options/posix/generic/dlfcn-stubs.cpp
263
- @@ -27,6 +27,7 @@ char *dlerror(void) {
264
-
265
- [[gnu::noinline]]
266
- void *dlopen(const char *file, int flags) {
267
- + mlibc::infoLogger() << "mlibc memes: " << file << frg::endlog;
268
- auto ra = __builtin_extract_return_addr(__builtin_return_address(0));
269
- return __dlapi_open(file, flags, ra);
270
- }
271
271
diff --git a/options/rtdl/generic/linker.cpp b/options/rtdl/generic/linker.cpp
272
272
index 6eb9d09..2ab5bc9 100644
273
273
--- a/options/rtdl/generic/linker.cpp
@@ -282,7 +282,7 @@ index 6eb9d09..2ab5bc9 100644
282
282
constexpr bool eagerBinding = true;
283
283
284
284
diff --git a/sysdeps/aero/generic/aero.cpp b/sysdeps/aero/generic/aero.cpp
285
- index 29fb961..b5945a8 100644
285
+ index 29fb961..31b1a9b 100644
286
286
--- a/sysdeps/aero/generic/aero.cpp
287
287
+++ b/sysdeps/aero/generic/aero.cpp
288
288
@@ -62,29 +62,33 @@ static frg::vector<Slice, MemoryAllocator> create_slice(char *const arg[]) {
@@ -333,7 +333,22 @@ index 29fb961..b5945a8 100644
333
333
return 0;
334
334
}
335
335
336
- @@ -124,7 +128,9 @@ int sys_anon_free(void *pointer, size_t size) {
336
+ @@ -114,6 +118,14 @@ int sys_vm_unmap(void *address, size_t size) {
337
+ return syscall(SYS_MUNMAP, address, size);
338
+ }
339
+
340
+ + int sys_vm_protect(void *pointer, size_t size, int prot) {
341
+ + auto res = syscall(SYS_MPROTECT, pointer, size, prot);
342
+ + if (res < 0)
343
+ + return -res;
344
+ +
345
+ + return 0;
346
+ + }
347
+ +
348
+ int sys_anon_allocate(size_t size, void **pointer) {
349
+ return sys_vm_map(nullptr, size, PROT_READ | PROT_WRITE,
350
+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0, pointer);
351
+ @@ -124,7 +136,9 @@ int sys_anon_free(void *pointer, size_t size) {
337
352
}
338
353
339
354
void sys_libc_panic() {
@@ -344,7 +359,7 @@ index 29fb961..b5945a8 100644
344
359
sys_exit(1);
345
360
}
346
361
347
- @@ -140,8 +146 ,15 @@ void sys_exit(int status) {
362
+ @@ -140,8 +154 ,15 @@ void sys_exit(int status) {
348
363
349
364
pid_t sys_getpid() {
350
365
auto result = syscall(SYS_GETPID);
@@ -361,7 +376,7 @@ index 29fb961..b5945a8 100644
361
376
return result;
362
377
}
363
378
364
- @@ -162,11 +175 ,6 @@ pid_t sys_getpgid(pid_t pid, pid_t *pgid) {
379
+ @@ -162,11 +183 ,6 @@ pid_t sys_getpgid(pid_t pid, pid_t *pgid) {
365
380
return 0;
366
381
}
367
382
@@ -373,7 +388,7 @@ index 29fb961..b5945a8 100644
373
388
int sys_clock_get(int clock, time_t *secs, long *nanos) {
374
389
struct timespec ts;
375
390
auto result = syscall(SYS_GETTIME, clock, &ts);
376
- @@ -233,7 +241 ,11 @@ uid_t sys_geteuid() {
391
+ @@ -233,7 +249 ,11 @@ uid_t sys_geteuid() {
377
392
return 0;
378
393
}
379
394
@@ -386,7 +401,7 @@ index 29fb961..b5945a8 100644
386
401
int sys_seteuid(uid_t euid) UNIMPLEMENTED("sys_seteuid")
387
402
388
403
gid_t sys_getgid() {
389
- @@ -256,16 +268 ,19 @@ int sys_setegid(gid_t egid) {
404
+ @@ -256,16 +276 ,19 @@ int sys_setegid(gid_t egid) {
390
405
return 0;
391
406
}
392
407
@@ -633,10 +648,10 @@ index 0000000..460412d
633
648
+ }
634
649
\ No newline at end of file
635
650
diff --git a/sysdeps/aero/include/aero/syscall.h b/sysdeps/aero/include/aero/syscall.h
636
- index 12f8dc6..afb45f8 100644
651
+ index 12f8dc6..78fc99d 100644
637
652
--- a/sysdeps/aero/include/aero/syscall.h
638
653
+++ b/sysdeps/aero/include/aero/syscall.h
639
- @@ -64,6 +64,15 @@
654
+ @@ -64,6 +64,16 @@
640
655
#define SYS_FUTEX_WAIT 57
641
656
#define SYS_FUTEX_WAKE 58
642
657
#define SYS_LINK 59
@@ -649,6 +664,7 @@ index 12f8dc6..afb45f8 100644
649
664
+ #define SYS_GETPPID 66
650
665
+ #define SYS_SOCKET_PAIR 67
651
666
+ #define SYS_RENAME 68
667
+ + #define SYS_MPROTECT 69
652
668
653
669
// Invalid syscall used to trigger a log error in the kernel (as a hint)
654
670
// so, that we can implement the syscall in the kernel.
0 commit comments