aboutsummaryrefslogtreecommitdiff
path: root/boehm-gc
diff options
context:
space:
mode:
authorHans Boehm <Hans_Boehm@hp.com>2001-05-20 22:36:34 +0000
committerTom Tromey <tromey@gcc.gnu.org>2001-05-20 22:36:34 +0000
commit18d6fb976576aba2971ad6cd68228a64b0c83e28 (patch)
treebb912f33fd2185851d06bbae554211ac338240ff /boehm-gc
parentcb5fa0f8ea731239b4e5927b9b9c668854d9fd68 (diff)
downloadgcc-18d6fb976576aba2971ad6cd68228a64b0c83e28.zip
gcc-18d6fb976576aba2971ad6cd68228a64b0c83e28.tar.gz
gcc-18d6fb976576aba2971ad6cd68228a64b0c83e28.tar.bz2
configure.host: Build with -fexceptions.
* configure.host: Build with -fexceptions. * linux_threads.c: Remember which thread stopped world for From-SVN: r42362
Diffstat (limited to 'boehm-gc')
-rw-r--r--boehm-gc/ChangeLog5
-rw-r--r--boehm-gc/configure.host2
-rw-r--r--boehm-gc/linux_threads.c8
3 files changed, 14 insertions, 1 deletions
diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog
index 7d09916..1b28d5c 100644
--- a/boehm-gc/ChangeLog
+++ b/boehm-gc/ChangeLog
@@ -1,3 +1,8 @@
+2001-05-19 Hans Boehm <hans_boehm@hp.com>
+
+ * configure.host: Build with -fexceptions.
+ * linux_threads.c: Remember which thread stopped world for
+
2001-05-04 Loren J. Rittle <ljrittle@acm.org>
with final tuning by Bryce McKinlay
diff --git a/boehm-gc/configure.host b/boehm-gc/configure.host
index 1903242..323668d 100644
--- a/boehm-gc/configure.host
+++ b/boehm-gc/configure.host
@@ -17,7 +17,7 @@
# It sets the following shell variables:
# boehm_gc_cflags Special CFLAGS to use when building
-boehm_gc_cflags=
+boehm_gc_cflags=-fexceptions
case "${target_optspace}:${host}" in
yes:*)
diff --git a/boehm-gc/linux_threads.c b/boehm-gc/linux_threads.c
index 2c856f5..92da410 100644
--- a/boehm-gc/linux_threads.c
+++ b/boehm-gc/linux_threads.c
@@ -326,6 +326,11 @@ GC_thread GC_lookup_thread(pthread_t id)
return(p);
}
+/* There seems to be a very rare thread stopping problem. To help us */
+/* debug that, we save the ids of the stopping thread. */
+pthread_t GC_stopping_thread;
+int GC_stopping_pid;
+
/* Caller holds allocation lock. */
void GC_stop_world()
{
@@ -335,6 +340,8 @@ void GC_stop_world()
register int n_live_threads = 0;
register int result;
+ GC_stopping_thread = my_thread; /* debugging only. */
+ GC_stopping_pid = getpid(); /* debugging only. */
for (i = 0; i < THREAD_TABLE_SZ; i++) {
for (p = GC_threads[i]; p != 0; p = p -> next) {
if (p -> id != my_thread) {
@@ -403,6 +410,7 @@ void GC_start_world()
#if DEBUG_THREADS
GC_printf0("World started\n");
#endif
+ GC_stopping_thread = 0; /* debugging only */
}
# ifdef IA64