Sat Jun 15 21:17:23 2013 UTC ()
Revert only introduction of build-time test.


(asau)
diff -r1.47 -r1.48 pkgsrc/lang/sbcl/Makefile
diff -r1.30 -r1.31 pkgsrc/lang/sbcl/distinfo
diff -r1.1 -r1.2 pkgsrc/lang/sbcl/patches/patch-revert-37d3828773e2f847bb1ed7522b0af4fb8e736fc8

cvs diff -r1.47 -r1.48 pkgsrc/lang/sbcl/Makefile (expand / switch to unified diff)

--- pkgsrc/lang/sbcl/Makefile 2013/06/11 19:26:28 1.47
+++ pkgsrc/lang/sbcl/Makefile 2013/06/15 21:17:23 1.48
@@ -1,17 +1,18 @@ @@ -1,17 +1,18 @@
1# $NetBSD: Makefile,v 1.47 2013/06/11 19:26:28 asau Exp $ 1# $NetBSD: Makefile,v 1.48 2013/06/15 21:17:23 asau Exp $
2 2
3DISTNAME= ${PKGNAME_NOREV}-source 3DISTNAME= ${PKGNAME_NOREV}-source
4PKGNAME= sbcl-1.1.8 4PKGNAME= sbcl-1.1.8
 5PKGREVISION= 1
5CATEGORIES= lang 6CATEGORIES= lang
6MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=sbcl/} 7MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=sbcl/}
7EXTRACT_SUFX= .tar.bz2 8EXTRACT_SUFX= .tar.bz2
8 9
9MAINTAINER= asau@NetBSD.org 10MAINTAINER= asau@NetBSD.org
10HOMEPAGE= http://www.sbcl.org/ 11HOMEPAGE= http://www.sbcl.org/
11COMMENT= SBCL, a Common Lisp implementation 12COMMENT= SBCL, a Common Lisp implementation
12 13
13# SBCL creates a new release with minor updates and fixes every 14# SBCL creates a new release with minor updates and fixes every
14# month. The maintainer of this package does not have the time 15# month. The maintainer of this package does not have the time
15# to build, test, update, etc. this package that often. If you 16# to build, test, update, etc. this package that often. If you
16# would like a newer (or older) version, this works very often: 17# would like a newer (or older) version, this works very often:
17# 1) change the PKGNAME variable above as desired 18# 1) change the PKGNAME variable above as desired

cvs diff -r1.30 -r1.31 pkgsrc/lang/sbcl/distinfo (expand / switch to unified diff)

--- pkgsrc/lang/sbcl/distinfo 2013/06/11 19:26:28 1.30
+++ pkgsrc/lang/sbcl/distinfo 2013/06/15 21:17:23 1.31
@@ -1,9 +1,9 @@ @@ -1,9 +1,9 @@
1$NetBSD: distinfo,v 1.30 2013/06/11 19:26:28 asau Exp $ 1$NetBSD: distinfo,v 1.31 2013/06/15 21:17:23 asau Exp $
2 2
3SHA1 (sbcl-1.1.8-source.tar.bz2) = 559b6d0ae455fbf42188b43f8900cba6adb0747f 3SHA1 (sbcl-1.1.8-source.tar.bz2) = 559b6d0ae455fbf42188b43f8900cba6adb0747f
4RMD160 (sbcl-1.1.8-source.tar.bz2) = cc39d5ff7b467e17cfacc3f60265f848a0bad520 4RMD160 (sbcl-1.1.8-source.tar.bz2) = cc39d5ff7b467e17cfacc3f60265f848a0bad520
5Size (sbcl-1.1.8-source.tar.bz2) = 4108784 bytes 5Size (sbcl-1.1.8-source.tar.bz2) = 4108784 bytes
6SHA1 (patch-ab) = 52753efa24fc03e5604f6cb4ef2a7bbd3f40b6a6 6SHA1 (patch-ab) = 52753efa24fc03e5604f6cb4ef2a7bbd3f40b6a6
7SHA1 (patch-ad) = 4a10e7d498b686a09b067c527010981c15f0f8c8 7SHA1 (patch-ad) = 4a10e7d498b686a09b067c527010981c15f0f8c8
8SHA1 (patch-ae) = da24df72525afdee0433d557bf4ebb764fee1d24 8SHA1 (patch-ae) = da24df72525afdee0433d557bf4ebb764fee1d24
9SHA1 (patch-revert-37d3828773e2f847bb1ed7522b0af4fb8e736fc8) = b27a9dc6adf425b35456f1b2b5d8fffd7e026db9 9SHA1 (patch-revert-37d3828773e2f847bb1ed7522b0af4fb8e736fc8) = 58498d7f7e5a789fa9b2af1ec2460079ac6c05ac

