[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Minios-devel] [UNIKRAFT/LIBGO PATCH 02/11] Add Makefile.uk



This patch also adds the generated config.h and runtime.inc headers.
Another option would have been to generate them during the build.

Signed-off-by: Charalampos Mainas <Charalampos.Mainas@xxxxxxxxx>
Signed-off-by: Costin Lupu <costin.lupu@xxxxxxxxx>
---
 Makefile.uk                   | 167 ++++++
 generated/include/config.h    | 415 ++++++++++++++
 generated/include/runtime.inc | 988 ++++++++++++++++++++++++++++++++++
 include/mm_malloc.h           |   0
 4 files changed, 1570 insertions(+)
 create mode 100644 Makefile.uk
 create mode 100644 generated/include/config.h
 create mode 100644 generated/include/runtime.inc
 create mode 100644 include/mm_malloc.h

diff --git a/Makefile.uk b/Makefile.uk
new file mode 100644
index 0000000..42eefb1
--- /dev/null
+++ b/Makefile.uk
@@ -0,0 +1,167 @@
+#  SPDX-License-Identifier: BSD-3-Clause
+#
+#  libgo Makefile.uk
+#
+#  Authors: Charalampos Mainas <charalampos.mainas@xxxxxxxxx>
+#           Costin Lupu <costin.lupu@xxxxxxxxx>
+#
+#  Copyright (c) 2019, NEC Europe Ltd., NEC Corporation
+#                2019, University Politehnica of Bucharest
+#
+#  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.
+#
+
+################################################################################
+# Library registration
+################################################################################
+$(eval $(call addlib_s,libgo,$(CONFIG_LIBGO)))
+
+################################################################################
+# Original sources
+################################################################################
+LIBGCC_VERSION=7.3.0
+LIBGCC_URL=https://ftp.gnu.org/gnu/gcc/gcc-$(LIBGCC_VERSION)/gcc-$(LIBGCC_VERSION).tar.gz
+LIBGO_PATCHDIR=$(LIBGO_BASE)/patches
+LIBGCC_SUBDIR=gcc-$(LIBGCC_VERSION)
+## Patch gcc sources with libgo patches
+$(eval $(call patch,libgcc,$(LIBGO_PATCHDIR),$(LIBGCC_SUBDIR)))
+
+################################################################################
+# Helpers
+################################################################################
+LIBGCC_EXTRACTED = $(LIBGCC_ORIGIN)/gcc-$(LIBGCC_VERSION)
+LIBGO_EXTRACTED = $(LIBGCC_EXTRACTED)/libgo
+
+################################################################################
+# Library includes
+################################################################################
+LIBGO_COMMON_INCLUDES-y = -I$(LIBGO_BASE)/include 
-I$(LIBGO_BASE)/generated/include \
+       -I$(LIBGO_EXTRACTED) -I$(LIBGO_EXTRACTED)/runtime \
+       -I$(LIBGCC_EXTRACTED)/libffi/include -I$(LIBGCC_BASE)/libffi/include \
+       -I$(LIBGCC_EXTRACTED)/libgcc \
+       -I$(LIBBACKTRACE_EXTRACTED) \
+       -I$(LIBGCC_EXTRACTED)/gcc/include
+LIBGO_COMMON_INCLUDES-$(CONFIG_ARCH_X86_64) += -I$(LIBFFI_EXTRACTED)/src/x86
+LIBGO_COMMON_INCLUDES-$(CONFIG_ARCH_X86_64) += 
-I$(LIBGCC_EXTRACTED)/gcc/config/i386
+LIBGO_ASINCLUDES-y = $(LIBGO_COMMON_INCLUDES-y)
+LIBGO_CINCLUDES-y  = $(LIBGO_COMMON_INCLUDES-y)
+
+
+################################################################################
+# Global flags
+################################################################################
+LIBGO_CFLAGS-y += -DHAVE_CONFIG_H -D_INCLUDE_MALLOC_H_ \
+       -fexceptions -fnon-call-exceptions -fplan9-extensions -fno-split-stack \
+       -Wall -Wextra -Wwrite-strings -Wcast-qual -Wno-unused-function \
+       -minline-all-stringops -Wno-implicit-function-declaration \
+       -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+LIBGO_CFLAGS-y += -Wno-cast-qual -Wno-unused-value
+
+################################################################################
+# libgo code
+################################################################################
+
+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
+LIBGO_SRCS-y += 
$(LIBGO_EXTRACTED)/go/runtime/internal/atomic/atomic.c|runtime.internal
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/go/strings/indexbyte.c|strings
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/go/sync/atomic/atomic.c|sync
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/go/syscall/clone_linux.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/go/syscall/errno.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/go/syscall/signame.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/go/syscall/wait.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/aeshash.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/env_posix.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/getncpu-linux.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-assert.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-breakpoint.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-caller.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-callers.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-cdiv.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-cgo.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-construct-map.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-ffi.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-fieldtrack.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-matherr.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-memclr.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-memcmp.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-memequal.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-memmove.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-nanotime.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-new.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-nosys.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-now.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-reflect-call.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-runtime-error.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-setenv.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-signal.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-strslice.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-typedesc-equal.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-unsafe-newarray.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-unsafe-new.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-unsafe-pointer.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-unsetenv.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-unwind.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-varargs.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/heapdump.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/mcache.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/mcentral.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/mem.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/mfixalloc.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/mgc0.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/mheap.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/msize.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/panic.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/parfor.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/print.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/proc.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/runtime_c.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/thread.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/thread-linux.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/yield.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/runtime/go-main.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/sysinfo.c
+LIBGO_SRCS-y += $(LIBGO_EXTRACTED)/malloc.c # generated
+
+# Generate go2c tool
+$(LIBGO_BUILD)/goc2c: $(LIBGCC_BUILD)/.patched
+       $(call verbose_cmd,GEN,libgo: $(notdir $@), \
+               cd $(LIBGO_EXTRACTED) && gcc -o $@ 
$(LIBGO_EXTRACTED)/runtime/goc2c.c)
+
+# Generate malloc.c
+$(LIBGO_EXTRACTED)/malloc.c: $(LIBGO_EXTRACTED)/runtime/malloc.goc 
$(LIBGO_BUILD)/goc2c
+       $(call verbose_cmd,GEN,libgo: $(notdir $@), \
+               cd $(LIBGO_EXTRACTED) && $(LIBGO_BUILD)/goc2c $< > $@)
+
+UK_PREPARE += $(LIBGO_BUILD)/goc2c $(LIBGO_EXTRACTED)/malloc.c
+
+# Go packages
+LIBGO_GOFLAGS-y += -minline-all-stringops -fno-split-stack
+LIBGO_GOFLAGS-y += -I$(LIBGO_BUILD)
+LIBGO_GOFLAGS = $(LIBGO_GOFLAGS-y)
diff --git a/generated/include/config.h b/generated/include/config.h
new file mode 100644
index 0000000..7c473f2
--- /dev/null
+++ b/generated/include/config.h
@@ -0,0 +1,415 @@
+/* config.h.  Generated from config.h.in by configure.  */
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define if building universal (internal helper macro) */
+/* #undef AC_APPLE_UNIVERSAL_BUILD */
+
+/* Define to the flags needed for the .section .eh_frame directive. */
+#define EH_FRAME_FLAGS "aw"
+
+/* Define to 1 if you have the `accept4' function. */
+//#define HAVE_ACCEPT4 1
+
+/* Define to 1 if you have the `acosl' function. */
+#define HAVE_ACOSL 1
+
+/* Define to 1 if you have the `asinl' function. */
+#define HAVE_ASINL 1
+
+/* Define if your assembler supports GNU comdat group syntax. */
+#define HAVE_AS_COMDAT_GAS 1
+
+/* Define if your assembler supports unwind section type. */
+#define HAVE_AS_X86_64_UNWIND_SECTION_TYPE 1
+
+/* Define if your assembler supports AES instructions. */
+//#define HAVE_AS_X86_AES 1
+
+/* Define if your assembler supports PC relative relocs. */
+#define HAVE_AS_X86_PCREL 1
+
+/* Define to 1 if you have the `atan2l' function. */
+#define HAVE_ATAN2L 1
+
+/* Define to 1 if you have the `atanl' function. */
+#define HAVE_ATANL 1
+
+/* Define to 1 if you have the `cosl' function. */
+#define HAVE_COSL 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the `dl_iterate_phdr' function. */
+#define HAVE_DL_ITERATE_PHDR 1
+
+/* Define to 1 if you have the `dup3' function. */
+#define HAVE_DUP3 1
+
+/* Define to 1 if you have the `epoll_create1' function. */
+//#define HAVE_EPOLL_CREATE1 1
+
+/* Define to 1 if you have the `expl' function. */
+#define HAVE_EXPL 1
+
+/* Define to 1 if you have the `expm1l' function. */
+#define HAVE_EXPM1L 1
+
+/* Define to 1 if you have the `faccessat' function. */
+#define HAVE_FACCESSAT 1
+
+/* Define to 1 if you have the `fallocate' function. */
+#define HAVE_FALLOCATE 1
+
+/* Define to 1 if you have the `fchmodat' function. */
+#define HAVE_FCHMODAT 1
+
+/* Define to 1 if you have the `fchownat' function. */
+//#define HAVE_FCHOWNAT 1
+
+/* Define to 1 if you have the `futimesat' function. */
+//#define HAVE_FUTIMESAT 1
+
+/* Define if _Unwind_GetIPInfo is available. */
+#define HAVE_GETIPINFO 1
+
+/* Define to 1 if you have the `getxattr' function. */
+//#define HAVE_GETXATTR 1
+
+/* Define to 1 if you have the `inotify_add_watch' function. */
+#define HAVE_INOTIFY_ADD_WATCH 1
+
+/* Define to 1 if you have the `inotify_init' function. */
+#define HAVE_INOTIFY_INIT 1
+
+/* Define to 1 if you have the `inotify_init1' function. */
+#define HAVE_INOTIFY_INIT1 1
+
+/* Define to 1 if you have the `inotify_rm_watch' function. */
+#define HAVE_INOTIFY_RM_WATCH 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `ldexpl' function. */
+#define HAVE_LDEXPL 1
+
+/* Define to 1 if you have the <linux/ether.h> header file. */
+/* #undef HAVE_LINUX_ETHER_H */
+
+/* Define to 1 if you have the <linux/filter.h> header file. */
+//#define HAVE_LINUX_FILTER_H 1
+
+/* Define to 1 if you have the <linux/fs.h> header file. */
+//#define HAVE_LINUX_FS_H 1
+
+/* Define to 1 if you have the <linux/if_addr.h> header file. */
+//#define HAVE_LINUX_IF_ADDR_H 1
+
+/* Define to 1 if you have the <linux/if_ether.h> header file. */
+//#define HAVE_LINUX_IF_ETHER_H 1
+
+/* Define to 1 if you have the <linux/if_tun.h> header file. */
+//#define HAVE_LINUX_IF_TUN_H 1
+
+/* Define to 1 if you have the <linux/netlink.h> header file. */
+//#define HAVE_LINUX_NETLINK_H 1
+
+/* Define to 1 if you have the <linux/ptrace.h> header file. */
+//#define HAVE_LINUX_PTRACE_H 1
+
+/* Define to 1 if you have the <linux/reboot.h> header file. */
+//#define HAVE_LINUX_REBOOT_H 1
+
+/* Define to 1 if you have the <linux/rtnetlink.h> header file. */
+//#define HAVE_LINUX_RTNETLINK_H 1
+
+/* Define to 1 if you have the `listxattr' function. */
+//#define HAVE_LISTXATTR 1
+
+/* Define to 1 if the system has the type `loff_t'. */
+#define HAVE_LOFF_T 1
+
+/* Define to 1 if you have the `log10l' function. */
+#define HAVE_LOG10L 1
+
+/* Define to 1 if you have the `log1pl' function. */
+#define HAVE_LOG1PL 1
+
+/* Define to 1 if you have the `logl' function. */
+#define HAVE_LOGL 1
+
+/* Define to 1 if you have the `matherr' function. */
+/* #undef HAVE_MATHERR */
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `mincore' function. */
+//#define HAVE_MINCORE 1
+
+/* Define to 1 if you have the `mkdirat' function. */
+//#define HAVE_MKDIRAT 1
+
+/* Define to 1 if you have the `mknodat' function. */
+//#define HAVE_MKNODAT 1
+
+/* Define to 1 if you have the <netinet/icmp6.h> header file. */
+//#define HAVE_NETINET_ICMP6_H 1
+
+/* Define to 1 if you have the <netinet/if_ether.h> header file. */
+//#define HAVE_NETINET_IF_ETHER_H 1
+
+/* Define to 1 if you have the <netinet/in_syst.h> header file. */
+/* #undef HAVE_NETINET_IN_SYST_H */
+
+/* Define to 1 if you have the <netinet/ip.h> header file. */
+//#define HAVE_NETINET_IP_H 1
+
+/* Define to 1 if you have the <netinet/ip_mroute.h> header file. */
+/* #undef HAVE_NETINET_IP_MROUTE_H */
+
+/* Define to 1 if you have the <netpacket/packet.h> header file. */
+//#define HAVE_NETPACKET_PACKET_H 1
+
+/* Define to 1 if you have the <net/if_arp.h> header file. */
+//#define HAVE_NET_IF_ARP_H 1
+
+/* Define to 1 if you have the <net/if.h> header file. */
+//#define HAVE_NET_IF_H 1
+
+/* Define to 1 if you have the <net/route.h> header file. */
+//#define HAVE_NET_ROUTE_H 1
+
+/* Define to 1 if the system has the type `off64_t'. */
+#define HAVE_OFF64_T 1
+
+/* Define to 1 if you have the `open64' function. */
+#define HAVE_OPEN64 1
+
+/* Define to 1 if you have the `openat' function. */
+#define HAVE_OPENAT 1
+
+/* Define to 1 if you have the `pipe2' function. */
+//#define HAVE_PIPE2 1
+
+/* Define to 1 if you have the <port.h> header file. */
+/* #undef HAVE_PORT_H */
+
+/* Define to 1 if you have the `removexattr' function. */
+//#define HAVE_REMOVEXATTR 1
+
+/* Define to 1 if you have the `renameat' function. */
+//#define HAVE_RENAMEAT 1
+
+/* Define to 1 if you have the <sched.h> header file. */
+#define HAVE_SCHED_H 1
+
+/* Define to 1 if you have the <semaphore.h> header file. */
+#define HAVE_SEMAPHORE_H 1
+
+/* Define to 1 if you have the `sem_timedwait' function. */
+#define HAVE_SEM_TIMEDWAIT 1
+
+/* Define to 1 if you have the `setenv' function. */
+#define HAVE_SETENV 1
+
+/* Define to 1 if you have the `setxattr' function. */
+#define HAVE_SETXATTR 1
+
+/* Define to 1 if you have the `sinl' function. */
+#define HAVE_SINL 1
+
+/* Define to 1 if you have the `splice' function. */
+//#define HAVE_SPLICE 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strerror_r' function. */
+#define HAVE_STRERROR_R 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strsignal' function. */
+#define HAVE_STRSIGNAL 1
+
+/* Define to 1 if <math.h> defines struct exception */
+/* #undef HAVE_STRUCT_EXCEPTION */
+
+/* Define to 1 if the compiler provides the __sync_add_and_fetch function for
+   uint64 */
+#define HAVE_SYNC_ADD_AND_FETCH_8 1
+
+/* Define to 1 if the compiler provides the __sync_bool_compare_and_swap
+   function for uint32 */
+#define HAVE_SYNC_BOOL_COMPARE_AND_SWAP_4 1
+
+/* Define to 1 if the compiler provides the __sync_bool_compare_and_swap
+   function for uint64 */
+#define HAVE_SYNC_BOOL_COMPARE_AND_SWAP_8 1
+
+/* Define to 1 if the compiler provides the __sync_fetch_and_add function for
+   uint32 */
+#define HAVE_SYNC_FETCH_AND_ADD_4 1
+
+/* Define to 1 if you have the `sync_file_range' function. */
+#define HAVE_SYNC_FILE_RANGE 1
+
+/* Define to 1 if you have the <syscall.h> header file. */
+#define HAVE_SYSCALL_H 1
+
+/* Define to 1 if you have the <sys/epoll.h> header file. */
+//#define HAVE_SYS_EPOLL_H 1
+
+/* Define to 1 if you have the <sys/event.h> header file. */
+/* #undef HAVE_SYS_EVENT_H */
+
+/* Define to 1 if you have the <sys/file.h> header file. */
+//#define HAVE_SYS_FILE_H 1
+
+/* Define to 1 if you have the <sys/inotify.h> header file. */
+//#define HAVE_SYS_INOTIFY_H 1
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#define HAVE_SYS_MMAN_H 1
+
+/* Define to 1 if you have the <sys/mount.h> header file. */
+#define HAVE_SYS_MOUNT_H 1
+
+/* Define to 1 if you have the <sys/prctl.h> header file. */
+#define HAVE_SYS_PRCTL_H 1
+
+/* Define to 1 if you have the <sys/ptrace.h> header file. */
+#define HAVE_SYS_PTRACE_H 1
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/statfs.h> header file. */
+#define HAVE_SYS_STATFS_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/syscall.h> header file. */
+#define HAVE_SYS_SYSCALL_H 1
+
+/* Define to 1 if you have the <sys/sysinfo.h> header file. */
+//#define HAVE_SYS_SYSINFO_H 1
+
+/* Define to 1 if you have the <sys/timex.h> header file. */
+//#define HAVE_SYS_TIMEX_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/user.h> header file. */
+#define HAVE_SYS_USER_H 1
+
+/* Define to 1 if you have the <sys/utsname.h> header file. */
+#define HAVE_SYS_UTSNAME_H 1
+
+/* Define to 1 if you have the <sys/vfs.h> header file. */
+//#define HAVE_SYS_VFS_H 1
+
+/* Define to 1 if you have the `tanl' function. */
+#define HAVE_TANL 1
+
+/* Define to 1 if you have the `tee' function. */
+//#define HAVE_TEE 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `unlinkat' function. */
+//#define HAVE_UNLINKAT 1
+
+/* Define to 1 if you have the `unsetenv' function. */
+#define HAVE_UNSETENV 1
+
+/* Define to 1 if you have the `unshare' function. */
+//#define HAVE_UNSHARE 1
+
+/* Define to 1 if you have the <ustat.h> header file and it works. */
+/* #undef HAVE_USTAT_H */
+
+/* Define to 1 if you have the `utimensat' function. */
+//#define HAVE_UTIMENSAT 1
+
+/* Define to 1 if you have the <utime.h> header file. */
+#define HAVE_UTIME_H 1
+
+/* Define to 1 if you have the `wait4' function. */
+#define HAVE_WAIT4 1
+
+/* Define if the linker support split stack adjustments */
+/* #undef LINKER_SUPPORTS_SPLIT_STACK */
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#define LT_OBJDIR ".libs/"
+
+/* Name of package */
+/* #undef PACKAGE */
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "package-unused"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "package-unused version-unused"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "libgo"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "version-unused"
+
+/* Define if setcontext clobbers TLS variables */
+/* #undef SETCONTEXT_CLOBBERS_TLS */
+
+/* The size of `void *', as computed by sizeof. */
+#define SIZEOF_VOID_P 8
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define if we're to use libffi. */
+#define USE_LIBFFI 1
+
+/* Define if the compiler supports -fsplit-stack */
+//#define USING_SPLIT_STACK 1
+
+/* Version number of package */
+/* #undef VERSION */
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+/* #  undef WORDS_BIGENDIAN */
+# endif
+#endif
+
+/* Define to `long int' if <sys/types.h> does not define. */
+/* #undef off_t */
diff --git a/generated/include/runtime.inc b/generated/include/runtime.inc
new file mode 100644
index 0000000..9866e41
--- /dev/null
+++ b/generated/include/runtime.inc
@@ -0,0 +1,988 @@
+#define hashRandomBytes 128
+#define maxAlign 8
+#define hchanSize 96
+#define numBuckets 1024
+#define logSize 131072
+#define assoc 4
+#define maxCPUProfStack 64
+#define bucketCntBits 3
+#define bucketCnt 8
+#define maxKeySize 128
+#define maxValueSize 128
+#define dataOffset 8
+#define empty 0
+#define evacuatedEmpty 1
+#define evacuatedX 2
+#define evacuatedY 3
+#define minTopHash 4
+#define iterator 1
+#define oldIterator 2
+#define hashWriting 4
+#define sameSizeGrow 8
+#define noCheck 18446744073709551615
+#define maxZero 1024
+#define addrBits 48
+#define cntBits 19
+#define mutex_unlocked 0
+#define mutex_locked 1
+#define mutex_sleeping 2
+#define active_spin 4
+#define active_spin_cnt 30
+#define passive_spin 1
+#define memProfile 1
+#define blockProfile 2
+#define mutexProfile 3
+#define buckHashSize 179999
+#define maxStack 32
+#define pdReady 1
+#define pdWait 2
+#define pollBlockSize 4096
+#define freezeStopWait 2147483647
+#define forcePreemptNS 10000000
+#define tracebackCrash 1
+#define tracebackAll 2
+#define tracebackShift 2
+#define caseRecv 1
+#define caseSend 2
+#define caseDefault 3
+#define $sinkconst0 0
+#define selectSend 1
+#define selectRecv 2
+#define selectDefault 3
+#define semTabSize 251
+#define semaBlockProfile 1
+#define semaMutexProfile 2
+#define sigIdle 0
+#define sigReceiving 1
+#define sigSending 2
+#define smallSizeDiv 8
+#define smallSizeMax 1024
+#define largeSizeDiv 128
+#define tmpStringBufSize 32
+#define maxUint 18446744073709551615
+#define maxInt 9223372036854775807
+#define gcMarkWorkerDedicatedMode 0
+#define gcMarkWorkerFractionalMode 1
+#define gcMarkWorkerIdleMode 2
+#define traceEvNone 0
+#define traceEvBatch 1
+#define traceEvFrequency 2
+#define traceEvStack 3
+#define traceEvGomaxprocs 4
+#define traceEvProcStart 5
+#define traceEvProcStop 6
+#define traceEvGCStart 7
+#define traceEvGCDone 8
+#define traceEvGCScanStart 9
+#define traceEvGCScanDone 10
+#define traceEvGCSweepStart 11
+#define traceEvGCSweepDone 12
+#define traceEvGoCreate 13
+#define traceEvGoStart 14
+#define traceEvGoEnd 15
+#define traceEvGoStop 16
+#define traceEvGoSched 17
+#define traceEvGoPreempt 18
+#define traceEvGoSleep 19
+#define traceEvGoBlock 20
+#define traceEvGoUnblock 21
+#define traceEvGoBlockSend 22
+#define traceEvGoBlockRecv 23
+#define traceEvGoBlockSelect 24
+#define traceEvGoBlockSync 25
+#define traceEvGoBlockCond 26
+#define traceEvGoBlockNet 27
+#define traceEvGoSysCall 28
+#define traceEvGoSysExit 29
+#define traceEvGoSysBlock 30
+#define traceEvGoWaiting 31
+#define traceEvGoInSyscall 32
+#define traceEvHeapAlloc 33
+#define traceEvNextGC 34
+#define traceEvTimerGoroutine 35
+#define traceEvFutileWakeup 36
+#define traceEvString 37
+#define traceEvGoStartLocal 38
+#define traceEvGoUnblockLocal 39
+#define traceEvGoSysExitLocal 40
+#define traceEvGoStartLabel 41
+#define traceEvGoBlockGC 42
+#define traceEvCount 43
+#define traceTickDiv 64
+#define traceStackSize 128
+#define traceBytesPerNumber 10
+#define traceArgCountShift 6
+#define traceFutileWakeup 128
+#define kindBool 1
+#define kindInt 2
+#define kindInt8 3
+#define kindInt16 4
+#define kindInt32 5
+#define kindInt64 6
+#define kindUint 7
+#define kindUint8 8
+#define kindUint16 9
+#define kindUint32 10
+#define kindUint64 11
+#define kindUintptr 12
+#define kindFloat32 13
+#define kindFloat64 14
+#define kindComplex64 15
+#define kindComplex128 16
+#define kindArray 17
+#define kindChan 18
+#define kindFunc 19
+#define kindInterface 20
+#define kindMap 21
+#define kindPtr 22
+#define kindSlice 23
+#define kindString 24
+#define kindStruct 25
+#define kindUnsafePointer 26
+#define kindDirectIface 32
+#define kindGCProg 64
+#define kindNoPointers 128
+#define kindMask 31
+#define runeError 65533
+#define runeSelf 128
+#define maxRune 1114111
+#define surrogateMin 55296
+#define surrogateMax 57343
+#define t1 0
+#define tx 128
+#define t2 192
+#define t3 224
+#define t4 240
+#define t5 248
+#define maskx 63
+#define mask2 31
+#define mask3 15
+#define mask4 7
+#define rune1Max 127
+#define rune2Max 2047
+#define rune3Max 65535
+#define locb 128
+#define hicb 191
+
+struct sudog;
+
+struct waitq {
+       struct sudog* first;
+       struct sudog* last;
+};
+
+struct cpuprofEntry {
+       uintptr_t count;
+       int64_t depth;
+       uintptr_t stack[64];
+};
+
+struct TypeAssertionError {
+       String interfaceString;
+       String concreteString;
+       String assertedString;
+       String missingMethod;
+};
+
+struct errorCString {
+       uintptr_t cstr;
+};
+
+struct bmap {
+       uint8_t tophash[8];
+};
+
+struct hiter {
+       void* key;
+       void* value;
+       void* t;
+       void* h;
+       void* buckets;
+       struct bmap* bptr;
+       Slice* overflow[2];
+       uintptr_t startBucket;
+       uint8_t offset;
+       _Bool wrapped;
+       uint8_t B;
+       uint8_t i;
+       uintptr_t bucket;
+       uintptr_t checkBucket;
+};
+
+struct mlink;
+
+struct mcachelist {
+       struct mlink* list;
+       uint32_t nlist;
+};
+
+struct mspan;
+
+struct mcache {
+       int32_t next_sample;
+       uintptr_t local_cachealloc;
+       void* tiny;
+       uintptr_t tinysize;
+       struct mspan* alloc[67];
+       struct mcachelist free[67];
+       uintptr_t local_nlookup;
+       uintptr_t local_largefree;
+       uintptr_t local_nlargefree;
+       uintptr_t local_nsmallfree[67];
+};
+
+struct mtypes {
+       uint8_t compression;
+       uintptr_t data;
+};
+
+struct special {
+       struct special* next;
+       uint16_t offset;
+       uint8_t kind;
+};
+
+struct mlink {
+       struct mlink* next;
+};
+
+struct bucket {
+       struct bucket* next;
+       struct bucket* allnext;
+       int64_t typ;
+       uintptr_t hash;
+       uintptr_t size;
+       uintptr_t nstk;
+};
+
+struct memRecord {
+       uintptr_t allocs;
+       uintptr_t frees;
+       uintptr_t alloc_bytes;
+       uintptr_t free_bytes;
+       uintptr_t prev_allocs;
+       uintptr_t prev_frees;
+       uintptr_t prev_alloc_bytes;
+       uintptr_t prev_free_bytes;
+       uintptr_t recent_allocs;
+       uintptr_t recent_frees;
+       uintptr_t recent_alloc_bytes;
+       uintptr_t recent_free_bytes;
+};
+
+struct blockRecord {
+       int64_t count;
+       int64_t cycles;
+};
+
+struct StackRecord {
+       uintptr_t Stack0[32];
+};
+
+struct MemProfileRecord {
+       int64_t AllocBytes;
+       int64_t FreeBytes;
+       int64_t AllocObjects;
+       int64_t FreeObjects;
+       uintptr_t Stack0[32];
+};
+
+struct mstats {
+       uint64_t alloc;
+       uint64_t total_alloc;
+       uint64_t sys;
+       uint64_t nlookup;
+       uint64_t nmalloc;
+       uint64_t nfree;
+       uint64_t heap_alloc;
+       uint64_t heap_sys;
+       uint64_t heap_idle;
+       uint64_t heap_inuse;
+       uint64_t heap_released;
+       uint64_t heap_objects;
+       uint64_t stacks_inuse;
+       uint64_t stacks_sys;
+       uint64_t mspan_inuse;
+       uint64_t mspan_sys;
+       uint64_t mcache_inuse;
+       uint64_t mcache_sys;
+       uint64_t buckhash_sys;
+       uint64_t gc_sys;
+       uint64_t other_sys;
+       uint64_t next_gc;
+       uint64_t last_gc;
+       uint64_t pause_total_ns;
+       uint64_t pause_ns[256];
+       uint64_t pause_end[256];
+       uint32_t numgc;
+       uint32_t numforcedgc;
+       double gc_cpu_fraction;
+       _Bool enablegc;
+       _Bool debuggc;
+       struct {
+       uint32_t size;
+       uint64_t nmalloc;
+       uint64_t nfree;
+       } by_size[67];
+       uint64_t tinyallocs;
+       uint64_t gc_trigger;
+       uint64_t heap_live;
+       uint64_t heap_scan;
+       uint64_t heap_marked;
+};
+
+struct MemStats {
+       uint64_t Alloc;
+       uint64_t TotalAlloc;
+       uint64_t Sys;
+       uint64_t Lookups;
+       uint64_t Mallocs;
+       uint64_t Frees;
+       uint64_t HeapAlloc;
+       uint64_t HeapSys;
+       uint64_t HeapIdle;
+       uint64_t HeapInuse;
+       uint64_t HeapReleased;
+       uint64_t HeapObjects;
+       uint64_t StackInuse;
+       uint64_t StackSys;
+       uint64_t MSpanInuse;
+       uint64_t MSpanSys;
+       uint64_t MCacheInuse;
+       uint64_t MCacheSys;
+       uint64_t BuckHashSys;
+       uint64_t GCSys;
+       uint64_t OtherSys;
+       uint64_t NextGC;
+       uint64_t LastGC;
+       uint64_t PauseTotalNs;
+       uint64_t PauseNs[256];
+       uint64_t PauseEnd[256];
+       uint32_t NumGC;
+       uint32_t NumForcedGC;
+       double GCCPUFraction;
+       _Bool EnableGC;
+       _Bool DebugGC;
+       struct {
+       uint32_t Size;
+       uint64_t Mallocs;
+       uint64_t Frees;
+       } BySize[61];
+};
+
+struct mOS {
+       uint8_t unused;
+};
+
+struct randomOrder {
+       uint32_t count;
+       Slice coprimes;
+};
+
+struct randomEnum {
+       uint32_t i;
+       uint32_t count;
+       uint32_t pos;
+       uint32_t inc;
+};
+
+struct dbgVar {
+       String name;
+       int32_t* value;
+};
+
+struct debugVars {
+       int32_t allocfreetrace;
+       int32_t cgocheck;
+       int32_t efence;
+       int32_t gccheckmark;
+       int32_t gcpacertrace;
+       int32_t gcshrinkstackoff;
+       int32_t gcstackbarrieroff;
+       int32_t gcstackbarrierall;
+       int32_t gcrescanstacks;
+       int32_t gcstoptheworld;
+       int32_t gctrace;
+       int32_t invalidptr;
+       int32_t sbrk;
+       int32_t scavenge;
+       int32_t scheddetail;
+       int32_t schedtrace;
+       int32_t wbshadow;
+};
+
+struct mutex {
+       uintptr_t key;
+};
+
+struct note {
+       uintptr_t key;
+};
+
+struct funcval {
+       uintptr_t fn;
+};
+
+struct iface {
+       void* tab;
+       void* data;
+};
+
+struct eface {
+       void* _type;
+       void* data;
+};
+
+struct g;
+
+struct hchan;
+
+struct sudog {
+       struct g* g;
+       uint32_t* selectdone;
+       struct sudog* next;
+       struct sudog* prev;
+       void* elem;
+       int64_t acquiretime;
+       int64_t releasetime;
+       uint32_t ticket;
+       struct sudog* waitlink;
+       struct hchan* c;
+};
+
+struct gcstats {
+       uint64_t nhandoff;
+       uint64_t nhandoffcnt;
+       uint64_t nprocyield;
+       uint64_t nosyield;
+       uint64_t nsleep;
+};
+
+struct _panic;
+
+struct _defer;
+
+struct m;
+
+struct tracebackg;
+
+struct g {
+       struct _panic* _panic;
+       struct _defer* _defer;
+       struct m* m;
+       uintptr_t syscallsp;
+       uintptr_t syscallpc;
+       void* param;
+       uint32_t atomicstatus;
+       int64_t goid;
+       int64_t waitsince;
+       String waitreason;
+       uint64_t schedlink;
+       _Bool preempt;
+       _Bool paniconfault;
+       _Bool preemptscan;
+       _Bool gcscandone;
+       _Bool gcscanvalid;
+       _Bool throwsplit;
+       int8_t raceignore;
+       _Bool sysblocktraced;
+       int64_t sysexitticks;
+       uint64_t traceseq;
+       uint64_t tracelastp;
+       struct m* lockedm;
+       uint32_t sig;
+       Slice writebuf;
+       uintptr_t sigcode0;
+       uintptr_t sigcode1;
+       uintptr_t sigpc;
+       uintptr_t gopc;
+       uintptr_t startpc;
+       struct sudog* waiting;
+       int32_t gcRescan;
+       int64_t gcAssistBytes;
+       void* exception;
+       _Bool isforeign;
+       void* gcstack;
+       uintptr_t gcstacksize;
+       void* gcnextsegment;
+       void* gcnextsp;
+       void* gcinitialsp;
+       void* gcregs[122];
+       void* entry;
+       _Bool fromgogo;
+       _Bool issystem;
+       _Bool isbackground;
+       struct tracebackg* traceback;
+       void* context[122];
+       void* stackcontext[10];
+};
+
+struct p {
+       struct mutex lock;
+       int32_t id;
+       uint32_t status;
+       uint64_t link;
+       uint32_t schedtick;
+       uint32_t syscalltick;
+       uint64_t m;
+       struct mcache* mcache;
+       Slice deferpool;
+       struct _defer* deferpoolbuf[32];
+       uint64_t goidcache;
+       uint64_t goidcacheend;
+       uint32_t runqhead;
+       uint32_t runqtail;
+       uint64_t runq[256];
+       uint64_t runnext;
+       struct g* gfree;
+       int32_t gfreecnt;
+       Slice sudogcache;
+       struct sudog* sudogbuf[128];
+       uint64_t tracebuf;
+       int64_t gcAssistTime;
+       uint64_t gcBgMarkWorker;
+       int64_t gcMarkWorkerMode;
+       uint32_t runSafePointFn;
+       uint8_t pad[64];
+};
+
+struct schedt {
+       uint64_t goidgen;
+       uint64_t lastpoll;
+       struct mutex lock;
+       uint64_t midle;
+       int32_t nmidle;
+       int32_t nmidlelocked;
+       int32_t mcount;
+       int32_t maxmcount;
+       uint32_t ngsys;
+       uint64_t pidle;
+       uint32_t npidle;
+       uint32_t nmspinning;
+       uint64_t runqhead;
+       uint64_t runqtail;
+       int32_t runqsize;
+       struct mutex gflock;
+       struct g* gfree;
+       int32_t ngfree;
+       struct mutex sudoglock;
+       struct sudog* sudogcache;
+       struct mutex deferlock;
+       struct _defer* deferpool;
+       uint32_t gcwaiting;
+       int32_t stopwait;
+       struct note stopnote;
+       uint32_t sysmonwait;
+       struct note sysmonnote;
+       FuncVal* safePointFn;
+       int32_t safePointWait;
+       struct note safePointNote;
+       int32_t profilehz;
+       int64_t procresizetime;
+       int64_t totaltime;
+};
+
+struct lfnode {
+       uint64_t next;
+       uintptr_t pushcnt;
+};
+
+struct forcegcstate {
+       struct mutex lock;
+       struct g* g;
+       uint32_t idle;
+};
+
+struct _defer {
+       struct _defer* link;
+       _Bool* frame;
+       struct _panic* _panic;
+       uintptr_t pfn;
+       void* arg;
+       uintptr_t retaddr;
+       _Bool makefunccanrecover;
+       _Bool special;
+};
+
+struct _panic {
+       struct _panic* link;
+       Eface arg;
+       _Bool recovered;
+       _Bool isforeign;
+};
+
+struct sigset {
+       uint64_t __val[16];
+};
+
+struct scase {
+       void* elem;
+       struct hchan* c;
+       uintptr_t pc;
+       uint16_t kind;
+       uint16_t index;
+       _Bool* receivedp;
+       int64_t releasetime;
+};
+
+struct runtimeSelect {
+       int64_t dir;
+       void* typ;
+       struct hchan* ch;
+       void* val;
+};
+
+struct semaRoot {
+       struct mutex lock;
+       struct sudog* head;
+       struct sudog* tail;
+       uint32_t nwait;
+};
+
+struct notifyList {
+       uint32_t wait;
+       uint32_t notify;
+       struct mutex lock;
+       struct sudog* head;
+       struct sudog* tail;
+};
+
+struct sigTabT {
+       int32_t flags;
+       String name;
+};
+
+struct _siginfo_t;
+
+struct sigctxt {
+       struct _siginfo_t* info;
+       void* ctxt;
+};
+
+struct divMagic {
+       uint8_t shift;
+       uint8_t shift2;
+       uint16_t mul;
+       uint16_t baseMask;
+};
+
+struct slice {
+       void* array;
+       int64_t len;
+       int64_t cap;
+};
+
+struct stringStruct {
+       void* str;
+       int64_t len;
+};
+
+struct stringStructDWARF {
+       uint8_t* str;
+       int64_t len;
+};
+
+struct Frames {
+       Slice callers;
+       uintptr_t last;
+       int64_t lastCount;
+};
+
+struct Func;
+
+struct Frame {
+       uintptr_t PC;
+       struct Func* Func;
+       String Function;
+       String File;
+       int64_t Line;
+       uintptr_t Entry;
+};
+
+struct Func {
+       String name;
+       uintptr_t entry;
+};
+
+struct timer {
+       int64_t i;
+       int64_t when;
+       int64_t period;
+       FuncVal* f;
+       Eface arg;
+       uintptr_t seq;
+};
+
+struct traceFrame {
+       uint64_t funcID;
+       uint64_t fileID;
+       uint64_t line;
+};
+
+struct traceAlloc {
+       uint64_t head;
+       uintptr_t off;
+};
+
+struct traceAllocBlock {
+       uint64_t next;
+       uint8_t data[65528];
+};
+
+struct location {
+       uintptr_t pc;
+       String filename;
+       String function;
+       int64_t lineno;
+};
+
+struct method {
+       String* name;
+       String* pkgPath;
+       void* mtyp;
+       void* typ;
+       void* tfn;
+};
+
+struct uncommontype {
+       String* name;
+       String* pkgPath;
+       Slice methods;
+};
+
+struct imethod {
+       String* name;
+       String* pkgPath;
+       void* typ;
+};
+
+struct structfield {
+       String* name;
+       String* pkgPath;
+       void* typ;
+       String* tag;
+       uintptr_t offset;
+};
+
+struct timeval {
+       int64_t tv_sec;
+       int64_t tv_usec;
+};
+
+struct timespec {
+       int64_t tv_sec;
+       int64_t tv_nsec;
+};
+
+struct epollevent {
+       uint32_t events;
+       uint8_t data[8];
+};
+
+struct semt {
+       int8_t __size[32];
+       int64_t Godump_0_align[0];
+};
+
+struct hchan {
+       uint64_t qcount;
+       uint64_t dataqsiz;
+       void* buf;
+       uint16_t elemsize;
+       uint32_t closed;
+       void* elemtype;
+       uint64_t sendx;
+       uint64_t recvx;
+       struct waitq recvq;
+       struct waitq sendq;
+       struct mutex lock;
+};
+
+struct cpuProfile {
+       _Bool on;
+       struct note wait;
+       uintptr_t count;
+       uintptr_t evicts;
+       uintptr_t lost;
+       struct {
+       struct cpuprofEntry entry[4];
+       } hash[1024];
+       uintptr_t log[65536][2];
+       int64_t nlog;
+       int32_t toggle;
+       uint32_t handoff;
+       uint32_t wtoggle;
+       _Bool wholding;
+       _Bool flushing;
+       _Bool eodSent;
+};
+
+struct mspan {
+       struct mspan* next;
+       struct mspan* prev;
+       uintptr_t start;
+       uintptr_t npages;
+       struct mlink* freelist;
+       uint32_t sweepgen;
+       uint16_t ref;
+       uint8_t sizeclass;
+       _Bool incache;
+       uint8_t state;
+       uint8_t needzero;
+       uintptr_t elemsize;
+       int64_t unusedsince;
+       uintptr_t npreleased;
+       uintptr_t limit;
+       struct mtypes types;
+       struct mutex speciallock;
+       struct special* specials;
+       struct mlink* freebuf;
+};
+
+struct pollDesc {
+       struct pollDesc* link;
+       struct mutex lock;
+       uintptr_t fd;
+       _Bool closing;
+       uintptr_t seq;
+       uintptr_t rg;
+       struct timer rt;
+       int64_t rd;
+       uintptr_t wg;
+       struct timer wt;
+       int64_t wd;
+       uint32_t user;
+};
+
+struct pollCache {
+       struct mutex lock;
+       struct pollDesc* first;
+};
+
+struct m {
+       struct g* g0;
+       uint64_t procid;
+       struct g* gsignal;
+       struct sigset sigmask;
+       uintptr_t mstartfn;
+       struct g* curg;
+       uint64_t caughtsig;
+       uint64_t p;
+       uint64_t nextp;
+       int32_t id;
+       int32_t mallocing;
+       int32_t throwing;
+       String preemptoff;
+       int32_t locks;
+       int32_t softfloat;
+       int32_t dying;
+       int32_t profilehz;
+       int32_t helpgc;
+       _Bool spinning;
+       _Bool blocked;
+       _Bool inwb;
+       _Bool newSigstack;
+       int8_t printlock;
+       uint32_t fastrand;
+       uint64_t ncgocall;
+       int32_t ncgo;
+       struct note park;
+       struct m* alllink;
+       uint64_t schedlink;
+       struct mcache* mcache;
+       struct g* lockedg;
+       struct location createstack[32];
+       uint32_t locked;
+       uintptr_t nextwaitm;
+       struct gcstats gcstats;
+       _Bool needextram;
+       uint8_t traceback;
+       void* waitunlockf;
+       void* waitlock;
+       uint8_t waittraceev;
+       int64_t waittraceskip;
+       _Bool startingtrace;
+       uint32_t syscalltick;
+       struct mOS mos;
+       void* gsignalstack;
+       uintptr_t gsignalstacksize;
+       _Bool dropextram;
+       int32_t gcing;
+};
+
+struct hselect {
+       uint16_t tcase;
+       uint16_t ncase;
+       uint16_t* pollorder;
+       uint16_t* lockorder;
+       struct scase scase[1];
+};
+
+struct traceBufHeader {
+       uint64_t link;
+       uint64_t lastTicks;
+       int64_t pos;
+       struct location stk[128];
+};
+
+struct traceStackTable {
+       struct mutex lock;
+       uint32_t seq;
+       struct traceAlloc mem;
+       uint64_t tab[8192];
+};
+
+struct traceStack {
+       uint64_t link;
+       uintptr_t hash;
+       uint32_t id;
+       int64_t n;
+       struct location stk[0];
+};
+
+struct tracebackg {
+       struct g* gp;
+       struct location locbuf[100];
+       int64_t c;
+};
+#define _Gidle 0
+#define _Grunnable 1
+#define _Grunning 2
+#define _Gsyscall 3
+#define _Gwaiting 4
+#define _Gmoribund_unused 5
+#define _Gdead 6
+#define _Genqueue_unused 7
+#define _Gcopystack 8
+#define _Gscan 4096
+#define _Gscanrunnable 4097
+#define _Gscanrunning 4098
+#define _Gscansyscall 4099
+#define _Gscanwaiting 4100
+#define _Pidle 0
+#define _Prunning 1
+#define _Psyscall 2
+#define _Pgcstop 3
+#define _Pdead 4
+#define _PageShift 13
+#define _MaxGomaxprocs 256
+#define _MaxSmallSize 32768
+#define _MaxMem 549755813887
+#define _MaxGcproc 32
+#define _LockExternal 1
+#define _LockInternal 2
+#define _SigNotify 1
+#define _SigKill 2
+#define _SigThrow 4
+#define _SigPanic 8
+#define _SigDefault 16
+#define _SigHandling 32
+#define _SigGoExit 64
+#define _SigSetStack 128
+#define _SigUnblock 256
+#define _TraceRuntimeFrames 1
+#define _TraceTrap 2
+#define _TraceJumpStack 4
+#define _TracebackMaxFrames 100
+#define _MHeapMap_TotalBits 39
+#define _NumSizeClasses 67
diff --git a/include/mm_malloc.h b/include/mm_malloc.h
new file mode 100644
index 0000000..e69de29
-- 
2.17.1



_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.