(Apply commit
28e6e4f from 'release-7_2' branch.)
* dbg_mlc.c (GC_caller_func_offset): Test FREEBSD macro instead of
__FreeBSD__ (since the former is always defined in gcconfig.h included
from this file indirectly).
* dyn_load.c (ElfW): Likewise.
* dbg_mlc.c (GC_caller_func): Fix name to GC_caller_func_offset.
* dbg_mlc.c (GC_debug_realloc): Invoke GC_caller_func_offset if
GC_ADD_CALLER (same as in GC_debug_malloc and commit
2cdf7ec).
* include/private/gc_priv.h (RA): Fix name to GC_DBG_RA.
* include/private/gcconfig.h (X86_64): Test __x86_64__ in addition to
__amd64__ for FreeBSD (proposed in commit
b54833a).
Conflicts:
include/private/gcconfig.h
UNLOCK();
}
-#if defined(__FreeBSD__)
+#ifdef FREEBSD
#include <dlfcn.h>
static void GC_caller_func_offset(ad, symp, offp)
const GC_word ad;
}
}
#else
-#define GC_caller_func(ad, symp, offp)
+# define GC_caller_func_offset(ad, symp, offp) (void)0
#endif
GC_API void * GC_CALL GC_debug_malloc(size_t lb, GC_EXTRA_PARAMS)
/* Newer versions of GNU/Linux define this macro. We
* define it similarly for any ELF systems that don't. */
# ifndef ElfW
-# if defined(FREEBSD) || defined(__FreeBSD__)
+# if defined(FREEBSD)
# if __ELF_WORD_SIZE == 32
# define ElfW(type) Elf32_##type
# else
# else
# define ElfW(type) Elf64_##type
# endif
-# elif defined(__FreeBSD__)
-# if __ELF_WORD_SIZE == 32
-# define ElfW(type) Elf32_##type
-# else
-# define ElfW(type) Elf64_##type
-# endif
# else
# if !defined(ELF_CLASS) || ELF_CLASS == ELFCLASS32
# define ElfW(type) Elf32_##type
/* head. Sz is in granules. */
#ifdef GC_ADD_CALLER
-# define GC_DBG_RA GC_RETURN_ADDR,
# ifdef GC_RETURN_ADDR_PARENT
-# define RA GC_RETURN_ADDR_PARENT,
+# define GC_DBG_RA GC_RETURN_ADDR_PARENT,
# else
-# define RA GC_RETURN_ADDR,
+# define GC_DBG_RA GC_RETURN_ADDR,
# endif
#else
# define GC_DBG_RA /* empty */
# define I386
# define mach_type_known
# endif
-# if defined(FREEBSD) && defined(__amd64__)
-# define X86_64
-# define mach_type_known
+# if defined(FREEBSD) && (defined(__amd64__) || defined(__x86_64__))
+# define X86_64
+# define mach_type_known
# endif
# if defined(FREEBSD) && defined(__ia64__)
-# define IA64
-# define mach_type_known
+# define IA64
+# define mach_type_known
# endif
# if defined(FREEBSD) && defined(__sparc__)
-# define SPARC
-# define mach_type_known
+# define SPARC
+# define mach_type_known
# endif
# if defined(FREEBSD) && (defined(powerpc) || defined(__powerpc__))
-# define POWERPC
-# define mach_type_known
+# define POWERPC
+# define mach_type_known
# endif
# if defined(FREEBSD) && defined(__arm__)
-# define ARM32
-# define mach_type_known
+# define ARM32
+# define mach_type_known
# endif
# if defined(bsdi) && (defined(i386) || defined(__i386__))
# define I386
# define OS_TYPE "MSWINCE"
# define DATAEND /* not needed */
# endif
-/* To the future maintainer of this diff: this is the "ifdef ARM32" section */
# ifdef FREEBSD
+ /* FreeBSD/arm */
# define ALIGNMENT 4
# define OS_TYPE "FREEBSD"
# ifdef __ELF__