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

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



Thanks again. 

Reviewed-by: Felipe Huici <felipe.huici@xxxxxxxxx>

On 26.09.19, 17:32, "Charalampos Mainas" <Charalampos.Mainas@xxxxxxxxx> wrote:

    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®.