summaryrefslogtreecommitdiff
path: root/wasm/missing.c
diff options
context:
space:
mode:
Diffstat (limited to 'wasm/missing.c')
-rw-r--r--wasm/missing.c199
1 files changed, 199 insertions, 0 deletions
diff --git a/wasm/missing.c b/wasm/missing.c
new file mode 100644
index 0000000000..5bbf988642
--- /dev/null
+++ b/wasm/missing.c
@@ -0,0 +1,199 @@
+#include <errno.h>
+#include <sys/types.h>
+#include "ruby/missing.h"
+
+// Produce weak symbols for missing functions to replace them with actual ones if exists.
+#define WASM_MISSING_LIBC_FUNC __attribute__((weak))
+
+WASM_MISSING_LIBC_FUNC
+int
+chmod(const char *pathname, rb_mode_t mode)
+{
+ errno = ENOTSUP;
+ return -1;
+}
+
+WASM_MISSING_LIBC_FUNC
+int
+chown(const char *pathname, rb_uid_t owner, rb_gid_t group)
+{
+ errno = ENOTSUP;
+ return -1;
+}
+
+WASM_MISSING_LIBC_FUNC
+int
+dup(int oldfd)
+{
+ errno = ENOTSUP;
+ return -1;
+}
+
+WASM_MISSING_LIBC_FUNC
+int
+dup2(int oldfd, int newfd)
+{
+ errno = ENOTSUP;
+ return -1;
+}
+
+WASM_MISSING_LIBC_FUNC
+int
+execl(const char *path, const char *arg, ...)
+{
+ errno = ENOTSUP;
+ return -1;
+}
+
+WASM_MISSING_LIBC_FUNC
+int
+execle(const char *path, const char *arg, ...)
+{
+ errno = ENOTSUP;
+ return -1;
+}
+
+WASM_MISSING_LIBC_FUNC
+int
+execv(const char *path, char *const argv[])
+{
+ errno = ENOTSUP;
+ return -1;
+}
+
+WASM_MISSING_LIBC_FUNC
+int
+execve(const char *filename, char *const argv[], char *const envp[])
+{
+ errno = ENOTSUP;
+ return -1;
+}
+
+WASM_MISSING_LIBC_FUNC
+rb_uid_t
+geteuid(void)
+{
+ return 0;
+}
+
+WASM_MISSING_LIBC_FUNC
+rb_uid_t
+getuid(void)
+{
+ return 0;
+}
+
+WASM_MISSING_LIBC_FUNC
+rb_pid_t
+getppid(void)
+{
+ return 0;
+}
+
+WASM_MISSING_LIBC_FUNC
+rb_gid_t
+getegid(void)
+{
+ return 0;
+}
+
+WASM_MISSING_LIBC_FUNC
+rb_gid_t
+getgid(void)
+{
+ return 0;
+}
+
+WASM_MISSING_LIBC_FUNC
+char *
+getlogin(void)
+{
+ errno = ENOTSUP;
+ return NULL;
+}
+
+WASM_MISSING_LIBC_FUNC
+rb_mode_t
+umask(rb_mode_t mask)
+{
+ return 0;
+}
+
+WASM_MISSING_LIBC_FUNC
+int
+mprotect(const void *addr, size_t len, int prot)
+{
+ return 0;
+}
+
+WASM_MISSING_LIBC_FUNC
+int
+pclose(FILE *stream)
+{
+ errno = ENOTSUP;
+ return -1;
+}
+
+WASM_MISSING_LIBC_FUNC
+FILE *
+popen(const char *command, const char *type)
+{
+ errno = ENOTSUP;
+ return NULL;
+}
+
+WASM_MISSING_LIBC_FUNC
+int
+pipe(int pipefd[2])
+{
+ errno = ENOTSUP;
+ return -1;
+}
+
+WASM_MISSING_LIBC_FUNC
+int
+posix_madvise(void *addr, size_t len, int advice)
+{
+ errno = ENOTSUP;
+ return -1;
+}
+
+WASM_MISSING_LIBC_FUNC
+int
+kill(rb_pid_t pid, int sig)
+{
+ errno = ENOTSUP;
+ return -1;
+}
+
+
+WASM_MISSING_LIBC_FUNC
+void
+tzset(void)
+{
+ return;
+}
+
+WASM_MISSING_LIBC_FUNC
+int
+shutdown(int s, int how)
+{
+ errno = ENOTSUP;
+ return -1;
+}
+
+WASM_MISSING_LIBC_FUNC
+int
+system(const char *command)
+{
+ errno = ENOTSUP;
+ return -1;
+}
+
+WASM_MISSING_LIBC_FUNC
+pid_t
+waitpid(pid_t pid, int *wstatus, int options)
+{
+ errno = ENOTSUP;
+ return -1;
+}