This fixes it in a bulk build, and opens up a number of packages. OK
On 2018 Dec 29 (Sat) at 23:22:51 +0100 (+0100), Pascal Stumpf wrote: :Add aarch64 support to the internal copy of boehm-gc, taken from :boehm-gc upstream and the OpenBSD port. : : :Index: patches/patch-sigscheme_libgcroots_include_private_gcconfig_h :=================================================================== :RCS file: patches/patch-sigscheme_libgcroots_include_private_gcconfig_h :diff -N patches/patch-sigscheme_libgcroots_include_private_gcconfig_h :--- /dev/null 1 Jan 1970 00:00:00 -0000 :+++ patches/patch-sigscheme_libgcroots_include_private_gcconfig_h 29 Dec 2018 22:22:31 -0000 :@@ -0,0 +1,118 @@ :+$OpenBSD$ :+ :+Index: sigscheme/libgcroots/include/private/gcconfig.h :+--- sigscheme/libgcroots/include/private/gcconfig.h.orig :++++ sigscheme/libgcroots/include/private/gcconfig.h :+@@ -62,6 +62,14 @@ :+ # endif :+ :+ /* Determine the machine type: */ :++# if defined(__aarch64__) :++# define AARCH64 :++# if !defined(LINUX) && !defined(DARWIN) && !defined(FREEBSD) \ :++ && !defined(OPENBSD) :++# define NOSYS :++# define mach_type_known :++# endif :++# endif :+ # if defined(__arm__) || defined(__thumb__) :+ # define ARM32 :+ # if !defined(LINUX) && !defined(NETBSD) :+@@ -75,6 +83,10 @@ :+ # if defined(hp9000s300) :+ # error M68K based HP machines no longer supported. :+ # endif :++# if defined(OPENBSD) && defined(__aarch64__) :++# define AARCH64 :++# define mach_type_known :++# endif :+ # if defined(OPENBSD) && defined(m68k) :+ # define M68K :+ # define mach_type_known :+@@ -1721,6 +1733,86 @@ :+ # define DATAEND (_end) :+ # define CACHE_LINE_SIZE 256 :+ # define GETPAGESIZE() 4096 :++# endif :++# endif :++ :++# ifdef AARCH64 :++# define MACH_TYPE "AARCH64" :++# ifdef __ILP32__ :++# define CPP_WORDSZ 32 :++# define ALIGNMENT 4 :++# else :++# define CPP_WORDSZ 64 :++# define ALIGNMENT 8 :++# endif :++# ifndef HBLKSIZE :++# define HBLKSIZE 4096 :++# endif :++# ifdef LINUX :++# define OS_TYPE "LINUX" :++# define LINUX_STACKBOTTOM :++# define DYNAMIC_LOADING :++ extern int __data_start[]; :++ extern int _end[]; :++# define DATASTART ((ptr_t)__data_start) :++# define DATAEND ((ptr_t)(&_end)) :++# endif :++# ifdef DARWIN :++ /* iOS */ :++# define OS_TYPE "DARWIN" :++# define DARWIN_DONT_PARSE_STACK :++# ifndef GC_DONT_REGISTER_MAIN_STATIC_DATA :++# define DYNAMIC_LOADING :++# endif :++# define DATASTART ((ptr_t)get_etext()) :++# define DATAEND ((ptr_t)get_end()) :++# define STACKBOTTOM ((ptr_t)0x16fdfffff) :++# ifndef USE_MMAP :++# define USE_MMAP :++# endif :++# define USE_MMAP_ANON :++# define MPROTECT_VDB :++# include <unistd.h> :++# define GETPAGESIZE() (unsigned)getpagesize() :++ /* FIXME: There seems to be some issues with trylock hanging on */ :++ /* darwin. This should be looked into some more. */ :++# define NO_PTHREAD_TRYLOCK :++# if TARGET_OS_IPHONE && !defined(NO_DYLD_BIND_FULLY_IMAGE) :++# define NO_DYLD_BIND_FULLY_IMAGE :++# endif :++# endif :++# ifdef FREEBSD :++# define OS_TYPE "FREEBSD" :++# ifndef GC_FREEBSD_THREADS :++# define MPROTECT_VDB :++# endif :++# define FREEBSD_STACKBOTTOM :++# ifdef __ELF__ :++# define DYNAMIC_LOADING :++# endif :++ extern char etext[]; :++# define DATASTART GC_FreeBSDGetDataStart(0x1000, (ptr_t)etext) :++# define DATASTART_USES_BSDGETDATASTART :++# endif :++# ifdef OPENBSD :++# define OS_TYPE "OPENBSD" :++# ifndef GC_OPENBSD_THREADS :++# include <sys/param.h> :++# include <uvm/uvm_extern.h> :++# define STACKBOTTOM ((ptr_t)USRSTACK) :++# endif :++ extern int __data_start[]; :++# define DATASTART ((ptr_t)__data_start) :++ extern int _end[]; :++# define DATAEND ((ptr_t)(&_end)) :++# define DYNAMIC_LOADING :++# endif :++# ifdef NOSYS :++ /* __data_start is usually defined in the target linker script. */ :++ extern int __data_start[]; :++# define DATASTART ((ptr_t)__data_start) :++ extern void *__stack_base__; :++# define STACKBOTTOM ((ptr_t)__stack_base__) :+ # endif :+ # endif :+ :
