Unles someone can think of a reason this is silly, I'll check the following into the upstream sources, so that
we at least don't lose the code. I suspect that what we currently do is worse.
Note that this currently just removes some obsolete comments which appear to be inaccurate, and adds
ifdef'ed out code, which would need to be tested and enabled under the right conditions.
RCS file: /cvsroot/bdwgc/bdwgc/os_dep.c,v
retrieving revision 1.36
diff -u -r1.36 os_dep.c
--- os_dep.c 16 Mar 2009 23:53:10 -0000 1.36
+++ os_dep.c 18 May 2009 22:40:45 -0000
@@ -621,12 +621,6 @@
- * Find the base of the stack.
- * Used only in single-threaded environment.
- * With threads, GC_mark_roots needs to know how to do this.
- * Called with allocator lock held.
# if defined(MSWIN32) || defined(MSWINCE) \
|| (defined(CYGWIN32) && !defined(USE_MMAP))
# define is_writable(prot) ((prot) == PAGE_READWRITE \
@@ -665,6 +659,19 @@
+/* An alternate version for Cygwin might be */
+/* (adapted from Dave Korn for gcc version, untested): */
+GC_API int GC_CALL GC_get_stack_base(struct GC_stack_base *sb)
+ extern GC_PTR _tlsbase __asm__ ("%fs:4");
+ sb -> mem_base = _tls_base;
+ return GC_SUCCESS;
+#endif /* 0 */
/* This is always called from the main thread. */
Sent: Sunday, May 17, 2009 5:13 AM
To: Ivan Maidanski
Subject: [Gc] Re: [Fwd: [PATCH] Fix boehm-gc build on Cygwin]
Post by Ivan Maidanski Post by Andrew Haley
OK to commit?
Boehm-gc doesn't currently build correctly on Cygwin; it's ok for
objc, but libjava wants to use an interface that isn't currently
../boehm-gc/.libs/libgcjgc_convenience.a(misc.o): In function
`GC_init_inner': /gnu/gcc/gcc/boehm-gc/misc.c:680: undefined
reference to `_GC_get_thread_stack_base' collect2: ld returned 1
make: *** [libgcj.la] Error 1
What's GC version? I guess prior to 6.8
Yes, it's the version in-tree in GCC. I took a look at the
cvsweb at sourceforge (bdwgc) and it looked to me like the
function had been eliminated on your HEAD which is why I only
sent it to gcc lists.
Post by Ivan Maidanski
Not sure for CVS version but with my pending patches, it could be
built for Cygwin and works
Andrew, I'd much rather add this trivial patch to our
in-tree version than think about importing a new version and
disturbing every target under the sun, can we just fix it locally?
Gc mailing list