From 3c73e014458f7ce102aed1d219f487e97ee24a08 Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <thomas@schwinge.name>
Date: Tue, 16 Nov 2010 10:21:35 +0100
Subject: open_issues/boehm-gc: Some more.

---
 open_issues/boehm-gc.mdwn | 93 +++++++++++++++++++++++------------------------
 1 file changed, 45 insertions(+), 48 deletions(-)

(limited to 'open_issues')

diff --git a/open_issues/boehm-gc.mdwn b/open_issues/boehm-gc.mdwn
index 64730dc8..f6896740 100644
--- a/open_issues/boehm-gc.mdwn
+++ b/open_issues/boehm-gc.mdwn
@@ -14,8 +14,11 @@ License|/fdl]]."]]"""]]
 
 It is used by [[GCC]], for example.
 
-[[tschwinge]] reviewed its GNU/Hurd port / configuration on 2010-11-10,
-based on CVS HEAD sources from 2010-11-04, converted to Git:
+
+# Configuration
+
+[[tschwinge]] reviewed its GNU/Hurd port's configuration on 2010-11-10, based
+on CVS HEAD sources from 2010-11-16, converted to Git:
 9abb37b2e581b415bb1f482085891a289c2c0be1.
 
   * `configure.ac`
@@ -34,54 +37,23 @@ based on CVS HEAD sources from 2010-11-04, converted to Git:
                 keep_back_ptrs=true
                 AC_DEFINE([DBG_HDRS_ALL], 1,
                           [Define to force debug headers on all objects.])
+                case $host in
+                  x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* )
                     AC_DEFINE(MAKE_BACK_GRAPH)
                     AC_MSG_WARN("Client must not use -fomit-frame-pointer.")
                     AC_DEFINE(SAVE_CALL_COUNT, 8)
+                  ;;
             AM_CONDITIONAL([KEEP_BACK_PTRS], [test x"$keep_back_ptrs" = xtrue])
 
   * `configure.host`
 
     Nothing.
 
-  * `Makefile.am`, `include/include.am`, `cord/cord.am`, `doc/doc.am`
+  * `Makefile.am`, `include/include.am`, `cord/cord.am`, `doc/doc.am`,
+    `tests/tests.am`
 
     Nothing.
 
-  * `tests/tests.am`
-
-        if KEEP_BACK_PTRS
-        TESTS += tracetest$(EXEEXT)
-        check_PROGRAMS += tracetest
-        tracetest_SOURCES = tests/trace_test.c
-        tracetest_LDADD = $(test_ldadd)
-        endif
-        
-        if THREADS
-        TESTS += threadleaktest$(EXEEXT)
-        check_PROGRAMS += threadleaktest
-        threadleaktest_SOURCES = tests/thread_leak_test.c
-        threadleaktest_LDADD = $(test_ldadd)
-        endif
-        
-        if CPLUSPLUS
-        TESTS += test_cpp$(EXEEXT)
-        check_PROGRAMS += test_cpp
-        test_cpp_SOURCES = tests/test_cpp.cc
-        if AVOID_CPP_LIB
-        test_cpp_LDADD = gc_cpp.o $(test_ldadd)
-        else
-        test_cpp_LDADD = libgccpp.la $(test_ldadd)
-        endif
-        endif
-
-  * `doc/README.macros`
-
-    TODO.
-
-  * `doc/porting.html`
-
-    TODO.
-
   * `include/gc_config_macros.h`
 
     Should be OK.
@@ -205,12 +177,12 @@ based on CVS HEAD sources from 2010-11-04, converted to Git:
                 /* We tried ...                                             */
             #endif
 
-        Being on [[glibc]], we could perhaps do similar as
-        `USE_LIBC_PRIVATES` instead of `HEURISTIC2`.  Pro: avoid
-        `SIGSEGV` (and general fragility) during probing at startup (if
-        I'm understanding this correctly).  Con: rely on glibc internals.
-        Or we instead add support to parse `/proc/` (can even use the
-        same as Linux?), or use some other interface.
+        Being on [[glibc]], we could perhaps do similar as `USE_LIBC_PRIVATES`
+        instead of `HEURISTIC2`.  Pro: avoid `SIGSEGV` (and general fragility)
+        during probing at startup (if I'm understanding this correctly).  Con:
+        rely on glibc internals.  Or we instead add support to parse
+        [[`/proc/`|hurd/translator/procfs]] (can even use the same as Linux?),
+        or use some other interface.  [[!tag open_issue_glibc]]
 
       * `#define SIG_SUSPEND SIGUSR1`, `#define SIG_THR_RESTART SIGUSR2`
 
@@ -221,11 +193,25 @@ based on CVS HEAD sources from 2010-11-04, converted to Git:
 
   * `mach_dep.c`
 
-    TODO.
+      * `#define NO_GETCONTEXT`
+
+        [[!taglink open_issue_glibc]], but this is not a real problem here,
+        because we can use the following GCC internal function without much
+        overhead:
+
+      * `GC_with_callee_saves_pushed`
+
+        The `HAVE_BUILTIN_UNWIND_INIT` case is ours.
 
   * `os_dep.c`
 
-    TODO.
+      * `read`
+
+        Sure that it doesn't internally (in [[glibc]]) use `malloc`.  Probably
+        only / mostly (?) a problem for `--enable-redirect-malloc`
+        configurations?  Linux with threads uses `readv`.
+
+      * TODO.
 
   * `dyn_load.c`
 
@@ -250,9 +236,20 @@ based on CVS HEAD sources from 2010-11-04, converted to Git:
 
         Nothing.
 
----
 
-Other TODOs:
+# Testsuite
+
+There are different configurations possible, but in general, the testsuite
+restults of GNU/Linux and GNU/Hurd look very similar.
+
+## `--enable-cplusplus --enable-gc-debug`
+
+  * GNU/Hurd is missing *Call chain at allocation: [...] output*.
+
+    `os_dep.c`:`GC_print_callers`
+
+
+# TODO
 
   * [[gcc/boehm_gc]]
 
-- 
cgit v1.2.3