On 2014/9/5 0:13, Bernhard Reutner-Fischer wrote: > On 3 September 2014 08:55, Yang Yingliang <[email protected]> wrote: >> From: Yang Yingliang <[email protected]> >> >> I use uclibc in arch arm. The CFLAGS-pthread_once.c has been set >> to -DNOT_IN_libc -DIS_IN_libpthread in >> libpthread/nptl/sysdeps/unix/sysv/linux/arm/Makefile.arch. >> But it will be replaced by -fexceptions -fasynchronous-unwind-tables in >> libpthread/nptl/Makefile.in. >> >> If CFLAGS-pthread_once.c has no -DIS_IN_libpthread the testcase >> tst-once3 in test/nptl/ will be failed. The reason is pthread_once >> calls another pthread_cleanup_push() which is not under IS_IN_libpthread >> so that clear_once_control do not be called when the thread is canceled. >> So pthread_once will hang up when it's called second time. >> >> Other parts don't have this problem, because IS_IN_libpthread is defined by >> CFLAGS-nptl = -DNOT_IN_libc -DIS_IN_libpthread $(SSP_ALL_CFLAGS), >> CFLAGS-pthread = $(SSP_ALL_CFLAGS) -DNOT_IN_libc -DIS_IN_libpthread, >> CFLAGS-dir_linuxthreads := -DNOT_IN_libc -DIS_IN_libpthread and >> CFLAGS-dir_linuxthreads.old := -DNOT_IN_libc -DIS_IN_libpthread. > > These are defined but it seems to me they are not effective, no? > Please try the attached instead. The hunks in nptl/... should be moved to > Makerules, near objs: though, so it affects LT and LT.old, too. > > Comments? > Thanks,
I tried the attachment. The IS_IN_libpthread and NOT_IN_libc are defined twice when it's compiling the source files in nptl. One is defined by $(filter-out $(CFLAGS-OMIT-$(notdir $<)),$(CFLAGS)), the other is defined by $(filter-out $(CFLAGS-OMIT-$(notdir $<)),$(CFLAGS-$(notdir $(<D)))). Here $(CFLAGS-$(notdir $(<D))) is CFLAGS-nptl or CFLAGS-pthread. They are defined twice in LT and LT.old, too. Regards, Yang _______________________________________________ uClibc mailing list [email protected] http://lists.busybox.net/mailman/listinfo/uclibc
