Message ID | alpine.DEB.2.10.1411272041480.15307@digraph.polyomino.org.uk |
---|---|
State | New |
Headers | show |
On 11/27/2014 03:42 PM, Joseph Myers wrote: > Carlos reported failures in conform/ tests in environments where the > compiler used could only find headers in glibc's source and build > trees, not any previously installed headers > <https://sourceware.org/ml/libc-alpha/2014-09/msg00040.html>. > > This patch adds wrappers for the affected headers to include/, which > is the normal way to make headers visible when building or testing in > directories other than the one containing the header (I suppose these > headers weren't needed in any such directories except conform/, or > other build or test failures would have resulted). I believe the same > issue applies at least to regexp.h and re_comp.h - we don't currently > have conform/ expectations for those, but when such expectations are > added we'll also need to add header wrappers. > > The semaphore.h wrapper just includes nptl/semaphore.h - there's a > question about whether this is logically correct, given the > possibility of other thread library implementations. I suggested a > couple of possible alternative approaches in > <https://sourceware.org/ml/libc-alpha/2014-09/msg00046.html>. > > Tested for x86_64 (testsuite, and that installed stripped shared > libraries are unchanged by the patch). I did *not* test a > configuration such as that in which Carlos saw failure. > > 2014-11-27 Joseph Myers <joseph@codesourcery.com> > > * include/cpio.h: New file. > * include/fmtmsg.h: Likewise. > * include/semaphore.h: Likewise. This fixes the failures I see on Fedora 20. Now I have only 200+ linknamespace failures :-) Cheers, Carlos.
On Fri, 28 Nov 2014, Carlos O'Donell wrote:
> Now I have only 200+ linknamespace failures :-)
What are those failures (what error messages where)? At least on
x86_64/x86, all the non-XFAILed tests ought to be passing (though the same
include/ patch may be needed for them).
On 11/28/2014 06:52 PM, Joseph Myers wrote: > On Fri, 28 Nov 2014, Carlos O'Donell wrote: > >> Now I have only 200+ linknamespace failures :-) > > What are those failures (what error messages where)? At least on > x86_64/x86, all the non-XFAILed tests ought to be passing (though the same > include/ patch may be needed for them). As an example on 32-bit ARM: conform/ISO/assert.h/linknamespace.out: [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] __resp -> [libc.a(res_libc.o)] __res_iclose -> [libc.a(res_init.o)] fgets_unlocked [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] __resp -> [libc.a(res_libc.o)] __res_iclose -> [libc.a(res_init.o)] if_nametoindex -> [libc.a(if_index.o)] __netlink_close -> [libc.a(ifaddrs.o)] freeifaddrs [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] __resp -> [libc.a(res_libc.o)] __res_iclose -> [libc.a(res_init.o)] if_nametoindex -> [libc.a(if_index.o)] __netlink_close -> [libc.a(ifaddrs.o)] getifaddrs [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] __resp -> [libc.a(res_libc.o)] __res_iclose -> [libc.a(res_init.o)] if_nametoindex -> [libc.a(if_index.o)] if_freenameindex [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] __resp -> [libc.a(res_libc.o)] __res_iclose -> [libc.a(res_init.o)] if_nametoindex -> [libc.a(if_index.o)] if_indextoname [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] __resp -> [libc.a(res_libc.o)] __res_iclose -> [libc.a(res_init.o)] if_nametoindex -> [libc.a(if_index.o)] if_nameindex [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] __resp -> [libc.a(res_libc.o)] __res_iclose -> [libc.a(res_init.o)] if_nametoindex [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] __resp -> [libc.a(res_libc.o)] __res_iclose -> [libc.a(res_init.o)] __inet_aton -> [libc.a(inet_addr.o)] inet_addr [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] __resp -> [libc.a(res_libc.o)] __res_iclose -> [libc.a(res_init.o)] inet_makeaddr [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] __resp -> [libc.a(res_libc.o)] __res_iclose -> [libc.a(res_init.o)] inet_pton [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] mmap [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] mprotect [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] munmap [initial] __assert_fail -> [libc.a(assert.o)] _dl_pagesize -> [libc.a(dl-support.o)] _dl_nothread_init_static_tls -> [libc.a(dl-reloc.o)] _dl_runtime_profile -> [libc.a(dl-trampoline.o)] _dl_call_pltexit -> [libc.a(dl-runtime.o)] _dl_mcount -> [libc.a(dl-profile.o)] __profil -> [libc.a(profil.o)] profil_counter [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] pthread_cancel [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] pthread_cancel -> [libpthread.a(pthread_cancel.o)] pthread_create [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] pthread_getspecific [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] pthread_key_create [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] pthread_key_delete [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] pthread_mutex_lock [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] pthread_mutex_trylock [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] pthread_mutex_unlock [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] pthread_once [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] pthread_setspecific [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] pthread_mutex_lock -> [libpthread.a(pthread_mutex_lock.o)] __pthread_current_priority -> [libpthread.a(tpp.o)] sched_get_priority_max [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] pthread_mutex_lock -> [libpthread.a(pthread_mutex_lock.o)] __pthread_current_priority -> [libpthread.a(tpp.o)] sched_get_priority_min [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] __resp -> [libc.a(res_libc.o)] __res_iclose -> [libc.a(res_init.o)] __gethostname -> [libc.a(gethostname.o)] uname Cheers, Carlos.
On Fri, 28 Nov 2014, Carlos O'Donell wrote: > On 11/28/2014 06:52 PM, Joseph Myers wrote: > > On Fri, 28 Nov 2014, Carlos O'Donell wrote: > > > >> Now I have only 200+ linknamespace failures :-) > > > > What are those failures (what error messages where)? At least on > > x86_64/x86, all the non-XFAILed tests ought to be passing (though the same > > include/ patch may be needed for them). > > As an example on 32-bit ARM: > > conform/ISO/assert.h/linknamespace.out: > > [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] __resp -> [libc.a(res_libc.o)] __res_iclose -> [libc.a(res_init.o)] fgets_unlocked I hope the patch I just committed <https://sourceware.org/ml/libc-alpha/2014-11/msg00889.html> will fix many of these. (However, such symbols appear in many of the existing XFAILed cases that end up bringing in the resolver etc. - they reflect genuine architecture-independent namespace bugs, it's just the appearance in this particular case that's architecture-specific.) > [initial] __assert_fail -> [libc.a(assert.o)] _dl_pagesize -> [libc.a(dl-support.o)] _dl_nothread_init_static_tls -> [libc.a(dl-reloc.o)] _dl_runtime_profile -> [libc.a(dl-trampoline.o)] _dl_call_pltexit -> [libc.a(dl-runtime.o)] _dl_mcount -> [libc.a(dl-profile.o)] __profil -> [libc.a(profil.o)] profil_counter This looks like an ordinary architecture-specific bug, however. (On architectures where profil_counter is not static, i.e. ARM and SPARC, it should be a weak alias for __profil_counter.)
On 11/28/2014 08:53 PM, Joseph Myers wrote: > On Fri, 28 Nov 2014, Carlos O'Donell wrote: > >> On 11/28/2014 06:52 PM, Joseph Myers wrote: >>> On Fri, 28 Nov 2014, Carlos O'Donell wrote: >>> >>>> Now I have only 200+ linknamespace failures :-) >>> >>> What are those failures (what error messages where)? At least on >>> x86_64/x86, all the non-XFAILed tests ought to be passing (though the same >>> include/ patch may be needed for them). >> >> As an example on 32-bit ARM: >> >> conform/ISO/assert.h/linknamespace.out: >> >> [initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] __vfwprintf -> [libc.a(vfwprintf.o)] _IO_fwide -> [libc.a(iofwide.o)] __pointer_chk_guard_local -> [libc.a(libc-start.o)] __pthread_initialize_minimal -> [libpthread.a(nptl-init.o)] __nptl_setxid_error -> [libpthread.a(pthread_create.o)] __resp -> [libc.a(res_libc.o)] __res_iclose -> [libc.a(res_init.o)] fgets_unlocked > > I hope the patch I just committed > <https://sourceware.org/ml/libc-alpha/2014-11/msg00889.html> will fix many > of these. (However, such symbols appear in many of the existing XFAILed > cases that end up bringing in the resolver etc. - they reflect genuine > architecture-independent namespace bugs, it's just the appearance in this > particular case that's architecture-specific.) Thanks. I'm retesting with your patch. >> [initial] __assert_fail -> [libc.a(assert.o)] _dl_pagesize -> [libc.a(dl-support.o)] _dl_nothread_init_static_tls -> [libc.a(dl-reloc.o)] _dl_runtime_profile -> [libc.a(dl-trampoline.o)] _dl_call_pltexit -> [libc.a(dl-runtime.o)] _dl_mcount -> [libc.a(dl-profile.o)] __profil -> [libc.a(profil.o)] profil_counter > > This looks like an ordinary architecture-specific bug, however. (On > architectures where profil_counter is not static, i.e. ARM and SPARC, it > should be a weak alias for __profil_counter.) Agreed. Cheers, Carlos.
Ping. This patch <https://sourceware.org/ml/libc-alpha/2014-11/msg00859.html> is pending review. (Carlos said it fixed the problem he saw, but that's not a review. The main question for review is the correct approach for handling semaphore.h.)
Ping^2. This patch <https://sourceware.org/ml/libc-alpha/2014-11/msg00859.html> is still pending review. (Carlos said it fixed the problem he saw, but that's not a review. The main question for review is the correct approach for handling semaphore.h.)
I think moving semaphore.h to sysdeps/pthread/ is sound. The other wrappers are fine.
diff --git a/include/cpio.h b/include/cpio.h new file mode 100644 index 0000000..38e2ed1 --- /dev/null +++ b/include/cpio.h @@ -0,0 +1 @@ +#include <posix/cpio.h> diff --git a/include/fmtmsg.h b/include/fmtmsg.h new file mode 100644 index 0000000..6ac606d --- /dev/null +++ b/include/fmtmsg.h @@ -0,0 +1 @@ +#include <stdlib/fmtmsg.h> diff --git a/include/semaphore.h b/include/semaphore.h new file mode 100644 index 0000000..01c7ba1 --- /dev/null +++ b/include/semaphore.h @@ -0,0 +1 @@ +#include <nptl/semaphore.h>