cvs diff -r1.1 -r1.2 pkgsrc/lang/sbcl/patches/Attic/patch-revert-37d3828773e2f847bb1ed7522b0af4fb8e736fc8 (expand / switch to unified diff)

--- pkgsrc/lang/sbcl/patches/Attic/patch-revert-37d3828773e2f847bb1ed7522b0af4fb8e736fc8 2013/06/11 19:26:28 1.1
+++ pkgsrc/lang/sbcl/patches/Attic/patch-revert-37d3828773e2f847bb1ed7522b0af4fb8e736fc8 2013/06/15 21:17:23 1.2
@@ -1,560 +1,15 @@ @@ -1,560 +1,15 @@
1$NetBSD: patch-revert-37d3828773e2f847bb1ed7522b0af4fb8e736fc8,v 1.1 2013/06/11 19:26:28 asau Exp $ 1$NetBSD: patch-revert-37d3828773e2f847bb1ed7522b0af4fb8e736fc8,v 1.2 2013/06/15 21:17:23 asau Exp $
2 2
3Revert revision 37d3828773e2f847bb1ed7522b0af4fb8e736fc8 3Suppress test introduced by revision 37d3828773e2f847bb1ed7522b0af4fb8e736fc8
4which breaks build on NetBSD. 4which breaks build on NetBSD.
5 5
6diff --git a/contrib/sb-sprof/Makefile contrib/sb-sprof/Makefile 6diff --git a/contrib/sb-sprof/Makefile contrib/sb-sprof/Makefile
7index 7373c72..463ae52 100644 7index 7373c72..463ae52 100644
8--- contrib/sb-sprof/Makefile 8--- contrib/sb-sprof/Makefile
9+++ contrib/sb-sprof/Makefile 9+++ contrib/sb-sprof/Makefile
10@@ -2,4 +2,4 @@ MODULE=sb-sprof 10@@ -2,4 +2,4 @@ MODULE=sb-sprof
11 include ../vanilla-module.mk 11 include ../vanilla-module.mk
12  12
13 test:: 13 test::
14- $(SBCL) --eval '(load (format nil "SYS:CONTRIB;~:@(~A~);TEST.LISP" "$(MODULE)"))' </dev/null 14- $(SBCL) --eval '(load (format nil "SYS:CONTRIB;~:@(~A~);TEST.LISP" "$(MODULE)"))' </dev/null
15+ true 15+ true
16diff --git contrib/sb-sprof/sb-sprof.lisp contrib/sb-sprof/sb-sprof.lisp 
17index 0d81649..775924a 100644 
18--- contrib/sb-sprof/sb-sprof.lisp 
19+++ contrib/sb-sprof/sb-sprof.lisp 
20@@ -792,9 +792,7 @@ The following keyword args are recognized: 
21 :mode mode)) 
22 (enable-call-counting) 
23 (setf *profiled-threads* threads) 
24- (sb-sys:enable-interrupt sb-unix:sigprof 
25- #'sigprof-handler 
26- :synchronous t) 
27+ (sb-sys:enable-interrupt sb-unix:sigprof #'sigprof-handler) 
28 (ecase mode 
29 (:alloc 
30 (let ((alloc-signal (1- alloc-interval))) 
31@@ -1407,23 +1405,6 @@ functions during statistical profiling." 
32 (with-profiling (:reset t :max-samples 1000 :report :graph) 
33 (test-0 7))) 
34  
35-(defun consalot () 
36- (let ((junk '())) 
37- (loop repeat 10000 do 
38- (push (make-array 10) junk)) 
39- junk)) 
40- 
41-(defun consing-test () 
42- ;; 0.0001 chosen so that it breaks rather reliably when sprof does not 
43- ;; respect pseudo atomic. 
44- (with-profiling (:reset t :sample-interval 0.0001 :report :graph :loop nil) 
45- (let ((target (+ (get-universal-time) 15))) 
46- (princ #\.) 
47- (force-output) 
48- (loop 
49- while (< (get-universal-time) target) 
50- do (consalot))))) 
51- 
52  
53 ;;; provision 
54 (provide 'sb-sprof) 
55diff --git make-config.sh make-config.sh 
56index 6b720e0..1a0a547 100644 
57--- make-config.sh 
58+++ make-config.sh 
59@@ -544,7 +544,6 @@ case "$sbcl_os" in 
60 # roughly-equivalent magic nevertheless:) 
61 printf ' :sb-dynamic-core :os-provides-dlopen' >> $ltf 
62 printf ' :sb-thread :sb-safepoint :sb-thruption :sb-wtimer' >> $ltf 
63- printf ' :sb-safepoint-strictly' >> $ltf 
64 # 
65 link_or_copy Config.$sbcl_arch-win32 Config 
66 link_or_copy $sbcl_arch-win32-os.h target-arch-os.h 
67diff --git package-data-list.lisp-expr package-data-list.lisp-expr 
68index 691a040..03ab6ee 100644 
69--- package-data-list.lisp-expr 
70+++ package-data-list.lisp-expr 
71@@ -2023,8 +2023,6 @@ is a good idea, but see SB-SYS re. blurring of boundaries." 
72 "THREAD-NAME" 
73 "THREAD-YIELD" 
74 "FOREIGN-THREAD" 
75- #!+(and sb-safepoint-strictly (not win32)) 
76- "SIGNAL-HANDLING-THREAD" 
77 ;; Memory barrier 
78 "BARRIER" 
79 ;; Mutexes 
80diff --git src/code/target-signal.lisp src/code/target-signal.lisp 
81index 3fd22f3..9fab9d1 100644 
82--- src/code/target-signal.lisp 
83+++ src/code/target-signal.lisp 
84@@ -117,25 +117,11 @@ 
85 (sb!alien:define-alien-routine ("install_handler" install-handler) 
86 sb!alien:unsigned-long 
87 (signal sb!alien:int) 
88- (handler sb!alien:unsigned-long) 
89- (synchronous boolean)) 
90+ (handler sb!alien:unsigned-long)) 
91  
92 ;;;; interface to enabling and disabling signal handlers 
93  
94-;;; Note on the SYNCHRONOUS argument: On builds without pseudo-atomic, 
95-;;; we have no way of knowing whether interrupted code was in an 
96-;;; allocation sequence, and cannot delay signals until after 
97-;;; allocation. Any signal that can occur asynchronously must be 
98-;;; considered unsafe for immediate execution, and the invocation of its 
99-;;; lisp handler will get delayed into a newly spawned signal handler 
100-;;; thread. However, there are signals which we must handle 
101-;;; immediately, because they occur synchonously (hence the boolean flag 
102-;;; SYNCHRONOUS to this function), luckily implying that the signal 
103-;;; happens only in specific places (illegal instructions, floating 
104-;;; point instructions, certain system calls), hopefully ruling out the 
105-;;; possibility that we would trigger it during allocation. 
106- 
107-(defun enable-interrupt (signal handler &key synchronous) 
108+(defun enable-interrupt (signal handler) 
109 (declare (type (or function fixnum (member :default :ignore)) handler)) 
110 (/show0 "enable-interrupt") 
111 (flet ((run-handler (&rest args) 
112@@ -149,8 +135,7 @@ 
113 (:ignore sig-ign) 
114 (t 
115 (sb!kernel:get-lisp-obj-address 
116- #'run-handler))) 
117- synchronous))) 
118+ #'run-handler)))))) 
119 (cond ((= result sig-dfl) :default) 
120 ((= result sig-ign) :ignore) 
121 (t (the (or function fixnum) 
122@@ -162,26 +147,6 @@ 
123 (defun ignore-interrupt (signal) 
124 (enable-interrupt signal :ignore)) 
125  
126-;;;; Support for signal handlers which aren't. 
127-;;;; 
128-;;;; On safepoint builds, user-defined Lisp signal handlers do not run 
129-;;;; in the handler for their signal, because we have no pseudo atomic 
130-;;;; mechanism to prevent handlers from hitting during allocation. 
131-;;;; Rather, the signal spawns off a fresh native thread, which calls 
132-;;;; into lisp with a fake context through this callback: 
133- 
134-#!+(and sb-safepoint-strictly (not win32)) 
135-(defun signal-handler-callback (run-handler signal args) 
136- (sb!thread::initial-thread-function-trampoline 
137- (sb!thread::make-signal-handling-thread :name "signal handler" 
138- :signal-number signal) 
139- nil (lambda () 
140- (let* ((info (sb!sys:sap-ref-sap args 0)) 
141- (context (sb!sys:sap-ref-sap args sb!vm:n-word-bytes))) 
142- (funcall run-handler signal info context))) 
143- nil nil nil nil)) 
144- 
145-  
146 ;;;; default LISP signal handlers 
147 ;;;; 
148 ;;;; Most of these just call ERROR to report the presence of the signal. 
149@@ -272,13 +237,13 @@ 
150 "Enable all the default signals that Lisp knows how to deal with." 
151 (enable-interrupt sigint #'sigint-handler) 
152 (enable-interrupt sigterm #'sigterm-handler) 
153- (enable-interrupt sigill #'sigill-handler :synchronous t) 
154+ (enable-interrupt sigill #'sigill-handler) 
155 #!-linux 
156 (enable-interrupt sigemt #'sigemt-handler) 
157- (enable-interrupt sigfpe #'sb!vm:sigfpe-handler :synchronous t) 
158- (enable-interrupt sigbus #'sigbus-handler :synchronous t) 
159+ (enable-interrupt sigfpe #'sb!vm:sigfpe-handler) 
160+ (enable-interrupt sigbus #'sigbus-handler) 
161 #!-linux 
162- (enable-interrupt sigsys #'sigsys-handler :synchronous t) 
163+ (enable-interrupt sigsys #'sigsys-handler) 
164 #!-sb-wtimer 
165 (enable-interrupt sigalrm #'sigalrm-handler) 
166 #!-sb-thruption 
167diff --git src/code/thread.lisp src/code/thread.lisp 
168index 3d1ecd4..2cfd567 100644 
169--- src/code/thread.lisp 
170+++ src/code/thread.lisp 
171@@ -42,14 +42,6 @@ in future versions." 
172 "Type of native threads which are attached to the runtime as Lisp threads 
173 temporarily.") 
174  
175-#!+(and sb-safepoint-strictly (not win32)) 
176-(def!struct (signal-handling-thread 
177- (:include foreign-thread) 
178- (:conc-name "THREAD-")) 
179- #!+sb-doc 
180- "Asynchronous signal handling thread." 
181- (signal-number nil :type integer)) 
182- 
183 (def!struct mutex 
184 #!+sb-doc 
185 "Mutex type." 
186diff --git src/compiler/generic/objdef.lisp src/compiler/generic/objdef.lisp 
187index 262f472..fda2758 100644 
188--- src/compiler/generic/objdef.lisp 
189+++ src/compiler/generic/objdef.lisp 
190@@ -434,8 +434,6 @@ 
191 #!+sb-safepoint (csp-around-foreign-call :c-type "lispobj *") 
192 #!+sb-safepoint (pc-around-foreign-call :c-type "lispobj *") 
193 #!+win32 (synchronous-io-handle-and-flag :c-type "HANDLE" :length 1) 
194- #!+(and sb-safepoint-strictly (not win32)) 
195- (sprof-alloc-region :c-type "struct alloc_region" :length 5) 
196 ;; KLUDGE: On alpha, until STEPPING we have been lucky and the 32 
197 ;; bit slots came in pairs. However the C compiler will align 
198 ;; interrupt_contexts on a double word boundary. This logic should 
199diff --git src/compiler/generic/parms.lisp src/compiler/generic/parms.lisp 
200index 4661321..ca556c2 100644 
201--- src/compiler/generic/parms.lisp 
202+++ src/compiler/generic/parms.lisp 
203@@ -124,9 +124,7 @@ 
204 fdefinition-object 
205 #!+win32 sb!kernel::handle-win32-exception 
206 #!+sb-thruption sb!thread::run-interruption 
207- #!+sb-safepoint sb!thread::enter-foreign-callback 
208- #!+(and sb-safepoint-strictly (not win32)) 
209- sb!unix::signal-handler-callback)) 
210+ #!+sb-safepoint sb!thread::enter-foreign-callback)) 
211  
212 (defparameter *common-static-symbols* 
213 '(t 
214diff --git src/compiler/ppc/macros.lisp src/compiler/ppc/macros.lisp 
215index 262cc10..2fdfb7e 100644 
216--- src/compiler/ppc/macros.lisp 
217+++ src/compiler/ppc/macros.lisp 
218@@ -336,9 +336,6 @@ 
219 ;;; trap if ALLOC-TN's negative (handling the deferred interrupt) and 
220 ;;; using FLAG-TN - minus the large constant - to correct ALLOC-TN. 
221 (defmacro pseudo-atomic ((flag-tn) &body forms) 
222- #!+sb-safepoint-strictly 
223- `(progn ,flag-tn ,@forms (emit-safepoint)) 
224- #!-sb-safepoint-strictly 
225 `(progn 
226 (without-scheduling () 
227 ;; Extra debugging stuff: 
228diff --git src/compiler/x86-64/macros.lisp src/compiler/x86-64/macros.lisp 
229index a397573..11a06fc 100644 
230--- src/compiler/x86-64/macros.lisp 
231+++ src/compiler/x86-64/macros.lisp 
232@@ -303,9 +303,9 @@ 
233  
234 #!+sb-thread 
235 (defmacro pseudo-atomic (&rest forms) 
236- #!+sb-safepoint-strictly 
237+ #!+win32 
238 `(progn ,@forms (emit-safepoint)) 
239- #!-sb-safepoint-strictly 
240+ #!-win32 
241 (with-unique-names (label) 
242 `(let ((,label (gen-label))) 
243 (inst mov (make-ea :qword 
244diff --git src/compiler/x86/macros.lisp src/compiler/x86/macros.lisp 
245index 4050640..d7b6bc2 100644 
246--- src/compiler/x86/macros.lisp 
247+++ src/compiler/x86/macros.lisp 
248@@ -408,9 +408,9 @@ 
249  
250 #!+sb-thread 
251 (defmacro pseudo-atomic (&rest forms) 
252- #!+sb-safepoint-strictly 
253+ #!+win32 
254 `(progn ,@forms (emit-safepoint)) 
255- #!-sb-safepoint-strictly 
256+ #!-win32 
257 (with-unique-names (label) 
258 `(let ((,label (gen-label))) 
259 (inst mov (make-ea :dword :disp (* 4 thread-pseudo-atomic-bits-slot)) 
260diff --git src/runtime/gencgc.c src/runtime/gencgc.c 
261index f4ffd2f..5829b5a 100644 
262--- src/runtime/gencgc.c 
263+++ src/runtime/gencgc.c 
264@@ -4306,7 +4306,9 @@ general_alloc(sword_t nbytes, int page_type_flag) 
265 lispobj AMD64_SYSV_ABI * 
266 alloc(long nbytes) 
267 { 
268-#ifdef LISP_FEATURE_SB_SAFEPOINT_STRICTLY 
269+#ifdef LISP_FEATURE_WIN32 
270+ /* WIN32 is currently the only platform where inline allocation is 
271+ * not pseudo atomic. */ 
272 struct thread *self = arch_os_get_current_thread(); 
273 int was_pseudo_atomic = get_pseudo_atomic_atomic(self); 
274 if (!was_pseudo_atomic) 
275@@ -4317,7 +4319,7 @@ alloc(long nbytes) 
276  
277 lispobj *result = general_alloc(nbytes, BOXED_PAGE_FLAG); 
278  
279-#ifdef LISP_FEATURE_SB_SAFEPOINT_STRICTLY 
280+#ifdef LISP_FEATURE_WIN32 
281 if (!was_pseudo_atomic) 
282 clear_pseudo_atomic_atomic(self); 
283 #endif 
284@@ -4432,12 +4434,8 @@ void gc_alloc_update_all_page_tables(void) 
285 { 
286 /* Flush the alloc regions updating the tables. */ 
287 struct thread *th; 
288- for_each_thread(th) { 
289+ for_each_thread(th) 
290 gc_alloc_update_page_tables(BOXED_PAGE_FLAG, &th->alloc_region); 
291-#if defined(LISP_FEATURE_SB_SAFEPOINT_STRICTLY) && !defined(LISP_FEATURE_WIN32) 
292- gc_alloc_update_page_tables(BOXED_PAGE_FLAG, &th->sprof_alloc_region); 
293-#endif 
294- } 
295 gc_alloc_update_page_tables(UNBOXED_PAGE_FLAG, &unboxed_region); 
296 gc_alloc_update_page_tables(BOXED_PAGE_FLAG, &boxed_region); 
297 } 
298diff --git src/runtime/interrupt.c src/runtime/interrupt.c 
299index 882e2bb..d23dbd7 100644 
300--- src/runtime/interrupt.c 
301+++ src/runtime/interrupt.c 
302@@ -1779,89 +1779,6 @@ see_if_sigaction_nodefer_works(void) 
303 #undef SA_NODEFER_TEST_BLOCK_SIGNAL 
304 #undef SA_NODEFER_TEST_KILL_SIGNAL 
305  
306-#if defined(LISP_FEATURE_SB_SAFEPOINT_STRICTLY) && !defined(LISP_FEATURE_WIN32) 
307- 
308-static void * 
309-signal_thread_trampoline(void *pthread_arg) 
310-{ 
311- int signo = (int) pthread_arg; 
312- os_context_t fake_context; 
313- siginfo_t fake_info; 
314-#ifdef LISP_FEATURE_PPC 
315- mcontext_t uc_regs; 
316-#endif 
317- 
318- memset(&fake_info, 0, sizeof(fake_info)); 
319- memset(&fake_context, 0, sizeof(fake_context)); 
320-#ifdef LISP_FEATURE_PPC 
321- memset(&uc_regs, 0, sizeof(uc_regs)); 
322- fake_context.uc_mcontext.uc_regs = &uc_regs; 
323-#endif 
324- 
325- *os_context_pc_addr(&fake_context) = &signal_thread_trampoline; 
326-#ifdef ARCH_HAS_STACK_POINTER /* aka x86(-64) */ 
327- *os_context_sp_addr(&fake_context) = __builtin_frame_address(0); 
328-#endif 
329- 
330- signal_handler_callback(interrupt_handlers[signo].lisp, 
331- signo, &fake_info, &fake_context); 
332- return 0; 
333-} 
334- 
335-static void 
336-sigprof_handler_trampoline(int signal, siginfo_t *info, void *void_context) 
337-{ 
338- SAVE_ERRNO(signal,context,void_context); 
339- struct thread *self = arch_os_get_current_thread(); 
340- 
341- /* alloc() is not re-entrant and still uses pseudo atomic (even though 
342- * inline allocation does not). In this case, give up. */ 
343- if (get_pseudo_atomic_atomic(self)) 
344- goto cleanup; 
345- 
346- struct alloc_region tmp = self->alloc_region; 
347- self->alloc_region = self->sprof_alloc_region; 
348- self->sprof_alloc_region = tmp; 
349- 
350- interrupt_handle_now_handler(signal, info, void_context); 
351- 
352- /* And we're back. We know that the SIGPROF handler never unwinds 
353- * non-locally, and can simply swap things back: */ 
354- 
355- tmp = self->alloc_region; 
356- self->alloc_region = self->sprof_alloc_region; 
357- self->sprof_alloc_region = tmp; 
358- 
359-cleanup: 
360- ; /* Dear C compiler, it's OK to have a label here. */ 
361- RESTORE_ERRNO; 
362-} 
363- 
364-static void 
365-spawn_signal_thread_handler(int signal, siginfo_t *info, void *void_context) 
366-{ 
367- SAVE_ERRNO(signal,context,void_context); 
368- 
369- pthread_attr_t attr; 
370- pthread_t th; 
371- 
372- if (pthread_attr_init(&attr)) 
373- goto lost; 
374- if (pthread_attr_setstacksize(&attr, thread_control_stack_size)) 
375- goto lost; 
376- if (pthread_create(&th, &attr, &signal_thread_trampoline, (void*) signal)) 
377- goto lost; 
378- if (pthread_attr_destroy(&attr)) 
379- goto lost; 
380- 
381- RESTORE_ERRNO; 
382- return; 
383- 
384-lost: 
385- lose("spawn_signal_thread_handler"); 
386-} 
387-#endif 
388- 
389 static void 
390 unblock_me_trampoline(int signal, siginfo_t *info, void *void_context) 
391 { 
392@@ -1946,8 +1863,7 @@ undoably_install_low_level_interrupt_handler (int signal, 
393  
394 /* This is called from Lisp. */ 
395 uword_t 
396-install_handler(int signal, void handler(int, siginfo_t*, os_context_t*), 
397- int synchronous) 
398+install_handler(int signal, void handler(int, siginfo_t*, os_context_t*)) 
399 { 
400 #ifndef LISP_FEATURE_WIN32 
401 struct sigaction sa; 
402@@ -1964,12 +1880,6 @@ install_handler(int signal, void handler(int, siginfo_t*, os_context_t*), 
403 if (ARE_SAME_HANDLER(handler, SIG_DFL) || 
404 ARE_SAME_HANDLER(handler, SIG_IGN)) 
405 sa.sa_sigaction = (void (*)(int, siginfo_t*, void*))handler; 
406-#ifdef LISP_FEATURE_SB_SAFEPOINT_STRICTLY 
407- else if (signal == SIGPROF) 
408- sa.sa_sigaction = sigprof_handler_trampoline; 
409- else if (!synchronous) 
410- sa.sa_sigaction = spawn_signal_thread_handler; 
411-#endif 
412 else if (sigismember(&deferrable_sigset, signal)) 
413 sa.sa_sigaction = maybe_now_maybe_later; 
414 else if (!sigaction_nodefer_works && 
415diff --git src/runtime/interrupt.h src/runtime/interrupt.h 
416index 07b4a2d..a27eb08 100644 
417--- src/runtime/interrupt.h 
418+++ src/runtime/interrupt.h 
419@@ -158,8 +158,7 @@ extern void undoably_install_low_level_interrupt_handler ( 
420 int signal, 
421 interrupt_handler_t handler); 
422 extern uword_t install_handler(int signal, 
423- interrupt_handler_t handler, 
424- int synchronous); 
425+ interrupt_handler_t handler); 
426  
427 extern union interrupt_handler interrupt_handlers[NSIG]; 
428  
429diff --git src/runtime/runtime.c src/runtime/runtime.c 
430index 49c007b..3bc18ee 100644 
431--- src/runtime/runtime.c 
432+++ src/runtime/runtime.c 
433@@ -95,7 +95,7 @@ void 
434 sigint_init(void) 
435 { 
436 SHOW("entering sigint_init()"); 
437- install_handler(SIGINT, sigint_handler, 1); 
438+ install_handler(SIGINT, sigint_handler); 
439 SHOW("leaving sigint_init()"); 
440 } 
441  
442diff --git src/runtime/safepoint.c src/runtime/safepoint.c 
443index 45af50e..a9e578c 100644 
444--- src/runtime/safepoint.c 
445+++ src/runtime/safepoint.c 
446@@ -966,26 +966,6 @@ handle_safepoint_violation(os_context_t *ctx, os_vm_address_t fault_address) 
447 } 
448 #endif /* LISP_FEATURE_WIN32 */ 
449  
450-#if defined(LISP_FEATURE_SB_SAFEPOINT_STRICTLY) && !defined(LISP_FEATURE_WIN32) 
451-void 
452-signal_handler_callback(lispobj run_handler, int signo, void *info, void *ctx) 
453-{ 
454- init_thread_data scribble; 
455- void *args[2]; 
456- args[0] = info; 
457- args[1] = ctx; 
458- 
459- attach_os_thread(&scribble); 
460- 
461- odxprint(misc, "callback from signal handler thread for: %d\n", signo); 
462- funcall3(StaticSymbolFunction(SIGNAL_HANDLER_CALLBACK), 
463- run_handler, make_fixnum(signo), alloc_sap(args)); 
464- 
465- detach_os_thread(&scribble); 
466- return; 
467-} 
468-#endif 
469- 
470 void 
471 callback_wrapper_trampoline( 
472 #if !(defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64)) 
473diff --git src/runtime/thread.c src/runtime/thread.c 
474index 46f8f7d..4d20d0f 100644 
475--- src/runtime/thread.c 
476+++ src/runtime/thread.c 
477@@ -401,9 +401,6 @@ undo_init_new_thread(struct thread *th, init_thread_data *scribble) 
478 #ifdef LISP_FEATURE_SB_SAFEPOINT 
479 block_blockable_signals(0, 0); 
480 gc_alloc_update_page_tables(BOXED_PAGE_FLAG, &th->alloc_region); 
481-#if defined(LISP_FEATURE_SB_SAFEPOINT_STRICTLY) && !defined(LISP_FEATURE_WIN32) 
482- gc_alloc_update_page_tables(BOXED_PAGE_FLAG, &th->sprof_alloc_region); 
483-#endif 
484 pop_gcing_safety(&scribble->safety); 
485 lock_ret = pthread_mutex_lock(&all_threads_lock); 
486 gc_assert(lock_ret == 0); 
487@@ -421,9 +418,6 @@ undo_init_new_thread(struct thread *th, init_thread_data *scribble) 
488 gc_assert(lock_ret == 0); 
489  
490 gc_alloc_update_page_tables(BOXED_PAGE_FLAG, &th->alloc_region); 
491-#if defined(LISP_FEATURE_SB_SAFEPOINT_STRICTLY) && !defined(LISP_FEATURE_WIN32) 
492- gc_alloc_update_page_tables(BOXED_PAGE_FLAG, &th->sprof_alloc_region); 
493-#endif 
494 unlink_thread(th); 
495 pthread_mutex_unlock(&all_threads_lock); 
496 gc_assert(lock_ret == 0); 
497@@ -706,9 +700,6 @@ create_thread_struct(lispobj initial_function) { 
498 #endif 
499 #ifdef LISP_FEATURE_GENCGC 
500 gc_set_region_empty(&th->alloc_region); 
501-# if defined(LISP_FEATURE_SB_SAFEPOINT_STRICTLY) && !defined(LISP_FEATURE_WIN32) 
502- gc_set_region_empty(&th->sprof_alloc_region); 
503-# endif 
504 #endif 
505 #ifdef LISP_FEATURE_SB_THREAD 
506 /* This parallels the same logic in globals.c for the 
507diff --git src/runtime/thread.h src/runtime/thread.h 
508index 1a004c0..8bde9ba 100644 
509--- src/runtime/thread.h 
510+++ src/runtime/thread.h 
511@@ -422,11 +422,6 @@ int check_pending_thruptions(os_context_t *ctx); 
512 void attach_os_thread(init_thread_data *); 
513 void detach_os_thread(init_thread_data *); 
514  
515-# if defined(LISP_FEATURE_SB_SAFEPOINT_STRICTLY) && !defined(LISP_FEATURE_WIN32) 
516- 
517-void signal_handler_callback(lispobj, int, void *, void *); 
518-# endif 
519- 
520 #endif 
521  
522 extern void create_initial_thread(lispobj); 
523diff --git tests/signals.impure.lisp tests/signals.impure.lisp 
524index c4f347e..716580c 100644 
525--- tests/signals.impure.lisp 
526+++ tests/signals.impure.lisp 
527@@ -70,15 +70,9 @@ 
528 :skipped-on :win32) 
529 (assert (eq :condition 
530 (handler-case 
531- (progn 
532- (sb-thread::kill-safely 
533- (sb-thread::thread-os-thread sb-thread::*current-thread*) 
534- sb-unix:sigint) 
535- #+sb-safepoint-strictly 
536- ;; In this case, the signals handler gets invoked 
537- ;; indirectly through an INTERRUPT-THREAD. Give it 
538- ;; enough time to hit. 
539- (sleep 1)) 
540+ (sb-thread::kill-safely 
541+ (sb-thread::thread-os-thread sb-thread::*current-thread*) 
542+ sb-unix:sigint) 
543 (sb-sys:interactive-interrupt () 
544 :condition))))) 
545  
546diff --git tests/test-util.lisp tests/test-util.lisp 
547index 20b2c54..1d44174 100644 
548--- tests/test-util.lisp 
549+++ tests/test-util.lisp 
550@@ -69,10 +69,6 @@ 
551 (setf ,threads (union (union *threads-to-kill* 
552 *threads-to-join*) 
553 ,threads)) 
554- #+(and sb-safepoint-strictly (not win32)) 
555- (dolist (thread (sb-thread:list-all-threads)) 
556- (when (typep thread 'sb-thread:signal-handling-thread) 
557- (ignore-errors (sb-thread:join-thread thread)))) 
558 (dolist (thread (sb-thread:list-all-threads)) 
559 (unless (or (not (sb-thread:thread-alive-p thread)) 
560 (eql thread sb-thread:*current-thread*)