1- From 32d24edf161f338847c32fa2f44dc80422d4795e Mon Sep 17 00:00:00 2001
1+ From bb17d740b50e98b67c4bdc6449e874568993aa84 Mon Sep 17 00:00:00 2001
22From: Andy-Python-Programmer <andypythonappdeveloper@gmail.com>
33Date: Fri, 8 Jul 2022 12:32:32 +1000
44Subject: [PATCH] yes
@@ -8,11 +8,11 @@ Signed-off-by: Andy-Python-Programmer <andypythonappdeveloper@gmail.com>
88 options/ansi/generic/stdlib-stubs.cpp | 142 +++++++++++++++++++++-----
99 options/glibc/generic/execinfo.cpp | 5 +-
1010 options/rtdl/generic/linker.cpp | 2 +-
11- sysdeps/aero/generic/aero.cpp | 14 + --
11+ sysdeps/aero/generic/aero.cpp | 38 +++-- --
1212 sysdeps/aero/generic/filesystem.cpp | 25 ++++-
13- sysdeps/aero/generic/sockets.cpp | 4 +-
13+ sysdeps/aero/generic/sockets.cpp | 65 ++++++++++ +-
1414 sysdeps/aero/include/aero/syscall.h | 2 +
15- 7 files changed, 152 insertions(+), 42 deletions(-)
15+ 7 files changed, 225 insertions(+), 54 deletions(-)
1616
1717diff --git a/options/ansi/generic/stdlib-stubs.cpp b/options/ansi/generic/stdlib-stubs.cpp
1818index 4836391e..2a73c6d0 100644
@@ -198,9 +198,44 @@ index 6716ef4f..e5ec8cff 100644
198198 constexpr bool eagerBinding = true;
199199
200200diff --git a/sysdeps/aero/generic/aero.cpp b/sysdeps/aero/generic/aero.cpp
201- index 29fb9610..645a84d5 100644
201+ index 29fb9610..a27da559 100644
202202--- a/sysdeps/aero/generic/aero.cpp
203203+++ 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+
204239@@ -124,7 +124,9 @@ int sys_anon_free(void *pointer, size_t size) {
205240 }
206241
@@ -240,7 +275,7 @@ index 29fb9610..645a84d5 100644
240275 }
241276
242277diff --git a/sysdeps/aero/generic/filesystem.cpp b/sysdeps/aero/generic/filesystem.cpp
243- index a3e2aca2..09e6444f 100644
278+ index a3e2aca2..4187059e 100644
244279--- a/sysdeps/aero/generic/filesystem.cpp
245280+++ b/sysdeps/aero/generic/filesystem.cpp
246281@@ -158,11 +158,6 @@ int sys_tcsetattr(int fd, int optional_action, const struct termios *attr) {
@@ -269,7 +304,7 @@ index a3e2aca2..09e6444f 100644
269304+ }
270305+
271306+ *num_events = result;
272- + return 0;
307+ + return 0;
273308+ }
274309+
275310+ int sys_poll(struct pollfd *fds, nfds_t count, int timeout, int *num_events) {
@@ -281,10 +316,17 @@ index a3e2aca2..09e6444f 100644
281316+ }
282317 } // namespace mlibc
283318diff --git a/sysdeps/aero/generic/sockets.cpp b/sysdeps/aero/generic/sockets.cpp
284- index b6b18fe7..111dc570 100644
319+ index b6b18fe7..33609ca4 100644
285320--- a/sysdeps/aero/generic/sockets.cpp
286321+++ 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) {
288330 return 0;
289331 }
290332
@@ -295,6 +337,71 @@ index b6b18fe7..111dc570 100644
295337
296338 if (result < 0) {
297339 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
298405diff --git a/sysdeps/aero/include/aero/syscall.h b/sysdeps/aero/include/aero/syscall.h
299406index 12f8dc61..fcc219a9 100644
300407--- a/sysdeps/aero/include/aero/syscall.h
0 commit comments