* include/private/gcconfig.h (sparc-linux): Use LINUX_STACKBOTTOM.
* os_dep.c (GC_linux_stack_base): Check for bug present in some
Sparc glibc variants where __libc_stack_end is erroneously set
to "1". Fallback to procfs code in that case.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@98303
138bc75d-0d04-0410-961f-
82ee72b054a4
+2005-04-17 David S. Miller <davem@davemloft.net>
+
+ * include/private/gcconfig.h (sparc-linux): Use LINUX_STACKBOTTOM.
+ * os_dep.c (GC_linux_stack_base): Check for bug present in some
+ Sparc glibc variants where __libc_stack_end is erroneously set
+ to "1". Fallback to procfs code in that case.
+
2005-04-12 Mike Stump <mrs@apple.com>
* configure: Regenerate.
extern ptr_t GC_SysVGetDataStart();
# ifdef __arch64__
# define DATASTART GC_SysVGetDataStart(0x100000, _etext)
- /* libc_stack_end is not set reliably for sparc64 */
-# define STACKBOTTOM ((ptr_t) 0x80000000000ULL)
# else
# define DATASTART GC_SysVGetDataStart(0x10000, _etext)
-# define LINUX_STACKBOTTOM
# endif
+# define LINUX_STACKBOTTOM
# endif
# ifdef OPENBSD
# define OS_TYPE "OPENBSD"
} /* Otherwise it's not safe to add 16 bytes and we fall */
/* back to using /proc. */
# else
+# ifdef SPARC
+ /* Older versions of glibc for 64-bit Sparc do not set
+ * this variable correctly, it gets set to either zero
+ * or one.
+ */
+ if (__libc_stack_end != (ptr_t) (unsigned long)0x1)
+ return __libc_stack_end;
+# else
return __libc_stack_end;
+# endif
# endif
}
f = open("/proc/self/stat", O_RDONLY);