This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Thu, Oct 30, 2003 at 12:04:22AM -0800, David Mosberger wrote: > Hi Jakub, > > >>>>> On Wed, 29 Oct 2003 08:44:36 +0100, Jakub Jelinek <jakub@redhat.com> said: > > Jakub> Yes, please post a forward ported complete tested patch (the last > Jakub> version of the patch I and Ulrich saw was incomplete (but lead to > Jakub> discovery of a linker bug)). > Jakub> NPTL is now in sources CVS, so things are way easier for diffing... > > OK, here is a preliminary patch. Some comments: > > - The "assert (ph->p_vaddr == GL(dl_sysinfo_dso)" check in elf/rtld.c > is too strict. On ia64, we have two LOAD segments, so the check > can't possibly succeed: > > $ readelf -l arch/ia64/kernel/gate.so |grep LOAD > LOAD 0x0000000000000000 0xa000000000010000 0xa000000000010000 > LOAD 0x0000000000000000 0xa000000000020000 0xa000000000020000 Can you readelf -Wl arch/ia64/kernel/gate.so |grep LOAD (or grep -A1 LOAD instead), or better yet readelf -Wa arch/ia64/kernel/gate.so ? I'd like to understand why you need the second LOAD segment, what stuff has it in etc. > The patch below simply #if's out the code, but perhaps a better > fix would be to check ph->p_vaddr only for the first LOAD segment? Yeah, that's doable, add some variable #ifndef NDEBUG, increment it for each PT_LOAD and use it in the assert. > - The changes to linuxthreads/{manager,pthread}.c are almost certainly > wrong, but I'm not sure I understand how you want things set up to > ensure that single-threaded apps use the new stub but linuxthread > apps use the old one. IMHO NEED_DL_SYSINFO should be defined in both NPTL and Linuxthread ia64/dl-sysdep.h, while USE_DL_SYSINFO only in NPTL. And sysdep.h should use sysinfo only if USE_DL_SYSINFO is defined. Then linuxthreads will work just fine (use break always, who cares) and NPTL will use VDSO. > - The libc-start.c change is also "wrong" but since DL_SYSDEP_OSCHECK() > may do syscalls, it is necessary to do __pthread_initialize_minimal() > first, as otherwise the minimal thread descriptor isn't setup. This is handled on IA-32 by providing DL_SYSINFO_DEFAULT (and defining USE_DL_SYSINFO). This means the few syscalls in DL_SYSDEP_OSCHECK will use the break insn and the rest will use VDSO if available. Jakub
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |