From: Matthias Klose Description: Added AARCH64 support to gcconfig.h (libgcroots). It needs to get symbols file updated, as well. Bug: https://groups.google.com/forum/#!topic/uim-en/fxixLmHXcq0 Bug-Debian: http://bugs.debian.org/758710 Origin: upstream, https://github.com/ctyler/libgcroots/commit/da6e6884a1119e2cf6be88b4cf5eb9091c52beeb Index: b/libgcroots/include/private/gcconfig.h =================================================================== --- a/libgcroots/include/private/gcconfig.h +++ b/libgcroots/include/private/gcconfig.h @@ -62,6 +62,13 @@ # endif /* Determine the machine type: */ +# if defined(__aarch64__) +# define AARCH64 +# if !defined(LINUX) +# define NOSYS +# define mach_type_known +# endif +# endif # if defined(__arm__) || defined(__thumb__) # define ARM32 # if !defined(LINUX) && !defined(NETBSD) @@ -231,6 +238,10 @@ # define IA64 # define mach_type_known # endif +# if defined(LINUX) && defined(__aarch64__) +# define AARCH64 +# define mach_type_known +# endif # if defined(LINUX) && defined(__arm__) # define ARM32 # define mach_type_known @@ -504,6 +515,7 @@ /* running Amdahl UTS4 */ /* S390 ==> 390-like machine */ /* running LINUX */ + /* AARCH64 ==> ARM AArch64 */ /* ARM32 ==> Intel StrongARM */ /* IA64 ==> Intel IPF */ /* (e.g. Itanium) */ @@ -1724,6 +1736,32 @@ # endif # endif +# ifdef AARCH64 +# define CPP_WORDSZ 64 +# define MACH_TYPE "AARCH64" +# define ALIGNMENT 8 +# ifndef HBLKSIZE +# define HBLKSIZE 4096 +# endif +# ifdef LINUX +# define OS_TYPE "LINUX" +# define LINUX_STACKBOTTOM +# define USE_GENERIC_PUSH_REGS +# define DYNAMIC_LOADING + extern int __data_start[]; +# define DATASTART ((ptr_t)__data_start) + extern char _end[]; +# define DATAEND ((ptr_t)(&_end)) +# 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 + # ifdef ARM32 # define CPP_WORDSZ 32 # define MACH_TYPE "ARM32"