/* Newer versions of GNU/Linux define this macro. We
* define it similarly for any ELF systems that don't. */
# ifndef ElfW
-# if defined(FREEBSD)
+# if defined(FREEBSD) || defined(__FreeBSD__)
# if __ELF_WORD_SIZE == 32
# define ElfW(type) Elf32_##type
# else
/* head. Sz is in granules. */
#ifdef GC_ADD_CALLER
+# define GC_DBG_RA GC_RETURN_ADDR,
# ifdef GC_RETURN_ADDR_PARENT
-# define GC_DBG_RA GC_RETURN_ADDR_PARENT,
+# define RA GC_RETURN_ADDR_PARENT,
# else
-# define GC_DBG_RA GC_RETURN_ADDR,
+# define RA GC_RETURN_ADDR,
# endif
#else
# define GC_DBG_RA /* empty */
# define M32R
# define mach_type_known
# endif
-# if defined(FREEBSD) && (defined(powerpc) || defined(__powerpc__))
-# define POWERPC
-# define mach_type_known
-# endif
# if defined(__alpha) || defined(__alpha__)
# define ALPHA
# if !defined(LINUX) && !defined(NETBSD) && !defined(OPENBSD) \
# define OPENBSD
# define mach_type_known
# endif
-# if defined(FREEBSD) && (defined(i386) || defined(__i386__))
-# define I386
-# define mach_type_known
-# endif
-# if defined(FREEBSD) && defined(__x86_64__)
-# define X86_64
-# define mach_type_known
-# endif
# if defined(__NetBSD__) && (defined(i386) || defined(__i386__))
# define I386
# define mach_type_known
# define X86_64
# define mach_type_known
# endif
-# if defined(__FreeBSD__) && defined(__amd64__)
+# if defined(FREEBSD) && (defined(i386) || defined(__i386__))
+# define I386
+# define mach_type_known
+# endif
+# if defined(FREEBSD) && defined(__amd64__)
# define X86_64
# define mach_type_known
# endif
-# if defined(__FreeBSD__) && defined(__ia64__)
+# if defined(FREEBSD) && defined(__ia64__)
# define IA64
# define mach_type_known
# endif
# define SPARC
# define mach_type_known
# endif
-# if defined(FREEBSD) && defined(__powerpc__)
+# if defined(FREEBSD) && (defined(powerpc) || defined(__powerpc__))
# define POWERPC
# define mach_type_known
# endif
# define OS_TYPE "MSWINCE"
# define DATAEND /* not needed */
# endif
+/* To the future maintainer of this diff: this is the "ifdef ARM32" section */
+# ifdef FREEBSD
+# define ALIGNMENT 4
+# define OS_TYPE "FREEBSD"
+# ifdef __ELF__
+# define DYNAMIC_LOADING
+# endif
+# define HEURISTIC2
+ extern char etext[];
+# define SEARCH_FOR_DATA_START
+# endif
# ifdef DARWIN
/* iPhone */
# define OS_TYPE "DARWIN"
# define DATAEND ((ptr_t)(&_end))
# define DYNAMIC_LOADING
# endif
-# ifdef FREEBSD
-# define ALIGNMENT 4
-# define OS_TYPE "FREEBSD"
-# ifdef __ELF__
-# define DYNAMIC_LOADING
-# endif
-# define HEURISTIC2
- extern char etext[];
-# define SEARCH_FOR_DATA_START
-# endif
# ifdef NOSYS
/* __data_start is usually defined in the target linker script. */
extern int __data_start[];