|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT/GCC PATCH 14/14] libgo: Add glue code and stubs
Signed-off-by: Charalampos Mainas <Charalampos.Mainas@xxxxxxxxx>
---
Makefile.uk | 2 +
libgo/glue.c | 199 +++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 201 insertions(+)
create mode 100644 libgo/glue.c
diff --git a/Makefile.uk b/Makefile.uk
index 9bca8fa..a133dae 100644
--- a/Makefile.uk
+++ b/Makefile.uk
@@ -137,6 +137,8 @@ LIBGO_CFLAGS-y += -DHAVE_CONFIG_H -D_INCLUDE_MALLOC_H_ \
-D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
LIBGO_CFLAGS-y += -Wno-cast-qual -Wno-unused-value
+LIBGO_SRCS-y += $(LIBGCC_BASE)/libgo/glue.c
+
LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/go/bytes/indexbyte.c|bytes
LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/go/log/syslog/syslog_c.c
LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/go/reflect/makefunc_ffi_c.c
diff --git a/libgo/glue.c b/libgo/glue.c
new file mode 100644
index 0000000..5443b63
--- /dev/null
+++ b/libgo/glue.c
@@ -0,0 +1,199 @@
+/* SPDX-License-Identifier: BSD-3-Clause */
+/*
+ *
+ * Authors: Charalampos Mainas <charalampos.mainas@xxxxxxxxx>
+ *
+ *
+ * Copyright (c) 2019, NEC Europe Ltd., NEC Corporation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holder nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.
+ */
+
+/*
+ * stubs
+ */
+
+#include <stdio.h>
+#include <errno.h>
+#include <sys/mman.h>
+#include <sys/statfs.h>
+#include <sys/stat.h>
+#include <uk/essentials.h>
+#include <pte_types.h>
+
+int epoll_create(int size __unused)
+{
+ return 0;
+}
+
+int epoll_ctl(int epfd __unused, int op __unused, int fd __unused, struct
epoll_event *event __unused)
+{
+ return 0;
+}
+
+int epoll_wait(int epfd __unused, struct epoll_event *events __unused, int
maxevents __unused, int timeout __unused)
+{
+ return 0;
+}
+
+int madvise(void *addr __unused, size_t length __unused, int advice __unused)
+{
+ return 0;
+}
+
+int mincore(void *addr __unused, size_t length __unused, unsigned char *vec
__unused)
+{
+ return 0;
+}
+
+int prctl(int option __unused, unsigned long arg2 __unused, unsigned long arg3
__unused, unsigned long arg4 __unused, unsigned long arg5 __unused)
+{
+ return 0;
+}
+
+int pthread_sigmask(int how __unused, const sigset_t *set __unused, sigset_t
*oldset __unused)
+{
+ return 0;
+}
+
+long ptrace(void)
+{
+ return 0;
+}
+
+int reboot(int magic __unused, int magic2 __unused, int cmd __unused, void
*arg __unused)
+{
+ return 0;
+}
+
+int sched_getaffinity(void)
+{
+ return 0;
+}
+
+int setitimer(int which __unused, const struct itimerval *new_value __unused,
struct itimerval *old_value __unused)
+{
+ return 0;
+}
+
+int settimeofday(const struct timeval *tv __unused, const struct timezone *tz
__unused)
+{
+ return 0;
+}
+
+#undef sigaddset
+int sigaddset(sigset_t *set __unused, int signum __unused)
+{
+ return 0;
+}
+
+int sigaltstack(const stack_t *ss __unused, stack_t *old_ss __unused)
+{
+ return 0;
+}
+
+#undef sigdelset
+int sigdelset(sigset_t *set __unused, int signum __unused)
+{
+ return 0;
+}
+
+#undef sigemptyset
+int sigemptyset(sigset_t *set __unused)
+{
+ return 0;
+}
+
+#undef sigfillset
+int sigfillset(sigset_t *set __unused)
+{
+ return 0;
+}
+
+long syscall(long number __unused, ...)
+{
+ return 0;
+}
+
+ssize_t sendfile64(int out_fd __unused, int in_fd __unused, off_t *offset
__unused, size_t count __unused)
+{
+ return 1;
+}
+
+int getgrouplist(const char *user __unused, gid_t group __unused, gid_t
*groups __unused, int *ngroups __unused)
+{
+ return 0;
+}
+
+int getgrnam_r(const char *name __unused, struct group *grp __unused,
+ char *buf __unused, size_t buflen __unused, struct group
**result __unused)
+{
+ return 0;
+}
+int getgrgid_r(gid_t gid __unused, struct group *grp __unused,
+ char *buf __unused, size_t buflen __unused, struct group
**result __unused)
+{
+ return 0;
+}
+
+void uk_syscall_fn___NR_clone(void)
+{
+}
+
+/*
+ * Glue code
+ */
+
+#include <ucontext.h>
+#include <uk/sched.h>
+#include <uk/thread.h>
+#include <uk/asm/limits.h>
+
+#define __errno_location __errno
+
+void makecontext1 (ucontext_t *__ucp, void (*__func) (void), int __argc, ...)
+{
+ struct uk_thread *current = uk_thread_current();
+ *((unsigned long *) __ucp->uc_stack.ss_sp) = (unsigned long) current;
+ makecontext(__ucp, __func, __argc);
+}
+
+void *alloc_stack()
+{
+ struct uk_sched *sched = uk_sched_get_default();
+ void *stack = uk_palloc(sched->allocator, __STACK_SIZE_PAGE_ORDER);
+ if (stack == NULL)
+ printf("error allocating stack\n");
+ return stack;
+}
+
+size_t get_stack_size(void)
+{
+ return __STACK_SIZE;
+}
+
--
2.17.1
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |