1
- From 32d24edf161f338847c32fa2f44dc80422d4795e Mon Sep 17 00:00:00 2001
1
+ From bb17d740b50e98b67c4bdc6449e874568993aa84 Mon Sep 17 00:00:00 2001
2
2
From: Andy-Python-Programmer <
[email protected] >
3
3
Date: Fri, 8 Jul 2022 12:32:32 +1000
4
4
Subject: [PATCH] yes
8
8
options/ansi/generic/stdlib-stubs.cpp | 142 +++++++++++++++++++++-----
9
9
options/glibc/generic/execinfo.cpp | 5 +-
10
10
options/rtdl/generic/linker.cpp | 2 +-
11
- sysdeps/aero/generic/aero.cpp | 14 + --
11
+ sysdeps/aero/generic/aero.cpp | 38 +++-- --
12
12
sysdeps/aero/generic/filesystem.cpp | 25 ++++-
13
- sysdeps/aero/generic/sockets.cpp | 4 +-
13
+ sysdeps/aero/generic/sockets.cpp | 65 ++++++++++ +-
14
14
sysdeps/aero/include/aero/syscall.h | 2 +
15
- 7 files changed, 152 insertions(+), 42 deletions(-)
15
+ 7 files changed, 225 insertions(+), 54 deletions(-)
16
16
17
17
diff --git a/options/ansi/generic/stdlib-stubs.cpp b/options/ansi/generic/stdlib-stubs.cpp
18
18
index 4836391e..2a73c6d0 100644
@@ -198,9 +198,44 @@ index 6716ef4f..e5ec8cff 100644
198
198
constexpr bool eagerBinding = true;
199
199
200
200
diff --git a/sysdeps/aero/generic/aero.cpp b/sysdeps/aero/generic/aero.cpp
201
- index 29fb9610..645a84d5 100644
201
+ index 29fb9610..a27da559 100644
202
202
--- a/sysdeps/aero/generic/aero.cpp
203
203
+++ b/sysdeps/aero/generic/aero.cpp
204
+ @@ -69,22 +69,22 @@ int sys_futex_tid() {
205
+ }
206
+
207
+ int sys_futex_wait(int *pointer, int expected, const struct timespec *time) {
208
+ - auto result = syscall(SYS_FUTEX_WAIT, pointer, expected, time);
209
+ -
210
+ - if (result < 0) {
211
+ - return -result;
212
+ - }
213
+ -
214
+ + // auto result = syscall(SYS_FUTEX_WAIT, pointer, expected, time);
215
+ + //
216
+ + // if (result < 0) {
217
+ + // return -result;
218
+ + // }
219
+ + //
220
+ return 0;
221
+ }
222
+
223
+ int sys_futex_wake(int *pointer) {
224
+ - auto result = syscall(SYS_FUTEX_WAKE, pointer);
225
+ -
226
+ - if (result < 0) {
227
+ - return -result;
228
+ - }
229
+ -
230
+ + // auto result = syscall(SYS_FUTEX_WAKE, pointer);
231
+ + //
232
+ + // if (result < 0) {
233
+ + // return -result;
234
+ + // }
235
+ + //
236
+ return 0;
237
+ }
238
+
204
239
@@ -124,7 +124,9 @@ int sys_anon_free(void *pointer, size_t size) {
205
240
}
206
241
@@ -240,7 +275,7 @@ index 29fb9610..645a84d5 100644
240
275
}
241
276
242
277
diff --git a/sysdeps/aero/generic/filesystem.cpp b/sysdeps/aero/generic/filesystem.cpp
243
- index a3e2aca2..09e6444f 100644
278
+ index a3e2aca2..4187059e 100644
244
279
--- a/sysdeps/aero/generic/filesystem.cpp
245
280
+++ b/sysdeps/aero/generic/filesystem.cpp
246
281
@@ -158,11 +158,6 @@ int sys_tcsetattr(int fd, int optional_action, const struct termios *attr) {
@@ -269,7 +304,7 @@ index a3e2aca2..09e6444f 100644
269
304
+ }
270
305
+
271
306
+ *num_events = result;
272
- + return 0;
307
+ + return 0;
273
308
+ }
274
309
+
275
310
+ int sys_poll(struct pollfd *fds, nfds_t count, int timeout, int *num_events) {
@@ -281,10 +316,17 @@ index a3e2aca2..09e6444f 100644
281
316
+ }
282
317
} // namespace mlibc
283
318
diff --git a/sysdeps/aero/generic/sockets.cpp b/sysdeps/aero/generic/sockets.cpp
284
- index b6b18fe7..111dc570 100644
319
+ index b6b18fe7..33609ca4 100644
285
320
--- a/sysdeps/aero/generic/sockets.cpp
286
321
+++ b/sysdeps/aero/generic/sockets.cpp
287
- @@ -46,8 +46,8 @@ int sys_listen(int fd, int backlog) {
322
+ @@ -1,5 +1,6 @@
323
+ #include <mlibc/all-sysdeps.hpp>
324
+ #include <mlibc/thread-entry.hpp>
325
+ + #include <mlibc/debug.hpp>
326
+
327
+ #include <aero/syscall.h>
328
+ #include <stdint.h>
329
+ @@ -46,8 +47,8 @@ int sys_listen(int fd, int backlog) {
288
330
return 0;
289
331
}
290
332
@@ -295,6 +337,71 @@ index b6b18fe7..111dc570 100644
295
337
296
338
if (result < 0) {
297
339
return -result;
340
+ @@ -56,4 +57,64 @@ int sys_accept(int fd, int *newfd) {
341
+ *newfd = result;
342
+ return 0;
343
+ }
344
+ +
345
+ + int sys_getsockopt(int fd, int layer, int number, void *__restrict buffer, socklen_t *__restrict size) {
346
+ + (void)fd; (void)size;
347
+ + if (layer == SOL_SOCKET && number == SO_PEERCRED) {
348
+ + mlibc::infoLogger() << "\e[31mmlibc: getsockopt() call with SOL_SOCKET and SO_PEERCRED is unimplemented\e[39m" << frg::endlog;
349
+ + *(int *)buffer = 0;
350
+ + return 0;
351
+ + } else if(layer == SOL_SOCKET && number == SO_SNDBUF) {
352
+ + mlibc::infoLogger() << "\e[31mmlibc: getsockopt() call with SOL_SOCKET and SO_SNDBUF is unimplemented\e[39m" << frg::endlog;
353
+ + *(int *)buffer = 4096;
354
+ + return 0;
355
+ + } else if(layer == SOL_SOCKET && number == SO_TYPE) {
356
+ + mlibc::infoLogger() << "\e[31mmlibc: getsockopt() call with SOL_SOCKET and SO_TYPE is unimplemented, hardcoding SOCK_STREAM\e[39m" << frg::endlog;
357
+ + *(int *)buffer = SOCK_STREAM;
358
+ + return 0;
359
+ + } else if(layer == SOL_SOCKET && number == SO_ERROR) {
360
+ + mlibc::infoLogger() << "\e[31mmlibc: getsockopt() call with SOL_SOCKET and SO_ERROR is unimplemented, hardcoding 0\e[39m" << frg::endlog;
361
+ + *(int *)buffer = 0;
362
+ + return 0;
363
+ + } else if(layer == SOL_SOCKET && number == SO_KEEPALIVE) {
364
+ + mlibc::infoLogger() << "\e[31mmlibc: getsockopt() call with SOL_SOCKET and SO_KEEPALIVE is unimplemented, hardcoding 0\e[39m" << frg::endlog;
365
+ + *(int *)buffer = 0;
366
+ + return 0;
367
+ + } else{
368
+ + mlibc::panicLogger() << "\e[31mmlibc: Unexpected getsockopt() call, layer: " << layer << " number: " << number << "\e[39m" << frg::endlog;
369
+ + __builtin_unreachable();
370
+ + }
371
+ +
372
+ + return 0;
373
+ + }
374
+ +
375
+ + int sys_setsockopt(int fd, int layer, int number, const void *buffer, socklen_t size) {
376
+ + (void)fd; (void)buffer; (void)size;
377
+ +
378
+ + if (layer == SOL_SOCKET && number == SO_PASSCRED) {
379
+ + mlibc::infoLogger() << "\e[31mmlibc: setsockopt(SO_PASSCRED) is not implemented correctly\e[39m" << frg::endlog;
380
+ + return 0;
381
+ + } else if (layer == SOL_SOCKET && number == SO_ATTACH_FILTER) {
382
+ + mlibc::infoLogger() << "\e[31mmlibc: setsockopt(SO_ATTACH_FILTER) is not implemented correctly\e[39m" << frg::endlog;
383
+ + return 0;
384
+ + } else if (layer == SOL_SOCKET && number == SO_RCVBUFFORCE) {
385
+ + mlibc::infoLogger() << "\e[31mmlibc: setsockopt(SO_RCVBUFFORCE) is not implemented correctly\e[39m" << frg::endlog;
386
+ + return 0;
387
+ + } else if (layer == SOL_SOCKET && number == SO_SNDBUF) {
388
+ + mlibc::infoLogger() << "\e[31mmlibc: setsockopt() call with SOL_SOCKET and SO_SNDBUF is unimplemented\e[39m" << frg::endlog;
389
+ + return 0;
390
+ + } else if (layer == SOL_SOCKET && number == SO_KEEPALIVE) {
391
+ + mlibc::infoLogger() << "\e[31mmlibc: setsockopt() call with SOL_SOCKET and SO_KEEPALIVE is unimplemented\e[39m" << frg::endlog;
392
+ + return 0;
393
+ + } else if (layer == SOL_SOCKET && number == SO_REUSEADDR) {
394
+ + mlibc::infoLogger() << "\e[31mmlibc: setsockopt() call with SOL_SOCKET and SO_REUSEADDR is unimplemented\e[39m" << frg::endlog;
395
+ + return 0;
396
+ + } else if (layer == AF_NETLINK && number == SO_ACCEPTCONN) {
397
+ + mlibc::infoLogger() << "\e[31mmlibc: setsockopt() call with AF_NETLINK and SO_ACCEPTCONN is unimplemented\e[39m" << frg::endlog;
398
+ + return 0;
399
+ + } else {
400
+ + mlibc::panicLogger() << "\e[31mmlibc: Unexpected setsockopt() call, layer: " << layer << " number: " << number << "\e[39m" << frg::endlog;
401
+ + __builtin_unreachable();
402
+ + }
403
+ + }
404
+ } // namespace mlibc
298
405
diff --git a/sysdeps/aero/include/aero/syscall.h b/sysdeps/aero/include/aero/syscall.h
299
406
index 12f8dc61..fcc219a9 100644
300
407
--- a/sysdeps/aero/include/aero/syscall.h
0 commit comments