Saturday, December 29, 2018

fix inputmethods/uim on aarch64

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
+

No comments:

Post a Comment