Index: tests/.expect/linkoncedestructor.txt
===================================================================
--- tests/.expect/linkoncedestructor.txt	(revision 507fc974654efc19152e0b3edf2539a9bf5c720f)
+++ tests/.expect/linkoncedestructor.txt	(revision 507fc974654efc19152e0b3edf2539a9bf5c720f)
@@ -0,0 +1,1 @@
+Destructor called
Index: tests/Makefile.am
===================================================================
--- tests/Makefile.am	(revision 861414019543bd47a38ab676fd70c33c67f93f8e)
+++ tests/Makefile.am	(revision 507fc974654efc19152e0b3edf2539a9bf5c720f)
@@ -119,5 +119,5 @@
 .PHONY : concurrency list .validate .test_makeflags
 .INTERMEDIATE : .validate .validate.cfa .test_makeflags
-EXTRA_PROGRAMS = array-collections/boxed avl_test linkonce linking/mangling/anon .dummy_hack # build but do not install
+EXTRA_PROGRAMS = array-collections/boxed avl_test linkonce linkoncedestructor linking/mangling/anon .dummy_hack # build but do not install
 EXTRA_DIST = test.py \
 	pybin/__init__.py \
@@ -154,4 +154,5 @@
 avl_test_SOURCES = avltree/avl_test.cfa avltree/avl0.cfa avltree/avl1.cfa avltree/avl2.cfa avltree/avl3.cfa avltree/avl4.cfa avltree/avl-private.cfa
 linkonce_SOURCES = link-once/main.cfa link-once/partner.cfa
+linkoncedestructor_SOURCES = link-once-destructor/waitfor-destructor.cfa link-once-destructor/nodestructor.cfa
 linking_mangling_anon_SOURCES = linking/mangling/header.hfa linking/mangling/lib.cfa linking/mangling/main.cfa
 # automake doesn't know we still need C/CPP rules so pretend like we have a C program
Index: tests/link-once-destructor/nodestructor.cfa
===================================================================
--- tests/link-once-destructor/nodestructor.cfa	(revision 507fc974654efc19152e0b3edf2539a9bf5c720f)
+++ tests/link-once-destructor/nodestructor.cfa	(revision 507fc974654efc19152e0b3edf2539a9bf5c720f)
@@ -0,0 +1,8 @@
+#include "nodestructor.hfa"
+
+#include <fstream.hfa>
+
+void main(MyThread &t) {
+	waitfor(^?{} : t);
+	sout | "Destructor called";
+}
Index: tests/link-once-destructor/nodestructor.hfa
===================================================================
--- tests/link-once-destructor/nodestructor.hfa	(revision 507fc974654efc19152e0b3edf2539a9bf5c720f)
+++ tests/link-once-destructor/nodestructor.hfa	(revision 507fc974654efc19152e0b3edf2539a9bf5c720f)
@@ -0,0 +1,5 @@
+#include <thread.hfa>
+
+thread MyThread {};
+
+void main(MyThread &t); 
Index: tests/link-once-destructor/waitfor-destructor.cfa
===================================================================
--- tests/link-once-destructor/waitfor-destructor.cfa	(revision 507fc974654efc19152e0b3edf2539a9bf5c720f)
+++ tests/link-once-destructor/waitfor-destructor.cfa	(revision 507fc974654efc19152e0b3edf2539a9bf5c720f)
@@ -0,0 +1,8 @@
+#include "nodestructor.hfa"
+
+int main(int, char*[]) {
+	MyThread ahhh; // call destructor after
+
+	// waits for its own destructor to be called
+}
+
