Chris Metcalf wrote: > I seem to recall seeing some comment somewhere that static linking > didn't work with pthread programs in the NPTL branch. No, there were bugs in the past but all fixed. We use nptl branch for sh4 statically linked too... unless I did not push back these fix to the SVN nptl branch, it sould work fine as well. Let me find where/when I fixed this for sh.
Cheers, Carmelo Of course, I had > to go and debug a crash bug for a few hours first before I actually > remembered. :-) > > The problem I ended up looking at was that > __pthread_initialize_minimal() is called from __uClibc_init(), but since > the caller is being linked from libc.a after libpthread.a has been fully > processed, the function chosen is the one in libc.a, rather than the one > in libpthread, even though that one is listed earlier on the command > line. Is this the bug? Is there more to it? > > I'm going to make the (hacky?) change to have libpthread.a (static only) > include a copy of libc/misc/internals/__uClibc_main.o, which should mean > that when you link statically with -lpthread -lc, you'll get the pthread > __uClibc_main(), and therefore the pthread > __pthread_initialize_minimal(). But I suspect there may be more than > that that is broken. And clearly this doesn't help the case of losers > who do "-lc -lpthread", which is not that uncommon. > > ==== //tilera/main/tools/uclibc/libpthread/nptl/Makefile.in#1 - > /u/cmetcalf/p4/m3/tools/uclibc/libpthread/nptl/Makefile.in ==== > @@ -247,7 +247,7 @@ > libc-cancellation.c) > libpthread-nonshared-y += $(patsubst > %,$(PTHREAD_OUT)/%.oS,$(libpthread_static_SRC)) > > -libpthread-a-y := $(patsubst > $(PTHREAD_DIR)/%.c,$(PTHREAD_OUT)/%.o,$(libpthread_a_SRC)) > +libpthread-a-y := $(patsubst > $(PTHREAD_DIR)/%.c,$(PTHREAD_OUT)/%.o,$(libpthread_a_SRC)) > libc/misc/internals/__uClibc_main.o > libpthread-so-y := $(patsubst > $(PTHREAD_DIR)/%.c,$(PTHREAD_OUT)/%.oS,$(libpthread_so_SRC)) > libpthread-static-y += $(patsubst > $(PTHREAD_DIR)/%.c,$(PTHREAD_OUT)/%.o,$(libpthread_a_SRC) > $(libpthread_static_SRC)) > _______________________________________________ uClibc mailing list uClibc@uclibc.org http://busybox.net/cgi-bin/mailman/listinfo/uclibc