--- a/test/Makefile Sat Feb 23 21:02:39 2013 +0100
+++ b/test/Makefile Sat Feb 23 21:13:30 2013 +0100
@@ -17,8 +17,8 @@
include $(SRCDIR)$(MACHINE_MAKEFILE)
-TESTS=test0 test0_1 test0_2 test1 test2 test3 test4 test5 test6 test7 test8 test8_5 test9 test10 test11 test15 test12 test13 test14 test16 test17 test18 test19 test21 test20 $(TEST64) test23 test24 test25
-TARGETS=hello libq.so libp.so libn.so libo.o libo.so circular-dep libl.so libk.so libj.so libi.so libh.so libg.so libf.so libe.so libd.so libb.so liba.so libefl.so $(LIB64) \
+TESTS=test0 test0_1 test0_2 test1 test2 test3 test4 test5 test6 test7 test8 test8_5 test9 test10 test11 test15 test12 test13 test14 test16 test17 test18 test19 test21 test20 $(TEST64) test23 test24 test25 test26
+TARGETS=hello libr.so libq.so libp.so libn.so libo.o libo.so circular-dep libl.so libk.so libj.so libi.so libh.so libg.so libf.so libe.so libd.so libb.so liba.so libefl.so $(LIB64) \
$(TESTS) $(addsuffix -ldso,$(TESTS))
all: $(TARGETS)
@@ -115,6 +115,7 @@
run-test12: TEST_PRE_COMMAND=rm libl.so
test24: LDFLAGS+=-lpthread
test25: LDFLAGS+=-lpthread
+test26: LDFLAGS+=-lpthread
clean:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/libr.c Sat Feb 23 21:13:30 2013 +0100
@@ -0,0 +1,1 @@
+__thread int g_b = 2;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/output/test25.ref Sat Feb 23 21:13:30 2013 +0100
@@ -0,0 +1,104 @@
+libtest25 constructor
+enter main
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+a=0
+leave main
+libtest25 destructor
--- a/test/test25.c Sat Feb 23 21:02:39 2013 +0100
+++ b/test/test25.c Sat Feb 23 21:13:30 2013 +0100
@@ -26,8 +26,6 @@
pthread_attr_init (&attr);
g_a = 2;
pthread_create (&th[i], &attr, thread, 0);
-
- printf ("main a=%d\n", g_a);
}
for (i = 0; i <sizeof(th)/sizeof(pthread_t); i++)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/test26.c Sat Feb 23 21:13:30 2013 +0100
@@ -0,0 +1,45 @@
+#include <dlfcn.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <semaphore.h>
+#include "test.h"
+LIB(test25)
+
+__thread int g_a = 0;
+
+static void *thread (void*ctx)
+{
+ void *h;
+ printf("a=%d\n", g_a);
+ h = dlopen("libr.so", RTLD_LAZY);
+ dlclose(h);
+ g_a = 10;
+ return 0;
+}
+
+int main (int argc, char *argv[])
+{
+ int i;
+ pthread_t th[100];
+ printf ("enter main\n");
+
+ for (i = 0; i <sizeof(th)/sizeof(pthread_t); i++)
+ {
+ pthread_attr_t attr;
+ pthread_attr_init (&attr);
+ g_a = 2;
+ pthread_create (&th[i], &attr, thread, 0);
+
+ printf ("main a=%d\n", g_a);
+ }
+
+ for (i = 0; i <sizeof(th)/sizeof(pthread_t); i++)
+ {
+ void *retval;
+ pthread_join(th[i], &retval);
+ }
+
+
+ printf ("leave main\n");
+ return 0;
+}