/* dl_iterate_phdr may forget the static data segment in */
/* statically linked executables. */
GC_add_roots_inner(datastart, dataend, TRUE);
-# if defined(DATASTART2)
+# ifdef GC_HAVE_DATAREGION2
if ((word)DATASTART2 - 1U >= (word)DATAEND2) {
/* Subtract one to check also for NULL */
/* without a compiler warning. */
ptr_t GC_find_limit(ptr_t, GC_bool);
# define DATAEND GC_find_limit(DATASTART, TRUE)
# define DATAEND_IS_FUNC
+# define GC_HAVE_DATAREGION2
# define DATASTART2 ((ptr_t)(&edata))
# define DATAEND2 ((ptr_t)(&end))
# endif
# define DATASTART ((ptr_t)((((word)(etext) + 0x3ffff) & ~0x3ffff) \
+ ((word)(etext) & 0xffff)))
# define DATAEND ((ptr_t)(edata))
+# define GC_HAVE_DATAREGION2
# define DATASTART2 (_DYNAMIC_LINKING \
? (ptr_t)(((word)_gp + 0x8000 + 0x3ffff) & ~0x3ffff) \
: (ptr_t)edata)
ptr_t GC_find_limit(ptr_t, GC_bool);
# define DATAEND GC_find_limit(DATASTART, TRUE)
# define DATAEND_IS_FUNC
+# define GC_HAVE_DATAREGION2
# define DATASTART2 ((ptr_t)(&edata))
# define DATAEND2 ((ptr_t)(&end))
# endif
": %p .. %p", (void *)DATASTART, (void *)DATAEND);
}
GC_add_roots_inner(DATASTART, DATAEND, FALSE);
-# if defined(DATASTART2)
+# ifdef GC_HAVE_DATAREGION2
if ((word)DATASTART2 - 1U >= (word)DATAEND2)
ABORT_ARG2("Wrong DATASTART/END2 pair",
": %p .. %p", (void *)DATASTART2, (void *)DATAEND2);