Commit 22d97ada by David S. Miller Committed by David S. Miller

gcconfig.h (sparc-linux): Use LINUX_STACKBOTTOM.

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.

From-SVN: r98303
parent 03a08664
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.
......
......@@ -924,12 +924,10 @@
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"
......
......@@ -945,8 +945,17 @@ ptr_t GC_get_stack_base()
} /* 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);
if (f < 0 || STAT_READ(f, stat_buf, STAT_BUF_SIZE) < 2 * STAT_SKIP) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment