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

Reply via email to